aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock9
-rw-r--r--README.md2
-rw-r--r--components/canvas/Cargo.toml2
-rw-r--r--components/canvas_traits/Cargo.toml2
-rw-r--r--components/layout_2020/Cargo.toml1
-rw-r--r--components/layout_2020/context.rs2
-rw-r--r--components/layout_2020/display_list.rs30
-rw-r--r--components/layout_2020/dom_traversal.rs34
-rw-r--r--components/layout_2020/flow/construct.rs14
-rw-r--r--components/layout_2020/flow/float.rs2
-rw-r--r--components/layout_2020/flow/inline.rs21
-rw-r--r--components/layout_2020/flow/mod.rs150
-rw-r--r--components/layout_2020/flow/root.rs18
-rw-r--r--components/layout_2020/formatting_contexts.rs5
-rw-r--r--components/layout_2020/fragments.rs9
-rw-r--r--components/layout_2020/geom.rs21
-rw-r--r--components/layout_2020/lib.rs16
-rw-r--r--components/layout_2020/positioned.rs2
-rw-r--r--components/layout_2020/replaced.rs68
-rw-r--r--components/layout_thread/dom_wrapper.rs22
-rw-r--r--components/layout_thread_2020/dom_wrapper.rs22
-rw-r--r--components/layout_thread_2020/lib.rs3
-rw-r--r--components/malloc_size_of/Cargo.toml2
-rw-r--r--components/script/Cargo.toml2
-rw-r--r--components/script/dom/element.rs8
-rwxr-xr-xcomponents/script/dom/htmlformelement.rs2
-rw-r--r--components/selectors/Cargo.toml2
-rw-r--r--components/selectors/matching.rs37
-rw-r--r--components/selectors/tree.rs14
-rw-r--r--components/servo_arc/lib.rs13
-rw-r--r--components/style/Cargo.toml11
-rw-r--r--components/style/animation.rs4
-rw-r--r--components/style/applicable_declarations.rs77
-rw-r--r--components/style/custom_properties.rs35
-rw-r--r--components/style/dom.rs5
-rw-r--r--components/style/dom_apis.rs6
-rw-r--r--components/style/gecko/media_queries.rs16
-rw-r--r--components/style/gecko/pseudo_element.rs6
-rwxr-xr-xcomponents/style/gecko/regen_atoms.py2
-rw-r--r--components/style/gecko/snapshot.rs10
-rw-r--r--components/style/gecko/snapshot_helpers.rs26
-rw-r--r--components/style/gecko/wrapper.rs49
-rw-r--r--components/style/gecko_string_cache/mod.rs50
-rw-r--r--components/style/invalidation/element/document_state.rs8
-rw-r--r--components/style/invalidation/element/element_wrapper.rs25
-rw-r--r--components/style/invalidation/element/invalidator.rs91
-rw-r--r--components/style/invalidation/element/state_and_attributes.rs7
-rw-r--r--components/style/matching.rs4
-rw-r--r--components/style/properties/cascade.rs50
-rw-r--r--components/style/properties/data.py12
-rw-r--r--components/style/properties/gecko.mako.rs22
-rw-r--r--components/style/properties/longhands/inherited_box.mako.rs4
-rw-r--r--components/style/properties/longhands/inherited_svg.mako.rs3
-rw-r--r--components/style/properties/longhands/position.mako.rs1
-rw-r--r--components/style/properties/longhands/ui.mako.rs3
-rw-r--r--components/style/properties/longhands/xul.mako.rs10
-rw-r--r--components/style/properties/properties.mako.rs46
-rw-r--r--components/style/properties/shorthands/box.mako.rs10
-rw-r--r--components/style/properties/shorthands/position.mako.rs104
-rw-r--r--components/style/rule_cache.rs4
-rw-r--r--components/style/rule_collector.rs148
-rw-r--r--components/style/rule_tree/mod.rs411
-rw-r--r--components/style/selector_map.rs14
-rw-r--r--components/style/servo/selector_parser.rs14
-rw-r--r--components/style/style_adjuster.rs57
-rw-r--r--components/style/stylesheets/stylesheet.rs4
-rw-r--r--components/style/stylesheets/supports_rule.rs8
-rw-r--r--components/style/stylist.rs21
-rw-r--r--components/style/values/animated/transform.rs42
-rw-r--r--components/style/values/generics/grid.rs76
-rw-r--r--components/style/values/generics/transform.rs55
-rw-r--r--components/style/values/specified/angle.rs24
-rw-r--r--components/style/values/specified/box.rs10
-rw-r--r--components/style/values/specified/calc.rs46
-rw-r--r--components/style/values/specified/color.rs57
-rw-r--r--components/style/values/specified/counters.rs56
-rw-r--r--components/style/values/specified/font.rs24
-rw-r--r--components/style/values/specified/grid.rs4
-rw-r--r--components/style/values/specified/image.rs39
-rw-r--r--components/style/values/specified/length.rs126
-rw-r--r--components/style/values/specified/mod.rs37
-rw-r--r--components/style/values/specified/motion.rs13
-rw-r--r--components/style/values/specified/percentage.rs28
-rw-r--r--components/style/values/specified/time.rs26
-rw-r--r--components/style/values/specified/transform.rs45
-rw-r--r--components/style_traits/Cargo.toml2
-rw-r--r--components/to_shmem/Cargo.toml2
-rw-r--r--etc/taskcluster/decision_task.py2
-rw-r--r--tests/unit/style/Cargo.toml2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/box-display/containing-block-007.xht.ini2
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini5
-rw-r--r--tests/wpt/metadata/MANIFEST.json3722
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini841
-rw-r--r--tests/wpt/metadata/css/CSS2/visufx/animation/visibility-interpolation.html.ini244
-rw-r--r--tests/wpt/metadata/css/css-align/animation/column-gap-interpolation.html.ini469
-rw-r--r--tests/wpt/metadata/css/css-align/animation/row-gap-interpolation.html.ini469
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-color-interpolation.html.ini397
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-image-interpolation.html.ini556
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-position-interpolation.html.ini148
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-position-origin-interpolation.html.ini211
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini286
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini286
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/background-size-interpolation.html.ini733
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini346
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini394
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini778
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini547
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini949
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini487
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini643
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini634
-rw-r--r--tests/wpt/metadata/css/css-color/animation/color-interpolation.html.ini265
-rw-r--r--tests/wpt/metadata/css/css-color/animation/opacity-interpolation.html.ini280
-rw-r--r--tests/wpt/metadata/css/css-flexbox/animation/flex-basis-interpolation.html.ini310
-rw-r--r--tests/wpt/metadata/css/css-flexbox/animation/flex-grow-interpolation.html.ini352
-rw-r--r--tests/wpt/metadata/css/css-flexbox/animation/flex-shrink-interpolation.html.ini364
-rw-r--r--tests/wpt/metadata/css/css-flexbox/animation/order-interpolation.html.ini427
-rw-r--r--tests/wpt/metadata/css/css-fonts/animations/font-size-adjust-interpolation.html.ini589
-rw-r--r--tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-001.html.ini355
-rw-r--r--tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-002.html.ini70
-rw-r--r--tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-003.html.ini70
-rw-r--r--tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-interpolation.html.ini865
-rw-r--r--tests/wpt/metadata/css/css-fonts/standard-font-family-19.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/standard-font-family-20.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini637
-rw-r--r--tests/wpt/metadata/css/css-text/animations/letter-spacing-interpolation.html.ini355
-rw-r--r--tests/wpt/metadata/css/css-text/animations/text-indent-interpolation.html.ini610
-rw-r--r--tests/wpt/metadata/css/css-text/animations/word-spacing-interpolation.html.ini355
-rw-r--r--tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-valid.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-valid.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-003.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-007.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-008.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-009.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-010.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-011.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-012.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-013.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-014.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-102.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-103.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-104.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-105.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-107.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-108.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-109.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-110.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-112.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-113.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-114.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-115.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-116.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-117.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-118.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-119.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-120.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-121.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-122.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-123.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-124.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-125.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-126.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-127.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-128.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-boundary/word-boundary-129.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/list-interpolation.html.ini220
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/matrix-interpolation.html.ini13
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/perspective-origin-interpolation.html.ini322
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini880
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini874
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini1081
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini553
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini439
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini781
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini901
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini235
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini466
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini1000
-rw-r--r--tests/wpt/metadata/css/css-transforms/parsing/scale-parsing-valid.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini352
-rw-r--r--tests/wpt/metadata/css/css-transitions/animations/vertical-align-interpolation.html.ini349
-rw-r--r--tests/wpt/metadata/css/css-transitions/animations/z-index-interpolation.html.ini421
-rw-r--r--tests/wpt/metadata/css/css-ui/animation/caret-color-interpolation.html.ini529
-rw-r--r--tests/wpt/metadata/css/css-ui/animation/outline-color-interpolation.html.ini265
-rw-r--r--tests/wpt/metadata/css/css-ui/animation/outline-offset-interpolation.html.ini295
-rw-r--r--tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini361
-rw-r--r--tests/wpt/metadata/css/css-values/animations/calc-interpolation.html.ini298
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-001.html.ini781
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-002.html.ini205
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-003.html.ini565
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-004.html.ini601
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-001.html.ini358
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-002.html.ini355
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-003.html.ini655
-rw-r--r--tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-004.html.ini445
-rw-r--r--tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini60
-rw-r--r--tests/wpt/metadata/fetch/api/response/response-consume.html.ini9
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini14
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/metadata/navigation.https.sub.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/metadata/navigation.tentative.https.sub.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html.ini5
-rw-r--r--tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html.ini5
-rw-r--r--tests/wpt/metadata/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html.ini5
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini10
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini)2
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/constraints/infinite_backtracking.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini2
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/html_content_in_foreign_context.html.ini4
-rw-r--r--tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini2
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini4
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini1
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/MANIFEST.json2
-rw-r--r--tests/wpt/mozilla/tests/mozilla/FileAPI/resource/file-submission.py2
-rw-r--r--tests/wpt/web-platform-tests/.azure-pipelines.yml9
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/manifest.yml2
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml411
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept_ch.tentative.https.html22
-rw-r--r--tests/wpt/web-platform-tests/client-hints/http_equiv_accept_ch.tentative.https.html17
-rw-r--r--tests/wpt/web-platform-tests/compression/decompression-corrupt-input.tentative.any.js (renamed from tests/wpt/web-platform-tests/compression/decompression-corrupt-input.any.js)0
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/messages.json2
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr-ref.html12
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr.html17
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions.html12
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/image-with-dpr-header.html (renamed from tests/wpt/web-platform-tests/client-hints/image-with-dpr-header.html)0
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/resources/background.pngbin0 -> 86 bytes
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/resources/dpr.py (renamed from tests/wpt/web-platform-tests/client-hints/resources/dpr.py)0
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/resources/square.pngbin0 -> 18299 bytes
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr-ref.html29
-rw-r--r--tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr.html27
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js28
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js70
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js47
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStore_subscriptions_empty.tentative.https.window.js13
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/resources/always_changing_sw.sub.js6
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.js108
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html23
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.js62
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html22
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.js32
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html21
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html22
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html21
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js24
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html44
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.js (renamed from tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.js)37
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.js70
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.js87
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.js (renamed from tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.js)42
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.js41
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-image-interpolation.html99
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/fieldset-001-ref.html55
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/fieldset-001.html46
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/tall-break-inside-avoid-at-start.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/animations/display-interpolation.html47
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17-notref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18-notref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19-notref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20-notref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/standard-font-family.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/animations/list-style-image-interpolation.html147
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/resources/blue-20.pngbin0 -> 126 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/resources/green-20.pngbin0 -> 137 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/resources/stripes-20.pngbin0 -> 156 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/animations/mask-image-interpolation.html180
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/resources/blue-20.pngbin0 -> 126 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/resources/green-20.pngbin0 -> 137 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-masking/resources/stripes-20.pngbin0 -> 156 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/equal-gap-and-rule.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker-ref.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html55
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html66
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target.html118
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target.html65
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html92
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container.html (renamed from tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-caputring-add-scroll-container.html)12
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html56
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025.html57
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html44
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html80
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html87
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/resources/dice.pngbin58618 -> 0 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-overflow-001.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-overflow-001-ref.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-computed.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-valid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-computed.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-valid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-001-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-002-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-004-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-007-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-008-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-009-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-010-ref.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-011-ref.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-012-ref.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-013-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-014-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-101-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-102-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-103-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-104-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-105-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-106-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-107-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-108-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-a-ref.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-b-ref.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-a-ref.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-b-ref.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-111-ref.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-112-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-113-ref.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-a-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-b-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-115-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-116-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-117-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-119-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-120-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-121-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-122-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-123-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-124-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-125-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-126-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-127-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-128-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-129-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-001.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-002.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-003.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-004.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-005.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-006.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-007.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-008.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-009.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-010.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-011.html55
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-012.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-013.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-014.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-015-manual.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-101.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-102.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-103.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-104.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-105.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-106.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-107.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-108.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-109.html46
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-110.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-111.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-112.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-113.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-114.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-115.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-116.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-117.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-118.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-119.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-120.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-121.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-122.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-123.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-124.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-125.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-126.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-127.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-128.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-129.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/external-styles/support/svg-external-styles.css8
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/external-styles/svg-external-styles-012.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-001.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/animations/calc-interpolation.html97
-rw-r--r--tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js10
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/reftests.md35
-rw-r--r--tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html32
-rw-r--r--tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/document-policy/echo-policy.py28
-rw-r--r--tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html54
-rw-r--r--tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/document-policy/required-policy/no-document-policy.html44
-rw-r--r--tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy-nested.html65
-rw-r--r--tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html65
-rw-r--r--tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-dispatch-redispatch.html140
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js2
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/idlharness.any.js1
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html35
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/navigation.tentative.https.sub.html (renamed from tests/wpt/web-platform-tests/fetch/metadata/navigation.https.sub.html)0
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js4
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py15
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js49
-rw-r--r--tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback.html39
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/constraints/infinite_backtracking.html12
-rw-r--r--tests/wpt/web-platform-tests/html/syntax/parsing/html_content_in_foreign_context.html29
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/reftest/reftest_wait_TestRendered.html14
-rw-r--r--tests/wpt/web-platform-tests/interfaces/cookie-store.idl26
-rw-r--r--tests/wpt/web-platform-tests/interfaces/resize-observer.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/wasm-js-api.idl15
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl4
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-scroll.html62
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-tap.html60
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/resources/util.js3
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist1
-rw-r--r--tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.mp4bin0 -> 17425 bytes
-rw-r--r--tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.webmbin0 -> 11901 bytes
-rw-r--r--tests/wpt/web-platform-tests/portals/portals-adopt-predecessor.html10
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/portals-adopt-predecessor-portal.html9
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html225
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-worker-timing.js39
-rw-r--r--tests/wpt/web-platform-tests/storage-access-api/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/svg/META.yml1
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/marker-009-ref.svg19
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/marker-009.svg23
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/marker-orient-001-ref.svg31
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/marker-orient-001.svg16
-rw-r--r--tests/wpt/web-platform-tests/svg/render/foreignObject-in-non-rendered-getComputedStyle.html20
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/azure/install_safari.yml2
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb33
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/commands.json24
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/run_tc.py109
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/README.md235
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/__init__.py (renamed from tests/wpt/web-platform-tests/tools/taskcluster/__init__.py)0
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/decision.py323
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/download.py (renamed from tests/wpt/web-platform-tests/tools/ci/tcdownload.py)1
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/taskgraph.py170
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml370
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/testdata/master_push_event.json (renamed from tests/wpt/web-platform-tests/tools/taskcluster/testdata/master_push_event.json)0
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event.json (renamed from tests/wpt/web-platform-tests/tools/taskcluster/testdata/pr_event.json)0
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event_tests_affected.json505
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/tests/test_decision.py54
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/tests/test_taskgraph.py146
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py152
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tests/test_run_tc.py33
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/frontend.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/docker/seccomp.json798
-rw-r--r--tests/wpt/web-platform-tests/tools/lint/lint.py12
-rw-r--r--tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py30
-rw-r--r--tests/wpt/web-platform-tests/tools/taskcluster/commands.json4
-rw-r--r--tests/wpt/web-platform-tests/tools/taskcluster/verify.py37
-rw-r--r--tests/wpt/web-platform-tests/tools/tox.ini5
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py107
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/install.py17
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/paths1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py66
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py65
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py44
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py57
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py59
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js19
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js48
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py18
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html41
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times.html68
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html62
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html62
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html61
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html (renamed from tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html)62
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html20
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js5
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py1
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html38
-rw-r--r--tests/wpt/web-platform-tests/xhr/idlharness.any.js1
635 files changed, 43464 insertions, 6640 deletions
diff --git a/Cargo.lock b/Cargo.lock
index f6daa13a696..34f3cf8fe39 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2723,6 +2723,7 @@ dependencies = [
"ipc-channel",
"libc",
"msg",
+ "net_traits",
"range",
"rayon",
"rayon_croissant",
@@ -5333,7 +5334,7 @@ name = "style"
version = "0.0.1"
dependencies = [
"app_units",
- "arrayvec 0.4.6",
+ "arrayvec 0.5.1",
"atomic_refcell",
"bindgen",
"bitflags",
@@ -5941,11 +5942,11 @@ checksum = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d"
[[package]]
name = "uluru"
-version = "0.3.0"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2606e9192f308ddc4f0b3c5d1bf3400e28a70fff956e9d9f46d23b094746d9f"
+checksum = "6d7b39d0c32eba57d52d334e4bdd150df6e755264eefaa1ae2e7cd125f35e1ca"
dependencies = [
- "arrayvec 0.4.6",
+ "arrayvec 0.5.1",
]
[[package]]
diff --git a/README.md b/README.md
index e3815de4799..98687f13fe8 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,7 @@ Xcode version 10.2 or above is recommended.
``` sh
brew bundle install --file=etc/taskcluster/macos/Brewfile
-brew bundle install --file=etc/taskcluster/macos/Brewfile-gstreamer
+brew bundle install --file=etc/taskcluster/macos/Brewfile-build
pip install virtualenv
```
diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml
index 6c52fa07d1d..daa07fab430 100644
--- a/components/canvas/Cargo.toml
+++ b/components/canvas/Cargo.toml
@@ -22,7 +22,7 @@ bitflags = "1.0"
byteorder = "1"
canvas_traits = {path = "../canvas_traits"}
crossbeam-channel = "0.3"
-cssparser = "0.27.1"
+cssparser = "0.27"
embedder_traits = {path = "../embedder_traits"}
euclid = "0.20"
fnv = "1.0"
diff --git a/components/canvas_traits/Cargo.toml b/components/canvas_traits/Cargo.toml
index b4dae5e2017..7b412d993fa 100644
--- a/components/canvas_traits/Cargo.toml
+++ b/components/canvas_traits/Cargo.toml
@@ -14,7 +14,7 @@ path = "lib.rs"
webgl_backtrace = []
[dependencies]
-cssparser = "0.27.1"
+cssparser = "0.27"
euclid = "0.20"
ipc-channel = "0.12"
lazy_static = "1"
diff --git a/components/layout_2020/Cargo.toml b/components/layout_2020/Cargo.toml
index 7bfe7cbea16..5a28da8d9ee 100644
--- a/components/layout_2020/Cargo.toml
+++ b/components/layout_2020/Cargo.toml
@@ -22,6 +22,7 @@ gfx_traits = {path = "../gfx_traits"}
ipc-channel = "0.12"
libc = "0.2"
msg = {path = "../msg"}
+net_traits = {path = "../net_traits"}
range = {path = "../range"}
rayon = "1"
rayon_croissant = "0.1.1"
diff --git a/components/layout_2020/context.rs b/components/layout_2020/context.rs
index 5bde114ca57..42106a76387 100644
--- a/components/layout_2020/context.rs
+++ b/components/layout_2020/context.rs
@@ -5,7 +5,7 @@
use gfx::font_cache_thread::FontCacheThread;
use gfx::font_context::FontContext;
use msg::constellation_msg::PipelineId;
-use std::cell::{RefCell, RefMut};
+use std::cell::RefCell;
use std::sync::Mutex;
use style::context::SharedStyleContext;
diff --git a/components/layout_2020/display_list.rs b/components/layout_2020/display_list.rs
index 5dc5ecb96ad..f578988f9c0 100644
--- a/components/layout_2020/display_list.rs
+++ b/components/layout_2020/display_list.rs
@@ -5,10 +5,8 @@
use crate::fragments::{BoxFragment, Fragment};
use crate::geom::physical::{Rect, Vec2};
use crate::style_ext::ComputedValuesExt;
-use app_units::Au;
use euclid::{Point2D, SideOffsets2D};
use gfx::text::glyph::GlyphStore;
-use servo_geometry::MaxRect;
use std::sync::Arc;
use style::values::computed::{BorderStyle, Length};
use webrender_api::{self as wr, units, CommonItemProperties, PrimitiveFlags};
@@ -78,6 +76,34 @@ impl Fragment {
.wr
.push_text(&common, rect.into(), &glyphs, t.font_key, rgba(color), None);
},
+ Fragment::Image(i) => {
+ use style::computed_values::image_rendering::T as ImageRendering;
+ is_contentful.0 = true;
+ let rect = i
+ .content_rect
+ .to_physical(i.style.writing_mode(), containing_block)
+ .translate(&containing_block.top_left);
+ let common = CommonItemProperties {
+ clip_rect: rect.clone().into(),
+ clip_id: wr::ClipId::root(builder.pipeline_id),
+ spatial_id: wr::SpatialId::root_scroll_node(builder.pipeline_id),
+ hit_info: None,
+ // TODO(gw): Make use of the WR backface visibility functionality.
+ flags: PrimitiveFlags::default(),
+ };
+ builder.wr.push_image(
+ &common,
+ rect.into(),
+ match i.style.get_inherited_box().image_rendering {
+ ImageRendering::Auto => wr::ImageRendering::Auto,
+ ImageRendering::CrispEdges => wr::ImageRendering::CrispEdges,
+ ImageRendering::Pixelated => wr::ImageRendering::Pixelated,
+ },
+ wr::AlphaType::PremultipliedAlpha,
+ i.image_key,
+ wr::ColorF::WHITE,
+ );
+ },
}
}
}
diff --git a/components/layout_2020/dom_traversal.rs b/components/layout_2020/dom_traversal.rs
index 732dc1afdc9..1a3ec7f1c98 100644
--- a/components/layout_2020/dom_traversal.rs
+++ b/components/layout_2020/dom_traversal.rs
@@ -3,18 +3,21 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::element_data::{LayoutBox, LayoutDataForElement};
+use crate::geom::physical::Vec2;
use crate::replaced::ReplacedContent;
use crate::style_ext::{Display, DisplayGeneratingBox, DisplayInside, DisplayOutside};
use crate::wrapper::GetRawData;
use atomic_refcell::{AtomicRefCell, AtomicRefMut};
+use net_traits::image::base::Image as NetImage;
use script_layout_interface::wrapper_traits::{LayoutNode, ThreadSafeLayoutNode};
use servo_arc::Arc as ServoArc;
-use std::convert::TryInto;
use std::marker::PhantomData as marker;
+use std::sync::Arc;
use style::context::SharedStyleContext;
use style::dom::TNode;
use style::properties::ComputedValues;
use style::selector_parser::PseudoElement;
+use style::values::computed::Length;
#[derive(Clone, Copy)]
pub enum WhichPseudoElement {
@@ -90,11 +93,12 @@ fn traverse_element<'dom, Node>(
) where
Node: NodeExt<'dom>,
{
+ let replaced = ReplacedContent::for_element(element);
let style = element.style(context);
match Display::from(style.get_box().display) {
Display::None => element.unset_boxes_in_subtree(),
Display::Contents => {
- if ReplacedContent::for_element(element, context).is_some() {
+ if replaced.is_some() {
// `display: content` on a replaced element computes to `display: none`
// <https://drafts.csswg.org/css-display-3/#valdef-display-contents>
element.unset_boxes_in_subtree()
@@ -107,10 +111,7 @@ fn traverse_element<'dom, Node>(
handler.handle_element(
&style,
display,
- match ReplacedContent::for_element(element, context) {
- Some(replaced) => Contents::Replaced(replaced),
- None => Contents::OfElement(element),
- },
+ replaced.map_or(Contents::OfElement(element), Contents::Replaced),
element.element_box_slot(),
);
},
@@ -287,6 +288,7 @@ impl Drop for BoxSlot<'_> {
pub(crate) trait NodeExt<'dom>: 'dom + Copy + LayoutNode + Send + Sync {
fn is_element(self) -> bool;
fn as_text(self) -> Option<String>;
+ fn as_image(self) -> Option<(Option<Arc<NetImage>>, Vec2<Length>)>;
fn first_child(self) -> Option<Self>;
fn next_sibling(self) -> Option<Self>;
fn parent_node(self) -> Option<Self>;
@@ -315,6 +317,26 @@ where
}
}
+ fn as_image(self) -> Option<(Option<Arc<NetImage>>, Vec2<Length>)> {
+ let node = self.to_threadsafe();
+ let (resource, metadata) = node.image_data()?;
+ let (width, height) = resource
+ .as_ref()
+ .map(|image| (image.width, image.height))
+ .or_else(|| metadata.map(|metadata| (metadata.width, metadata.height)))
+ .unwrap_or((0, 0));
+ let (mut width, mut height) = (width as f32, height as f32);
+ if let Some(density) = node.image_density().filter(|density| *density != 1.) {
+ width = (width as f64 / density) as f32;
+ height = (height as f64 / density) as f32;
+ }
+ let size = Vec2 {
+ x: Length::new(width),
+ y: Length::new(height),
+ };
+ Some((resource, size))
+ }
+
fn first_child(self) -> Option<Self> {
TNode::first_child(&self)
}
diff --git a/components/layout_2020/flow/construct.rs b/components/layout_2020/flow/construct.rs
index 57d7bf9dd31..e7599bc843a 100644
--- a/components/layout_2020/flow/construct.rs
+++ b/components/layout_2020/flow/construct.rs
@@ -325,10 +325,14 @@ where
contents: Contents<Node>,
) -> Arc<InlineLevelBox> {
let box_ = match contents.try_into() {
- Err(replaced) => Arc::new(InlineLevelBox::Atomic {
- style: style.clone(),
- contents: replaced,
- }),
+ Err(replaced) => Arc::new(InlineLevelBox::Atomic(
+ IndependentFormattingContext::construct(
+ self.context,
+ style.clone(),
+ display_inside,
+ <Contents<Node>>::Replaced(replaced),
+ ),
+ )),
Ok(non_replaced) => match display_inside {
DisplayInside::Flow |
// TODO: Properly implement display: inline-block.
@@ -449,7 +453,7 @@ where
let box_ = Arc::new(InlineLevelBox::OutOfFlowAbsolutelyPositionedBox(
AbsolutelyPositionedBox {
contents: IndependentFormattingContext::construct(
- unimplemented!(),
+ self.context,
style,
display_inside,
contents,
diff --git a/components/layout_2020/flow/float.rs b/components/layout_2020/flow/float.rs
index 4698e9d2f1c..f9be366bc97 100644
--- a/components/layout_2020/flow/float.rs
+++ b/components/layout_2020/flow/float.rs
@@ -3,8 +3,6 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::formatting_contexts::IndependentFormattingContext;
-use servo_arc::Arc;
-use style::properties::ComputedValues;
#[derive(Debug)]
pub(crate) struct FloatBox {
diff --git a/components/layout_2020/flow/inline.rs b/components/layout_2020/flow/inline.rs
index 5a48ac9a2ee..33d1d8a0ed9 100644
--- a/components/layout_2020/flow/inline.rs
+++ b/components/layout_2020/flow/inline.rs
@@ -5,12 +5,11 @@
use crate::context::LayoutContext;
use crate::flow::float::FloatBox;
use crate::flow::FlowLayout;
-use crate::fragments::{
- AnonymousFragment, BoxFragment, CollapsedBlockMargins, Fragment, TextFragment,
-};
+use crate::formatting_contexts::IndependentFormattingContext;
+use crate::fragments::CollapsedBlockMargins;
+use crate::fragments::{AnonymousFragment, BoxFragment, Fragment, TextFragment};
use crate::geom::flow_relative::{Rect, Sides, Vec2};
use crate::positioned::{AbsolutelyPositionedBox, AbsolutelyPositionedFragment};
-use crate::replaced::ReplacedContent;
use crate::style_ext::{ComputedValuesExt, Display, DisplayGeneratingBox, DisplayOutside};
use crate::{relative_adjustement, ContainingBlock};
use servo_arc::Arc;
@@ -29,11 +28,7 @@ pub(crate) enum InlineLevelBox {
TextRun(TextRun),
OutOfFlowAbsolutelyPositionedBox(AbsolutelyPositionedBox),
OutOfFlowFloatBox(FloatBox),
- Atomic {
- style: Arc<ComputedValues>,
- // FIXME: this should be IndependentFormattingContext:
- contents: ReplacedContent,
- },
+ Atomic(IndependentFormattingContext),
}
#[derive(Debug)]
@@ -112,9 +107,9 @@ impl InlineFormattingContext {
ifc.partial_inline_boxes_stack.push(partial)
},
InlineLevelBox::TextRun(run) => run.layout(layout_context, &mut ifc),
- InlineLevelBox::Atomic { style: _, contents } => {
- // FIXME
- match *contents {}
+ InlineLevelBox::Atomic(_independent) => {
+ // TODO
+ continue;
},
InlineLevelBox::OutOfFlowAbsolutelyPositionedBox(box_) => {
let initial_start_corner =
@@ -289,7 +284,7 @@ impl<'box_tree> PartialInlineBoxFragment<'box_tree> {
impl TextRun {
fn layout(&self, layout_context: &LayoutContext, ifc: &mut InlineFormattingContextState) {
- use gfx::font::{ShapingFlags, ShapingOptions};
+ use gfx::font::ShapingFlags;
use style::computed_values::text_rendering::T as TextRendering;
use style::computed_values::word_break::T as WordBreak;
use style::values::generics::text::LineHeight;
diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs
index 9281c135760..8bda0c69d24 100644
--- a/components/layout_2020/flow/mod.rs
+++ b/components/layout_2020/flow/mod.rs
@@ -8,13 +8,12 @@ use crate::context::LayoutContext;
use crate::flow::float::{FloatBox, FloatContext};
use crate::flow::inline::InlineFormattingContext;
use crate::formatting_contexts::{IndependentFormattingContext, IndependentLayout};
-use crate::fragments::{
- AnonymousFragment, BoxFragment, CollapsedBlockMargins, CollapsedMargin, Fragment,
-};
+use crate::fragments::{AnonymousFragment, BoxFragment, Fragment};
+use crate::fragments::{CollapsedBlockMargins, CollapsedMargin};
use crate::geom::flow_relative::{Rect, Sides, Vec2};
-use crate::positioned::{
- adjust_static_positions, AbsolutelyPositionedBox, AbsolutelyPositionedFragment,
-};
+use crate::positioned::adjust_static_positions;
+use crate::positioned::{AbsolutelyPositionedBox, AbsolutelyPositionedFragment};
+use crate::replaced::ReplacedContent;
use crate::style_ext::{ComputedValuesExt, Position};
use crate::{relative_adjustement, ContainingBlock};
use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator};
@@ -295,10 +294,11 @@ impl BlockLevelBox {
))
},
BlockLevelBox::Independent(contents) => match contents.as_replaced() {
- Ok(replaced) => {
- // FIXME
- match *replaced {}
- },
+ Ok(replaced) => Fragment::Box(layout_in_flow_replaced_block_level(
+ containing_block,
+ &contents.style,
+ replaced,
+ )),
Err(non_replaced) => Fragment::Box(layout_in_flow_non_replaced_block_level(
layout_context,
containing_block,
@@ -360,27 +360,15 @@ fn layout_in_flow_non_replaced_block_level<'a>(
let box_size = style.box_size();
let inline_size = box_size.inline.percentage_relative_to(cbis);
if let LengthOrAuto::LengthPercentage(is) = inline_size {
- let inline_margins = cbis - is - pb.inline_sum();
- match (
- &mut computed_margin.inline_start,
- &mut computed_margin.inline_end,
- ) {
- (s @ &mut LengthOrAuto::Auto, e @ &mut LengthOrAuto::Auto) => {
- *s = LengthOrAuto::LengthPercentage(inline_margins / 2.);
- *e = LengthOrAuto::LengthPercentage(inline_margins / 2.);
- },
- (s @ &mut LengthOrAuto::Auto, _) => {
- *s = LengthOrAuto::LengthPercentage(inline_margins);
- },
- (_, e @ &mut LengthOrAuto::Auto) => {
- *e = LengthOrAuto::LengthPercentage(inline_margins);
- },
- (_, e @ _) => {
- // Either the inline-end margin is auto,
- // or we’re over-constrained and we do as if it were.
- *e = LengthOrAuto::LengthPercentage(inline_margins);
- },
- }
+ let (margin_inline_start, margin_inline_end) = solve_inline_margins_for_in_flow_block_level(
+ containing_block,
+ pb.inline_sum(),
+ computed_margin.inline_start,
+ computed_margin.inline_end,
+ is,
+ );
+ computed_margin.inline_start = LengthOrAuto::LengthPercentage(margin_inline_start);
+ computed_margin.inline_end = LengthOrAuto::LengthPercentage(margin_inline_end);
}
let margin = computed_margin.auto_is(Length::zero);
let mut block_margins_collapsed_with_children = CollapsedBlockMargins::from_margin(&margin);
@@ -479,3 +467,103 @@ fn layout_in_flow_non_replaced_block_level<'a>(
block_margins_collapsed_with_children,
}
}
+
+/// https://drafts.csswg.org/css2/visudet.html#block-replaced-width
+/// https://drafts.csswg.org/css2/visudet.html#inline-replaced-width
+/// https://drafts.csswg.org/css2/visudet.html#inline-replaced-height
+fn layout_in_flow_replaced_block_level<'a>(
+ containing_block: &ContainingBlock,
+ style: &Arc<ComputedValues>,
+ replaced: &ReplacedContent,
+) -> BoxFragment {
+ let cbis = containing_block.inline_size;
+ let padding = style.padding().percentages_relative_to(cbis);
+ let border = style.border_width();
+ let computed_margin = style.margin().percentages_relative_to(cbis);
+ let pb = &padding + &border;
+ let mode = style.writing_mode();
+ // FIXME(nox): We shouldn't pretend we always have a fully known intrinsic size.
+ let intrinsic_size = replaced.intrinsic_size.size_to_flow_relative(mode);
+ // FIXME(nox): This can divide by zero.
+ let intrinsic_ratio = intrinsic_size.inline.px() / intrinsic_size.block.px();
+ let box_size = style.box_size();
+ let inline_size = box_size.inline.percentage_relative_to(cbis);
+ let block_size = box_size
+ .block
+ .maybe_percentage_relative_to(containing_block.block_size.non_auto());
+ let (inline_size, block_size) = match (inline_size, block_size) {
+ (LengthOrAuto::LengthPercentage(inline), LengthOrAuto::LengthPercentage(block)) => {
+ (inline, block)
+ },
+ (LengthOrAuto::LengthPercentage(inline), LengthOrAuto::Auto) => {
+ (inline, inline / intrinsic_ratio)
+ },
+ (LengthOrAuto::Auto, LengthOrAuto::LengthPercentage(block)) => {
+ (block * intrinsic_ratio, block)
+ },
+ (LengthOrAuto::Auto, LengthOrAuto::Auto) => (intrinsic_size.inline, intrinsic_size.block),
+ };
+ let (margin_inline_start, margin_inline_end) = solve_inline_margins_for_in_flow_block_level(
+ containing_block,
+ pb.inline_sum(),
+ computed_margin.inline_start,
+ computed_margin.inline_end,
+ inline_size,
+ );
+ let margin = Sides {
+ inline_start: margin_inline_start,
+ inline_end: margin_inline_end,
+ block_start: computed_margin.block_start.auto_is(Length::zero),
+ block_end: computed_margin.block_end.auto_is(Length::zero),
+ };
+ let containing_block_for_children = ContainingBlock {
+ inline_size,
+ block_size: LengthOrAuto::LengthPercentage(block_size),
+ mode,
+ };
+ // https://drafts.csswg.org/css-writing-modes/#orthogonal-flows
+ assert_eq!(
+ containing_block.mode, containing_block_for_children.mode,
+ "Mixed writing modes are not supported yet"
+ );
+ let independent_layout = replaced.layout(style, &containing_block_for_children);
+ let relative_adjustement = relative_adjustement(
+ style,
+ inline_size,
+ LengthOrAuto::LengthPercentage(block_size),
+ );
+ let content_rect = Rect {
+ start_corner: Vec2 {
+ block: pb.block_start + relative_adjustement.block,
+ inline: pb.inline_start + relative_adjustement.inline + margin.inline_start,
+ },
+ size: Vec2 {
+ block: block_size,
+ inline: inline_size,
+ },
+ };
+ BoxFragment {
+ style: style.clone(),
+ children: independent_layout.fragments,
+ content_rect,
+ padding,
+ border,
+ block_margins_collapsed_with_children: CollapsedBlockMargins::from_margin(&margin),
+ margin,
+ }
+}
+
+fn solve_inline_margins_for_in_flow_block_level(
+ containing_block: &ContainingBlock,
+ padding_border_inline_sum: Length,
+ computed_margin_inline_start: LengthOrAuto,
+ computed_margin_inline_end: LengthOrAuto,
+ inline_size: Length,
+) -> (Length, Length) {
+ let inline_margins = containing_block.inline_size - padding_border_inline_sum - inline_size;
+ match (computed_margin_inline_start, computed_margin_inline_end) {
+ (LengthOrAuto::Auto, LengthOrAuto::Auto) => (inline_margins / 2., inline_margins / 2.),
+ (LengthOrAuto::Auto, LengthOrAuto::LengthPercentage(end)) => (inline_margins - end, end),
+ (LengthOrAuto::LengthPercentage(start), _) => (start, inline_margins - start),
+ }
+}
diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs
index 8df332b90d6..7c062f12f47 100644
--- a/components/layout_2020/flow/root.rs
+++ b/components/layout_2020/flow/root.rs
@@ -14,15 +14,12 @@ use crate::geom;
use crate::geom::flow_relative::Vec2;
use crate::positioned::AbsolutelyPositionedBox;
use crate::replaced::ReplacedContent;
-use crate::style_ext::{
- Direction, Display, DisplayGeneratingBox, DisplayInside, DisplayOutside, WritingMode,
-};
+use crate::style_ext::{Direction, Display, DisplayGeneratingBox, DisplayInside, WritingMode};
use crate::{ContainingBlock, DefiniteContainingBlock};
use rayon::iter::{IntoParallelRefIterator, ParallelExtend, ParallelIterator};
use script_layout_interface::wrapper_traits::LayoutNode;
use servo_arc::Arc;
use style::context::SharedStyleContext;
-use style::properties::ComputedValues;
use style::values::computed::{Length, LengthOrAuto};
use style::Zero;
use style_traits::CSSPixel;
@@ -48,7 +45,7 @@ fn construct_for_root_element<'dom>(
root_element: impl NodeExt<'dom>,
) -> (ContainsFloats, Vec<Arc<BlockLevelBox>>) {
let style = root_element.style(context);
- let replaced = ReplacedContent::for_element(root_element, context);
+ let replaced = ReplacedContent::for_element(root_element);
let box_style = style.get_box();
let display_inside = match Display::from(box_style.display) {
@@ -63,21 +60,13 @@ fn construct_for_root_element<'dom>(
Display::GeneratingBox(DisplayGeneratingBox::OutsideInside { inside, .. }) => inside,
};
- if let Some(replaced) = replaced {
- let _box = match replaced {};
- #[allow(unreachable_code)]
- {
- return (ContainsFloats::No, vec![Arc::new(_box)]);
- }
- }
-
let position = box_style.position;
let float = box_style.float;
let contents = IndependentFormattingContext::construct(
context,
style,
display_inside,
- Contents::OfElement(root_element),
+ replaced.map_or(Contents::OfElement(root_element), Contents::Replaced),
);
if position.is_absolutely_positioned() {
(
@@ -145,7 +134,6 @@ impl FragmentTreeRoot {
pub fn build_display_list(
&self,
builder: &mut crate::display_list::DisplayListBuilder,
- pipeline_id: msg::constellation_msg::PipelineId,
viewport_size: webrender_api::units::LayoutSize,
) -> IsContentful {
let containing_block = geom::physical::Rect {
diff --git a/components/layout_2020/formatting_contexts.rs b/components/layout_2020/formatting_contexts.rs
index 96294947720..0517f599852 100644
--- a/components/layout_2020/formatting_contexts.rs
+++ b/components/layout_2020/formatting_contexts.rs
@@ -6,10 +6,9 @@ use crate::context::LayoutContext;
use crate::dom_traversal::{Contents, NodeExt};
use crate::flow::BlockFormattingContext;
use crate::fragments::Fragment;
-use crate::geom::flow_relative::Vec2;
use crate::positioned::AbsolutelyPositionedFragment;
use crate::replaced::ReplacedContent;
-use crate::style_ext::{ComputedValuesExt, Direction, DisplayInside, Position, WritingMode};
+use crate::style_ext::DisplayInside;
use crate::ContainingBlock;
use servo_arc::Arc;
use std::convert::TryInto;
@@ -83,7 +82,7 @@ impl IndependentFormattingContext {
absolutely_positioned_fragments: &mut Vec<AbsolutelyPositionedFragment<'a>>,
) -> IndependentLayout {
match self.as_replaced() {
- Ok(replaced) => match *replaced {},
+ Ok(replaced) => replaced.layout(&self.style, containing_block),
Err(ifc) => ifc.layout(
layout_context,
containing_block,
diff --git a/components/layout_2020/fragments.rs b/components/layout_2020/fragments.rs
index a0ea097abb6..e0c335eb3c9 100644
--- a/components/layout_2020/fragments.rs
+++ b/components/layout_2020/fragments.rs
@@ -10,12 +10,13 @@ use std::sync::Arc;
use style::properties::ComputedValues;
use style::values::computed::Length;
use style::Zero;
-use webrender_api::FontInstanceKey;
+use webrender_api::{FontInstanceKey, ImageKey};
pub(crate) enum Fragment {
Box(BoxFragment),
Anonymous(AnonymousFragment),
Text(TextFragment),
+ Image(ImageFragment),
}
pub(crate) struct BoxFragment {
@@ -61,6 +62,12 @@ pub(crate) struct TextFragment {
pub glyphs: Vec<Arc<GlyphStore>>,
}
+pub(crate) struct ImageFragment {
+ pub style: ServoArc<ComputedValues>,
+ pub content_rect: Rect<Length>,
+ pub image_key: ImageKey,
+}
+
impl AnonymousFragment {
pub fn no_op(mode: (WritingMode, Direction)) -> Self {
Self {
diff --git a/components/layout_2020/geom.rs b/components/layout_2020/geom.rs
index f37685821a3..d75a1634561 100644
--- a/components/layout_2020/geom.rs
+++ b/components/layout_2020/geom.rs
@@ -141,17 +141,6 @@ impl flow_relative::Vec2<Length> {
}
}
-impl flow_relative::Sides<Length> {
- pub fn zero() -> Self {
- Self {
- inline_start: Length::zero(),
- inline_end: Length::zero(),
- block_start: Length::zero(),
- block_end: Length::zero(),
- }
- }
-}
-
impl flow_relative::Rect<Length> {
pub fn zero() -> Self {
Self {
@@ -244,16 +233,6 @@ impl<T> flow_relative::Sides<T> {
{
self.block_start + self.block_end
}
-
- pub fn start_corner(&self) -> flow_relative::Vec2<T>
- where
- T: Clone,
- {
- flow_relative::Vec2 {
- inline: self.inline_start.clone(),
- block: self.block_start.clone(),
- }
- }
}
impl flow_relative::Sides<LengthPercentage> {
diff --git a/components/layout_2020/lib.rs b/components/layout_2020/lib.rs
index 07956417087..80254421e66 100644
--- a/components/layout_2020/lib.rs
+++ b/components/layout_2020/lib.rs
@@ -2,16 +2,9 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-#![allow(dead_code)]
-#![allow(unreachable_code)]
-#![allow(unused_imports)]
-#![allow(unused_variables)]
#![deny(unsafe_code)]
#![feature(exact_size_is_empty)]
-#[macro_use]
-extern crate serde;
-
pub mod context;
pub mod data;
pub mod display_list;
@@ -31,15 +24,8 @@ pub mod wrapper;
pub use flow::{BoxTreeRoot, FragmentTreeRoot};
-use crate::context::LayoutContext;
-use crate::dom_traversal::{Contents, NodeExt};
-use crate::flow::BlockFormattingContext;
use crate::geom::flow_relative::Vec2;
-use crate::positioned::AbsolutelyPositionedFragment;
-use crate::replaced::ReplacedContent;
-use crate::style_ext::{ComputedValuesExt, Direction, DisplayInside, Position, WritingMode};
-use servo_arc::Arc;
-use std::convert::TryInto;
+use crate::style_ext::{ComputedValuesExt, Direction, Position, WritingMode};
use style::properties::ComputedValues;
use style::values::computed::{Length, LengthOrAuto};
use style::Zero;
diff --git a/components/layout_2020/positioned.rs b/components/layout_2020/positioned.rs
index 92bd4c8a4d5..3577a86642b 100644
--- a/components/layout_2020/positioned.rs
+++ b/components/layout_2020/positioned.rs
@@ -9,8 +9,6 @@ use crate::geom::flow_relative::{Rect, Sides, Vec2};
use crate::style_ext::{ComputedValuesExt, Direction, WritingMode};
use crate::{ContainingBlock, DefiniteContainingBlock};
use rayon::iter::{IntoParallelRefIterator, ParallelIterator};
-use servo_arc::Arc;
-use style::properties::ComputedValues;
use style::values::computed::{Length, LengthOrAuto, LengthPercentage, LengthPercentageOrAuto};
use style::Zero;
diff --git a/components/layout_2020/replaced.rs b/components/layout_2020/replaced.rs
index 04defc26b02..ecb8d2433e3 100644
--- a/components/layout_2020/replaced.rs
+++ b/components/layout_2020/replaced.rs
@@ -3,19 +3,71 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::dom_traversal::NodeExt;
-use style::context::SharedStyleContext;
+use crate::formatting_contexts::IndependentLayout;
+use crate::fragments::{Fragment, ImageFragment};
+use crate::geom::{flow_relative, physical};
+use crate::ContainingBlock;
+use net_traits::image::base::Image;
+use servo_arc::Arc as ServoArc;
+use std::sync::Arc;
+use style::properties::ComputedValues;
+use style::values::computed::Length;
#[derive(Debug)]
-pub(super) enum ReplacedContent {
- // Not implemented yet
+pub(crate) struct ReplacedContent {
+ pub kind: ReplacedContentKind,
+ pub intrinsic_size: physical::Vec2<Length>,
+}
+
+#[derive(Debug)]
+pub(crate) enum ReplacedContentKind {
+ Image(Option<Arc<Image>>),
}
impl ReplacedContent {
- pub fn for_element<'dom, Node>(element: Node, _context: &SharedStyleContext) -> Option<Self>
- where
- Node: NodeExt<'dom>,
- {
- // FIXME: implement <img> etc.
+ pub fn for_element<'dom>(element: impl NodeExt<'dom>) -> Option<Self> {
+ if let Some((image, intrinsic_size)) = element.as_image() {
+ return Some(Self {
+ kind: ReplacedContentKind::Image(image),
+ intrinsic_size,
+ });
+ }
None
}
+
+ pub fn layout<'a>(
+ &'a self,
+ style: &ServoArc<ComputedValues>,
+ containing_block: &ContainingBlock,
+ ) -> IndependentLayout {
+ let (fragments, content_block_size) = match self.kind {
+ ReplacedContentKind::Image(ref image) => {
+ // FIXME(nox): We should not assume block size is known.
+ let block_size = containing_block.block_size.non_auto().unwrap();
+ let fragments = image
+ .as_ref()
+ .and_then(|image| image.id)
+ .map(|image_key| {
+ Fragment::Image(ImageFragment {
+ style: style.clone(),
+ content_rect: flow_relative::Rect {
+ start_corner: flow_relative::Vec2::zero(),
+ size: flow_relative::Vec2 {
+ inline: containing_block.inline_size,
+ block: block_size,
+ },
+ },
+ image_key,
+ })
+ })
+ .into_iter()
+ .collect::<Vec<_>>();
+ (fragments, block_size)
+ },
+ };
+ IndependentLayout {
+ fragments,
+ content_block_size,
+ }
+ }
}
diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs
index 5d815517532..466d844418a 100644
--- a/components/layout_thread/dom_wrapper.rs
+++ b/components/layout_thread/dom_wrapper.rs
@@ -514,6 +514,10 @@ impl<'le> TElement for ServoLayoutElement<'le> {
false
}
+ fn exports_any_part(&self) -> bool {
+ false
+ }
+
fn style_attribute(&self) -> Option<ArcBorrow<StyleLocked<PropertyDeclarationBlock>>> {
unsafe {
(*self.element.style_attribute())
@@ -999,6 +1003,14 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
false
}
+ fn exported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
+ fn imported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
#[inline]
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
unsafe { self.element.has_class_for_layout(name, case_sensitivity) }
@@ -1533,6 +1545,16 @@ impl<'le> ::selectors::Element for ServoThreadSafeLayoutElement<'le> {
false
}
+ fn exported_part(&self, _: &Atom) -> Option<Atom> {
+ debug!("ServoThreadSafeLayoutElement::exported_part called");
+ None
+ }
+
+ fn imported_part(&self, _: &Atom) -> Option<Atom> {
+ debug!("ServoThreadSafeLayoutElement::imported_part called");
+ None
+ }
+
fn has_class(&self, _name: &Atom, _case_sensitivity: CaseSensitivity) -> bool {
debug!("ServoThreadSafeLayoutElement::has_class called");
false
diff --git a/components/layout_thread_2020/dom_wrapper.rs b/components/layout_thread_2020/dom_wrapper.rs
index a9f09e11073..520014837db 100644
--- a/components/layout_thread_2020/dom_wrapper.rs
+++ b/components/layout_thread_2020/dom_wrapper.rs
@@ -521,6 +521,10 @@ impl<'le> TElement for ServoLayoutElement<'le> {
false
}
+ fn exports_any_part(&self) -> bool {
+ false
+ }
+
fn style_attribute(&self) -> Option<ArcBorrow<StyleLocked<PropertyDeclarationBlock>>> {
unsafe {
(*self.element.style_attribute())
@@ -1006,6 +1010,14 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> {
false
}
+ fn exported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
+ fn imported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
#[inline]
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
unsafe { self.element.has_class_for_layout(name, case_sensitivity) }
@@ -1540,6 +1552,16 @@ impl<'le> ::selectors::Element for ServoThreadSafeLayoutElement<'le> {
false
}
+ fn exported_part(&self, _: &Atom) -> Option<Atom> {
+ debug!("ServoThreadSafeLayoutElement::exported_part called");
+ None
+ }
+
+ fn imported_part(&self, _: &Atom) -> Option<Atom> {
+ debug!("ServoThreadSafeLayoutElement::imported_part called");
+ None
+ }
+
fn has_class(&self, _name: &Atom, _case_sensitivity: CaseSensitivity) -> bool {
debug!("ServoThreadSafeLayoutElement::has_class called");
false
diff --git a/components/layout_thread_2020/lib.rs b/components/layout_thread_2020/lib.rs
index d3c50d2103c..77e89950d57 100644
--- a/components/layout_thread_2020/lib.rs
+++ b/components/layout_thread_2020/lib.rs
@@ -1281,8 +1281,7 @@ impl LayoutThread {
self.viewport_size.height.to_f32_px(),
));
let mut display_list = DisplayListBuilder::new(self.id.to_webrender(), viewport_size);
- let is_contentful =
- fragment_tree.build_display_list(&mut display_list, self.id, viewport_size);
+ let is_contentful = fragment_tree.build_display_list(&mut display_list, viewport_size);
debug!("Layout done!");
diff --git a/components/malloc_size_of/Cargo.toml b/components/malloc_size_of/Cargo.toml
index 9ba39c1e0d6..2e112805067 100644
--- a/components/malloc_size_of/Cargo.toml
+++ b/components/malloc_size_of/Cargo.toml
@@ -28,7 +28,7 @@ servo = [
app_units = "0.7"
content-security-policy = {version = "0.3.0", features = ["serde"], optional = true}
crossbeam-channel = { version = "0.3", optional = true }
-cssparser = "0.27.1"
+cssparser = "0.27"
euclid = "0.20"
hashglobe = { path = "../hashglobe" }
hyper = { version = "0.12", optional = true }
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml
index d7032f290e0..cfa02f3363e 100644
--- a/components/script/Cargo.toml
+++ b/components/script/Cargo.toml
@@ -43,7 +43,7 @@ content-security-policy = {version = "0.3.0", features = ["serde"]}
cookie = "0.11"
chrono = "0.4"
crossbeam-channel = "0.3"
-cssparser = "0.27.1"
+cssparser = "0.27"
deny_public_fields = {path = "../deny_public_fields"}
devtools_traits = {path = "../devtools_traits"}
dom_struct = {path = "../dom_struct"}
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index baf4fcd0878..f359c43a18f 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -3073,6 +3073,14 @@ impl<'a> SelectorsElement for DomRoot<Element> {
false
}
+ fn exported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
+ fn imported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
Element::has_class(&**self, name, case_sensitivity)
}
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index b09804e397c..913f5f8530a 100755
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -1366,7 +1366,7 @@ pub fn encode_multipart_form_data(
}
}
- let mut boundary_bytes = format!("\r\n--{}--", boundary).into_bytes();
+ let mut boundary_bytes = format!("\r\n--{}--\r\n", boundary).into_bytes();
result.append(&mut boundary_bytes);
result
diff --git a/components/selectors/Cargo.toml b/components/selectors/Cargo.toml
index d3dda6cb2c1..d32e82a2336 100644
--- a/components/selectors/Cargo.toml
+++ b/components/selectors/Cargo.toml
@@ -22,7 +22,7 @@ bench = []
[dependencies]
bitflags = "1.0"
matches = "0.1"
-cssparser = "0.27.1"
+cssparser = "0.27"
derive_more = "0.13"
log = "0.4"
fxhash = "0.2"
diff --git a/components/selectors/matching.rs b/components/selectors/matching.rs
index 49b7f3dbd32..8993a5ea003 100644
--- a/components/selectors/matching.rs
+++ b/components/selectors/matching.rs
@@ -8,6 +8,7 @@ use crate::nth_index_cache::NthIndexCacheInner;
use crate::parser::{AncestorHashes, Combinator, Component, LocalName};
use crate::parser::{NonTSPseudoClass, Selector, SelectorImpl, SelectorIter, SelectorList};
use crate::tree::Element;
+use smallvec::SmallVec;
use std::borrow::Borrow;
use std::iter;
@@ -667,7 +668,41 @@ where
match *selector {
Component::Combinator(_) => unreachable!(),
- Component::Part(ref parts) => parts.iter().all(|part| element.is_part(part)),
+ Component::Part(ref parts) => {
+ let mut hosts = SmallVec::<[E; 4]>::new();
+
+ let mut host = match element.containing_shadow_host() {
+ Some(h) => h,
+ None => return false,
+ };
+
+ loop {
+ let outer_host = host.containing_shadow_host();
+ if outer_host.as_ref().map(|h| h.opaque()) == context.shared.current_host {
+ break;
+ }
+ let outer_host = match outer_host {
+ Some(h) => h,
+ None => return false,
+ };
+ // TODO(emilio): if worth it, we could early return if
+ // host doesn't have the exportparts attribute.
+ hosts.push(host);
+ host = outer_host;
+ }
+
+ // Translate the part into the right scope.
+ parts.iter().all(|part| {
+ let mut part = part.clone();
+ for host in hosts.iter().rev() {
+ part = match host.imported_part(&part) {
+ Some(p) => p,
+ None => return false,
+ };
+ }
+ element.is_part(&part)
+ })
+ },
Component::Slotted(ref selector) => {
// <slots> are never flattened tree slottables.
!element.is_html_slot_element() &&
diff --git a/components/selectors/tree.rs b/components/selectors/tree.rs
index f892abd4e94..d6198c5a5f5 100644
--- a/components/selectors/tree.rs
+++ b/components/selectors/tree.rs
@@ -117,6 +117,20 @@ pub trait Element: Sized + Clone + Debug {
case_sensitivity: CaseSensitivity,
) -> bool;
+ /// Returns the mapping from the `exportparts` attribute in the regular
+ /// direction, that is, inner-tree -> outer-tree.
+ fn exported_part(
+ &self,
+ name: &<Self::Impl as SelectorImpl>::PartName,
+ ) -> Option<<Self::Impl as SelectorImpl>::PartName>;
+
+ /// Returns the mapping from the `exportparts` attribute in the reverse
+ /// direction, that is, in an outer-tree -> inner-tree direction.
+ fn imported_part(
+ &self,
+ name: &<Self::Impl as SelectorImpl>::PartName,
+ ) -> Option<<Self::Impl as SelectorImpl>::PartName>;
+
fn is_part(&self, name: &<Self::Impl as SelectorImpl>::PartName) -> bool;
/// Returns whether this element matches `:empty`.
diff --git a/components/servo_arc/lib.rs b/components/servo_arc/lib.rs
index ad4489c10bc..bd6b5289504 100644
--- a/components/servo_arc/lib.rs
+++ b/components/servo_arc/lib.rs
@@ -485,6 +485,14 @@ impl<T: ?Sized> Arc<T> {
}
}
+ /// Whether or not the `Arc` is a static reference.
+ #[inline]
+ pub fn is_static(&self) -> bool {
+ // Using a relaxed ordering to check for STATIC_REFCOUNT is safe, since
+ // `count` never changes between STATIC_REFCOUNT and other values.
+ self.inner().count.load(Relaxed) == STATIC_REFCOUNT
+ }
+
/// Whether or not the `Arc` is uniquely owned (is the refcount 1?) and not
/// a static reference.
#[inline]
@@ -501,10 +509,7 @@ impl<T: ?Sized> Drop for Arc<T> {
fn drop(&mut self) {
// NOTE(emilio): If you change anything here, make sure that the
// implementation in layout/style/ServoStyleConstsInlines.h matches!
- //
- // Using a relaxed ordering to check for STATIC_REFCOUNT is safe, since
- // `count` never changes between STATIC_REFCOUNT and other values.
- if self.inner().count.load(Relaxed) == STATIC_REFCOUNT {
+ if self.is_static() {
return;
}
diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml
index f15c64e2f56..47a0d4392ef 100644
--- a/components/style/Cargo.toml
+++ b/components/style/Cargo.toml
@@ -18,8 +18,9 @@ doctest = false
[features]
gecko = ["style_traits/gecko", "fallible/known_system_malloc", "bindgen", "regex", "toml"]
servo = ["serde", "style_traits/servo", "servo_atoms", "servo_config", "html5ever",
- "cssparser/serde", "encoding_rs", "malloc_size_of/servo", "arrayvec/use_union",
- "servo_url", "string_cache", "crossbeam-channel", "to_shmem/servo", "servo_arc/servo"]
+ "cssparser/serde", "encoding_rs", "malloc_size_of/servo", "servo_url",
+ "string_cache", "crossbeam-channel", "to_shmem/servo",
+ "servo_arc/servo"]
servo-layout-2013 = []
servo-layout-2020 = []
gecko_debug = []
@@ -28,11 +29,11 @@ gecko_profiler = []
[dependencies]
app_units = "0.7"
-arrayvec = "0.4.6"
+arrayvec = "0.5"
atomic_refcell = "0.1"
bitflags = "1.0"
byteorder = "1.0"
-cssparser = "0.27.1"
+cssparser = "0.27"
crossbeam-channel = { version = "0.3", optional = true }
derive_more = "0.13"
new_debug_unreachable = "1.0"
@@ -74,7 +75,7 @@ thin-slice = "0.1.0"
to_shmem = {path = "../to_shmem"}
to_shmem_derive = {path = "../to_shmem_derive"}
time = "0.1"
-uluru = "0.3"
+uluru = "0.4"
unicode-bidi = "0.3"
unicode-segmentation = "1.0"
void = "1.0.2"
diff --git a/components/style/animation.rs b/components/style/animation.rs
index c9b4fc5a6f1..7f96e55b18f 100644
--- a/components/style/animation.rs
+++ b/components/style/animation.rs
@@ -16,8 +16,8 @@ use crate::properties::animated_properties::AnimatedProperty;
use crate::properties::longhands::animation_direction::computed_value::single_value::T as AnimationDirection;
use crate::properties::longhands::animation_play_state::computed_value::single_value::T as AnimationPlayState;
use crate::properties::{self, CascadeMode, ComputedValues, LonghandId};
-use crate::rule_tree::CascadeLevel;
use crate::stylesheets::keyframes_rule::{KeyframesAnimation, KeyframesStep, KeyframesStepValue};
+use crate::stylesheets::Origin;
use crate::timer::Timer;
use crate::values::computed::box_::TransitionProperty;
use crate::values::computed::Time;
@@ -491,7 +491,7 @@ where
guard
.normal_declaration_iter()
.filter(|declaration| declaration.is_animatable())
- .map(|decl| (decl, CascadeLevel::Animations))
+ .map(|decl| (decl, Origin::Author))
};
// This currently ignores visited styles, which seems acceptable,
diff --git a/components/style/applicable_declarations.rs b/components/style/applicable_declarations.rs
index e4bf996a1d6..6353fb4c5e5 100644
--- a/components/style/applicable_declarations.rs
+++ b/components/style/applicable_declarations.rs
@@ -5,11 +5,10 @@
//! Applicable declarations management.
use crate::properties::PropertyDeclarationBlock;
-use crate::rule_tree::{CascadeLevel, ShadowCascadeOrder, StyleSource};
+use crate::rule_tree::{CascadeLevel, StyleSource};
use crate::shared_lock::Locked;
use servo_arc::Arc;
use smallvec::SmallVec;
-use std::fmt::{self, Debug};
/// List of applicable declarations. This is a transient structure that shuttles
/// declarations between selector matching and inserting into the rule tree, and
@@ -31,64 +30,29 @@ const SOURCE_ORDER_BITS: usize = 24;
const SOURCE_ORDER_MAX: u32 = (1 << SOURCE_ORDER_BITS) - 1;
const SOURCE_ORDER_MASK: u32 = SOURCE_ORDER_MAX << SOURCE_ORDER_SHIFT;
-/// We store up-to-15 shadow order levels.
-///
-/// You'd need an element slotted across 16 components with ::slotted rules to
-/// trigger this as of this writing, which looks... Unlikely.
-const SHADOW_CASCADE_ORDER_SHIFT: usize = SOURCE_ORDER_BITS;
-const SHADOW_CASCADE_ORDER_BITS: usize = 4;
-const SHADOW_CASCADE_ORDER_MAX: u8 = (1 << SHADOW_CASCADE_ORDER_BITS) - 1;
-const SHADOW_CASCADE_ORDER_MASK: u32 =
- (SHADOW_CASCADE_ORDER_MAX as u32) << SHADOW_CASCADE_ORDER_SHIFT;
-
-const CASCADE_LEVEL_SHIFT: usize = SOURCE_ORDER_BITS + SHADOW_CASCADE_ORDER_BITS;
-const CASCADE_LEVEL_BITS: usize = 4;
-const CASCADE_LEVEL_MAX: u8 = (1 << CASCADE_LEVEL_BITS) - 1;
-const CASCADE_LEVEL_MASK: u32 = (CASCADE_LEVEL_MAX as u32) << CASCADE_LEVEL_SHIFT;
+/// We pack the cascade level in a single byte, see CascadeLevel::to_byte_lossy
+/// for the different trade-offs there.
+const CASCADE_LEVEL_SHIFT: usize = SOURCE_ORDER_BITS;
/// Stores the source order of a block, the cascade level it belongs to, and the
/// counter needed to handle Shadow DOM cascade order properly.
-#[derive(Clone, Copy, Eq, MallocSizeOf, PartialEq)]
+#[derive(Clone, Copy, Debug, Eq, MallocSizeOf, PartialEq)]
struct ApplicableDeclarationBits(u32);
impl ApplicableDeclarationBits {
- fn new(
- source_order: u32,
- cascade_level: CascadeLevel,
- shadow_cascade_order: ShadowCascadeOrder,
- ) -> Self {
- debug_assert!(
- cascade_level as u8 <= CASCADE_LEVEL_MAX,
- "Gotta find more bits!"
- );
- let mut bits = ::std::cmp::min(source_order, SOURCE_ORDER_MAX);
- bits |= ((shadow_cascade_order & SHADOW_CASCADE_ORDER_MAX) as u32) <<
- SHADOW_CASCADE_ORDER_SHIFT;
- bits |= (cascade_level as u8 as u32) << CASCADE_LEVEL_SHIFT;
- ApplicableDeclarationBits(bits)
+ fn new(source_order: u32, cascade_level: CascadeLevel) -> Self {
+ Self(
+ (source_order & SOURCE_ORDER_MASK) |
+ ((cascade_level.to_byte_lossy() as u32) << CASCADE_LEVEL_SHIFT),
+ )
}
fn source_order(&self) -> u32 {
- (self.0 & SOURCE_ORDER_MASK) >> SOURCE_ORDER_SHIFT
- }
-
- fn shadow_cascade_order(&self) -> ShadowCascadeOrder {
- ((self.0 & SHADOW_CASCADE_ORDER_MASK) >> SHADOW_CASCADE_ORDER_SHIFT) as ShadowCascadeOrder
+ self.0 & SOURCE_ORDER_MASK
}
fn level(&self) -> CascadeLevel {
- let byte = ((self.0 & CASCADE_LEVEL_MASK) >> CASCADE_LEVEL_SHIFT) as u8;
- unsafe { CascadeLevel::from_byte(byte) }
- }
-}
-
-impl Debug for ApplicableDeclarationBits {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- f.debug_struct("ApplicableDeclarationBits")
- .field("source_order", &self.source_order())
- .field("shadow_cascade_order", &self.shadow_cascade_order())
- .field("level", &self.level())
- .finish()
+ CascadeLevel::from_byte((self.0 >> CASCADE_LEVEL_SHIFT) as u8)
}
}
@@ -119,23 +83,17 @@ impl ApplicableDeclarationBlock {
) -> Self {
ApplicableDeclarationBlock {
source: StyleSource::from_declarations(declarations),
- bits: ApplicableDeclarationBits::new(0, level, 0),
+ bits: ApplicableDeclarationBits::new(0, level),
specificity: 0,
}
}
/// Constructs an applicable declaration block from the given components
#[inline]
- pub fn new(
- source: StyleSource,
- order: u32,
- level: CascadeLevel,
- specificity: u32,
- shadow_cascade_order: ShadowCascadeOrder,
- ) -> Self {
+ pub fn new(source: StyleSource, order: u32, level: CascadeLevel, specificity: u32) -> Self {
ApplicableDeclarationBlock {
source,
- bits: ApplicableDeclarationBits::new(order, level, shadow_cascade_order),
+ bits: ApplicableDeclarationBits::new(order, level),
specificity,
}
}
@@ -155,9 +113,8 @@ impl ApplicableDeclarationBlock {
/// Convenience method to consume self and return the right thing for the
/// rule tree to iterate over.
#[inline]
- pub fn for_rule_tree(self) -> (StyleSource, CascadeLevel, ShadowCascadeOrder) {
+ pub fn for_rule_tree(self) -> (StyleSource, CascadeLevel) {
let level = self.level();
- let cascade_order = self.bits.shadow_cascade_order();
- (self.source, level, cascade_order)
+ (self.source, level)
}
}
diff --git a/components/style/custom_properties.rs b/components/style/custom_properties.rs
index 639d32a97a9..3717e1f0614 100644
--- a/components/style/custom_properties.rs
+++ b/components/style/custom_properties.rs
@@ -306,8 +306,7 @@ fn parse_declaration_value_block<'i, 't>(
) -> Result<(TokenSerializationType, TokenSerializationType), ParseError<'i>> {
let mut token_start = input.position();
let mut token = match input.next_including_whitespace_and_comments() {
- // FIXME: remove clone() when borrows are non-lexical
- Ok(token) => token.clone(),
+ Ok(token) => token,
Err(_) => {
return Ok((
TokenSerializationType::nothing(),
@@ -335,8 +334,9 @@ fn parse_declaration_value_block<'i, 't>(
}
};
}
- let last_token_type = match token {
+ let last_token_type = match *token {
Token::Comment(_) => {
+ let serialization_type = token.serialization_type();
let token_slice = input.slice_from(token_start);
if !token_slice.ends_with("*/") {
missing_closing_characters.push_str(if token_slice.ends_with('*') {
@@ -345,14 +345,14 @@ fn parse_declaration_value_block<'i, 't>(
"*/"
})
}
- token.serialization_type()
+ serialization_type
},
- Token::BadUrl(u) => {
- let e = StyleParseErrorKind::BadUrlInDeclarationValueBlock(u);
+ Token::BadUrl(ref u) => {
+ let e = StyleParseErrorKind::BadUrlInDeclarationValueBlock(u.clone());
return Err(input.new_custom_error(e));
},
- Token::BadString(s) => {
- let e = StyleParseErrorKind::BadStringInDeclarationValueBlock(s);
+ Token::BadString(ref s) => {
+ let e = StyleParseErrorKind::BadStringInDeclarationValueBlock(s.clone());
return Err(input.new_custom_error(e));
},
Token::CloseParenthesis => {
@@ -401,13 +401,14 @@ fn parse_declaration_value_block<'i, 't>(
Token::CloseSquareBracket.serialization_type()
},
Token::QuotedString(_) => {
+ let serialization_type = token.serialization_type();
let token_slice = input.slice_from(token_start);
let quote = &token_slice[..1];
debug_assert!(matches!(quote, "\"" | "'"));
if !(token_slice.ends_with(quote) && token_slice.len() > 1) {
missing_closing_characters.push_str(quote)
}
- token.serialization_type()
+ serialization_type
},
Token::Ident(ref value) |
Token::AtKeyword(ref value) |
@@ -417,6 +418,8 @@ fn parse_declaration_value_block<'i, 't>(
Token::Dimension {
unit: ref value, ..
} => {
+ let serialization_type = token.serialization_type();
+ let is_unquoted_url = matches!(token, Token::UnquotedUrl(_));
if value.ends_with("�") && input.slice_from(token_start).ends_with("\\") {
// Unescaped backslash at EOF in these contexts is interpreted as U+FFFD
// Check the value in case the final backslash was itself escaped.
@@ -424,18 +427,17 @@ fn parse_declaration_value_block<'i, 't>(
// (Unescaped U+FFFD would also work, but removing the backslash is annoying.)
missing_closing_characters.push_str("�")
}
- if matches!(token, Token::UnquotedUrl(_)) {
+ if is_unquoted_url {
check_closed!(")");
}
- token.serialization_type()
+ serialization_type
},
_ => token.serialization_type(),
};
token_start = input.position();
token = match input.next_including_whitespace_and_comments() {
- // FIXME: remove clone() when borrows are non-lexical
- Ok(token) => token.clone(),
+ Ok(token) => token,
Err(..) => return Ok((first_token_type, last_token_type)),
};
}
@@ -888,15 +890,12 @@ fn substitute_block<'i>(
let mut set_position_at_next_iteration = false;
loop {
let before_this_token = input.position();
- // FIXME: remove clone() when borrows are non-lexical
- let next = input
- .next_including_whitespace_and_comments()
- .map(|t| t.clone());
+ let next = input.next_including_whitespace_and_comments();
if set_position_at_next_iteration {
*position = (
before_this_token,
match next {
- Ok(ref token) => token.serialization_type(),
+ Ok(token) => token.serialization_type(),
Err(_) => TokenSerializationType::nothing(),
},
);
diff --git a/components/style/dom.rs b/components/style/dom.rs
index 2ea64bbb3dc..fbe35e2e49d 100644
--- a/components/style/dom.rs
+++ b/components/style/dom.rs
@@ -331,7 +331,7 @@ where
}
/// The ShadowRoot trait.
-pub trait TShadowRoot: Sized + Copy + Clone + PartialEq {
+pub trait TShadowRoot: Sized + Copy + Clone + Debug + PartialEq {
/// The concrete node type.
type ConcreteNode: TNode<ConcreteShadowRoot = Self>;
@@ -523,6 +523,9 @@ pub trait TElement:
/// Returns whether this element has a `part` attribute.
fn has_part_attr(&self) -> bool;
+ /// Returns whether this element exports any part from its shadow tree.
+ fn exports_any_part(&self) -> bool;
+
/// The ID for this element.
fn id(&self) -> Option<&WeakAtom>;
diff --git a/components/style/dom_apis.rs b/components/style/dom_apis.rs
index e43c861271e..8f764dc8958 100644
--- a/components/style/dom_apis.rs
+++ b/components/style/dom_apis.rs
@@ -172,7 +172,11 @@ where
};
for selector in self.selector_list.0.iter() {
- target_vector.push(Invalidation::new(selector, 0))
+ target_vector.push(Invalidation::new(
+ selector,
+ self.matching_context.current_host.clone(),
+ 0,
+ ))
}
false
diff --git a/components/style/gecko/media_queries.rs b/components/style/gecko/media_queries.rs
index bb126e16948..3463c1f95e9 100644
--- a/components/style/gecko/media_queries.rs
+++ b/components/style/gecko/media_queries.rs
@@ -237,7 +237,13 @@ impl Device {
/// used for viewport unit resolution.
pub fn au_viewport_size_for_viewport_unit_resolution(&self) -> Size2D<Au> {
self.used_viewport_size.store(true, Ordering::Relaxed);
- self.au_viewport_size()
+
+ let pc = match self.pres_context() {
+ Some(pc) => pc,
+ None => return Size2D::new(Au(0), Au(0)),
+ };
+ let size = &pc.mSizeForViewportUnits;
+ Size2D::new(Au(size.width), Au(size.height))
}
/// Returns whether we ever looked up the viewport size of the Device.
@@ -268,13 +274,7 @@ impl Device {
if doc.mIsBeingUsedAsImage() {
return true;
}
- let document_color_use = static_prefs::pref!("browser.display.document_color_use");
- let prefs = self.pref_sheet_prefs();
- match document_color_use {
- 1 => true,
- 2 => prefs.mIsChrome,
- _ => !prefs.mUseAccessibilityTheme,
- }
+ self.pref_sheet_prefs().mUseDocumentColors
}
/// Returns the default background color.
diff --git a/components/style/gecko/pseudo_element.rs b/components/style/gecko/pseudo_element.rs
index aa849ceee02..8d05dd9bbb1 100644
--- a/components/style/gecko/pseudo_element.rs
+++ b/components/style/gecko/pseudo_element.rs
@@ -140,6 +140,12 @@ impl PseudoElement {
*self == PseudoElement::FieldsetContent
}
+ /// Whether this pseudo-element is the ::-moz-color-swatch pseudo.
+ #[inline]
+ pub fn is_color_swatch(&self) -> bool {
+ *self == PseudoElement::MozColorSwatch
+ }
+
/// Whether this pseudo-element is lazily-cascaded.
#[inline]
pub fn is_lazy(&self) -> bool {
diff --git a/components/style/gecko/regen_atoms.py b/components/style/gecko/regen_atoms.py
index 0066d06d054..cf7cc77c16f 100755
--- a/components/style/gecko/regen_atoms.py
+++ b/components/style/gecko/regen_atoms.py
@@ -132,7 +132,7 @@ PRELUDE = '''
RULE_TEMPLATE = '''
("{atom}") => {{{{
#[allow(unsafe_code)] #[allow(unused_unsafe)]
- unsafe {{ $crate::string_cache::Atom::from_index({index}) }}
+ unsafe {{ $crate::string_cache::Atom::from_index_unchecked({index}) }}
}}}};
'''[1:]
diff --git a/components/style/gecko/snapshot.rs b/components/style/gecko/snapshot.rs
index cffb78d3e9e..02707682b4d 100644
--- a/components/style/gecko/snapshot.rs
+++ b/components/style/gecko/snapshot.rs
@@ -194,6 +194,16 @@ impl ElementSnapshot for GeckoElementSnapshot {
}
#[inline]
+ fn exported_part(&self, name: &Atom) -> Option<Atom> {
+ snapshot_helpers::exported_part(&*self.mAttrs, name)
+ }
+
+ #[inline]
+ fn imported_part(&self, name: &Atom) -> Option<Atom> {
+ snapshot_helpers::imported_part(&*self.mAttrs, name)
+ }
+
+ #[inline]
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
if !self.has_any(Flags::MaybeClass) {
return false;
diff --git a/components/style/gecko/snapshot_helpers.rs b/components/style/gecko/snapshot_helpers.rs
index b8b31bc87dd..cb3056e7bd5 100644
--- a/components/style/gecko/snapshot_helpers.rs
+++ b/components/style/gecko/snapshot_helpers.rs
@@ -82,6 +82,32 @@ pub fn get_id(attrs: &[structs::AttrArray_InternalAttr]) -> Option<&WeakAtom> {
Some(unsafe { get_id_from_attr(find_attr(attrs, &atom!("id"))?) })
}
+#[inline(always)]
+pub(super) fn exported_part(
+ attrs: &[structs::AttrArray_InternalAttr],
+ name: &Atom,
+) -> Option<Atom> {
+ let attr = find_attr(attrs, &atom!("exportparts"))?;
+ let atom = unsafe { bindings::Gecko_Element_ExportedPart(attr, name.as_ptr()) };
+ if atom.is_null() {
+ return None;
+ }
+ Some(unsafe { Atom::from_raw(atom) })
+}
+
+#[inline(always)]
+pub(super) fn imported_part(
+ attrs: &[structs::AttrArray_InternalAttr],
+ name: &Atom,
+) -> Option<Atom> {
+ let attr = find_attr(attrs, &atom!("exportparts"))?;
+ let atom = unsafe { bindings::Gecko_Element_ImportedPart(attr, name.as_ptr()) };
+ if atom.is_null() {
+ return None;
+ }
+ Some(unsafe { Atom::from_raw(atom) })
+}
+
/// Given a class or part name, a case sensitivity, and an array of attributes,
/// returns whether the attribute has that name.
#[inline(always)]
diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs
index c2c4a0c0feb..bf4da090646 100644
--- a/components/style/gecko/wrapper.rs
+++ b/components/style/gecko/wrapper.rs
@@ -144,6 +144,13 @@ impl<'ld> TDocument for GeckoDocument<'ld> {
#[derive(Clone, Copy)]
pub struct GeckoShadowRoot<'lr>(pub &'lr structs::ShadowRoot);
+impl<'ln> fmt::Debug for GeckoShadowRoot<'ln> {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ // TODO(emilio): Maybe print the host or something?
+ write!(f, "<shadow-root> ({:#x})", self.as_node().opaque().0)
+ }
+}
+
impl<'lr> PartialEq for GeckoShadowRoot<'lr> {
#[inline]
fn eq(&self, other: &Self) -> bool {
@@ -232,8 +239,8 @@ impl<'ln> fmt::Debug for GeckoNode<'ln> {
return write!(f, "<document> ({:#x})", self.opaque().0);
}
- if self.is_shadow_root() {
- return write!(f, "<shadow-root> ({:#x})", self.opaque().0);
+ if let Some(sr) = self.as_shadow_root() {
+ return sr.fmt(f);
}
write!(f, "<non-text node> ({:#x})", self.opaque().0)
@@ -300,7 +307,10 @@ impl<'ln> GeckoNode<'ln> {
fn flattened_tree_parent_is_parent(&self) -> bool {
use crate::gecko_bindings::structs::*;
let flags = self.flags();
- if flags & (NODE_MAY_BE_IN_BINDING_MNGR as u32 | NODE_IS_IN_SHADOW_TREE as u32) != 0 {
+
+ // FIXME(emilio): The shadow tree condition seems it shouldn't be needed
+ // anymore, if we check for slots.
+ if self.is_in_shadow_tree() {
return false;
}
@@ -758,13 +768,6 @@ impl<'le> GeckoElement<'le> {
data.damage |= damage;
}
- /// This logic is duplicated in Gecko's nsIContent::IsRootOfAnonymousSubtree.
- #[inline]
- fn is_root_of_anonymous_subtree(&self) -> bool {
- use crate::gecko_bindings::structs::NODE_IS_ANONYMOUS_ROOT;
- self.flags() & (NODE_IS_ANONYMOUS_ROOT as u32) != 0
- }
-
/// This logic is duplicated in Gecko's nsIContent::IsRootOfNativeAnonymousSubtree.
#[inline]
fn is_root_of_native_anonymous_subtree(&self) -> bool {
@@ -772,11 +775,6 @@ impl<'le> GeckoElement<'le> {
return self.flags() & (NODE_IS_NATIVE_ANONYMOUS_ROOT as u32) != 0;
}
- #[inline]
- fn is_in_anonymous_subtree(&self) -> bool {
- unsafe { bindings::Gecko_IsInAnonymousSubtree(self.0) }
- }
-
/// Returns true if this node is the shadow root of an use-element shadow tree.
#[inline]
fn is_root_of_use_element_shadow_tree(&self) -> bool {
@@ -1025,7 +1023,7 @@ impl<'le> TElement for GeckoElement<'le> {
// StyleChildrenIterator::IsNeeded does, except that it might return
// true if we used to (but no longer) have anonymous content from
// ::before/::after, or nsIAnonymousContentCreators.
- if self.is_in_anonymous_subtree() ||
+ if self.is_in_native_anonymous_subtree() ||
self.is_html_slot_element() ||
self.shadow_root().is_some() ||
self.may_have_anonymous_children()
@@ -1250,6 +1248,11 @@ impl<'le> TElement for GeckoElement<'le> {
.get_bool_flag(nsINode_BooleanFlag::ElementHasPart)
}
+ #[inline]
+ fn exports_any_part(&self) -> bool {
+ snapshot_helpers::find_attr(self.attrs(), &atom!("exportparts")).is_some()
+ }
+
// FIXME(emilio): we should probably just return a reference to the Atom.
#[inline]
fn id(&self) -> Option<&WeakAtom> {
@@ -2192,7 +2195,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
#[inline]
fn is_link(&self) -> bool {
self.state()
- .intersects(NonTSPseudoClass::AnyLink.state_flag())
+ .intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE)
}
#[inline]
@@ -2219,6 +2222,16 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
snapshot_helpers::has_class_or_part(name, CaseSensitivity::CaseSensitive, attr)
}
+ #[inline]
+ fn exported_part(&self, name: &Atom) -> Option<Atom> {
+ snapshot_helpers::exported_part(self.attrs(), name)
+ }
+
+ #[inline]
+ fn imported_part(&self, name: &Atom) -> Option<Atom> {
+ snapshot_helpers::imported_part(self.attrs(), name)
+ }
+
#[inline(always)]
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
let attr = match self.get_class_attr() {
@@ -2241,7 +2254,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
#[inline]
fn ignores_nth_child_selectors(&self) -> bool {
- self.is_root_of_anonymous_subtree()
+ self.is_root_of_native_anonymous_subtree()
}
}
diff --git a/components/style/gecko_string_cache/mod.rs b/components/style/gecko_string_cache/mod.rs
index b209f316d09..b9e3a0c608a 100644
--- a/components/style/gecko_string_cache/mod.rs
+++ b/components/style/gecko_string_cache/mod.rs
@@ -26,6 +26,7 @@ use std::fmt::{self, Write};
use std::hash::{Hash, Hasher};
use std::iter::Cloned;
use std::mem::{self, ManuallyDrop};
+use std::num::NonZeroUsize;
use std::ops::Deref;
use std::{slice, str};
use style_traits::SpecifiedValueInfo;
@@ -48,13 +49,18 @@ macro_rules! local_name {
};
}
-/// A handle to a Gecko atom.
+/// A handle to a Gecko atom. This is a type that can represent either:
+///
+/// * A strong reference to a dynamic atom (an `nsAtom` pointer), in which case
+/// the `usize` just holds the pointer value.
+///
+/// * A byte offset from `gGkAtoms` to the `nsStaticAtom` object (shifted to
+/// the left one bit, and with the lower bit set to `1` to differentiate it
+/// from the above), so `(offset << 1 | 1)`.
///
-/// This is either a strong reference to a dynamic atom (an nsAtom pointer),
-/// or an offset from gGkAtoms to the nsStaticAtom object.
#[derive(Eq, PartialEq)]
#[repr(C)]
-pub struct Atom(usize);
+pub struct Atom(NonZeroUsize);
/// An atom *without* a strong reference.
///
@@ -86,7 +92,7 @@ fn static_atoms() -> &'static [nsStaticAtom; STATIC_ATOM_COUNT] {
fn valid_static_atom_addr(addr: usize) -> bool {
unsafe {
let atoms = static_atoms();
- let start = atoms.get_unchecked(0) as *const _;
+ let start = atoms.as_ptr();
let end = atoms.get_unchecked(STATIC_ATOM_COUNT) as *const _;
let in_range = addr >= start as usize && addr < end as usize;
let aligned = addr % mem::align_of::<nsStaticAtom>() == 0;
@@ -101,9 +107,9 @@ impl Deref for Atom {
fn deref(&self) -> &WeakAtom {
unsafe {
let addr = if self.is_static() {
- (&gGkAtoms as *const _ as usize) + (self.0 >> 1)
+ (&gGkAtoms as *const _ as usize) + (self.0.get() >> 1)
} else {
- self.0
+ self.0.get()
};
debug_assert!(!self.is_static() || valid_static_atom_addr(addr));
WeakAtom::new(addr as *const nsAtom)
@@ -341,29 +347,29 @@ impl fmt::Display for WeakAtom {
}
#[inline]
-unsafe fn make_handle(ptr: *const nsAtom) -> usize {
+unsafe fn make_handle(ptr: *const nsAtom) -> NonZeroUsize {
debug_assert!(!ptr.is_null());
if !WeakAtom::new(ptr).is_static() {
- ptr as usize
+ NonZeroUsize::new_unchecked(ptr as usize)
} else {
make_static_handle(ptr as *mut nsStaticAtom)
}
}
#[inline]
-unsafe fn make_static_handle(ptr: *const nsStaticAtom) -> usize {
+unsafe fn make_static_handle(ptr: *const nsStaticAtom) -> NonZeroUsize {
// FIXME(heycam): Use offset_from once it's stabilized.
// https://github.com/rust-lang/rust/issues/41079
debug_assert!(valid_static_atom_addr(ptr as usize));
let base = &gGkAtoms as *const _;
let offset = ptr as usize - base as usize;
- (offset << 1) | 1
+ NonZeroUsize::new_unchecked((offset << 1) | 1)
}
impl Atom {
#[inline]
fn is_static(&self) -> bool {
- self.0 & 1 == 1
+ self.0.get() & 1 == 1
}
/// Execute a callback with the atom represented by `ptr`.
@@ -378,17 +384,17 @@ impl Atom {
}
/// Creates a static atom from its index in the static atom table, without
- /// checking in release builds.
+ /// checking.
#[inline]
- pub unsafe fn from_index(index: u16) -> Self {
- let ptr = static_atoms().get_unchecked(index as usize) as *const _;
- let handle = make_static_handle(ptr);
- let atom = Atom(handle);
- debug_assert!(valid_static_atom_addr(ptr as usize));
- debug_assert!(atom.is_static());
- debug_assert!((*atom).is_static());
- debug_assert!(handle == make_handle(atom.as_ptr()));
- atom
+ pub const unsafe fn from_index_unchecked(index: u16) -> Self {
+ // FIXME(emilio): No support for debug_assert! in const fn for now. Note
+ // that violating this invariant will debug-assert in the `Deref` impl
+ // though.
+ //
+ // debug_assert!((index as usize) < STATIC_ATOM_COUNT);
+ let offset =
+ (index as usize) * std::mem::size_of::<nsStaticAtom>() + kGkAtomsArrayOffset as usize;
+ Atom(NonZeroUsize::new_unchecked((offset << 1) | 1))
}
/// Creates an atom from an atom pointer.
diff --git a/components/style/invalidation/element/document_state.rs b/components/style/invalidation/element/document_state.rs
index 4e29e91eb0e..7fc51338b1e 100644
--- a/components/style/invalidation/element/document_state.rs
+++ b/components/style/invalidation/element/document_state.rs
@@ -79,7 +79,13 @@ where
continue;
}
- self_invalidations.push(Invalidation::new(&dependency.selector, 0));
+ // We pass `None` as a scope, as document state selectors aren't
+ // affected by the current scope.
+ self_invalidations.push(Invalidation::new(
+ &dependency.selector,
+ /* scope = */ None,
+ 0,
+ ));
}
}
diff --git a/components/style/invalidation/element/element_wrapper.rs b/components/style/invalidation/element/element_wrapper.rs
index cb63e611348..bc74527bf16 100644
--- a/components/style/invalidation/element/element_wrapper.rs
+++ b/components/style/invalidation/element/element_wrapper.rs
@@ -62,6 +62,12 @@ pub trait ElementSnapshot: Sized {
/// called if `has_attrs()` returns true.
fn is_part(&self, name: &Atom) -> bool;
+ /// See Element::exported_part.
+ fn exported_part(&self, name: &Atom) -> Option<Atom>;
+
+ /// See Element::imported_part.
+ fn imported_part(&self, name: &Atom) -> Option<Atom>;
+
/// A callback that should be called for each class of the snapshot. Should
/// only be called if `has_attrs()` returns true.
fn each_class<F>(&self, _: F)
@@ -270,7 +276,10 @@ where
}
fn is_link(&self) -> bool {
- self.element.is_link()
+ match self.snapshot().and_then(|s| s.state()) {
+ Some(state) => state.intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE),
+ None => self.element.is_link(),
+ }
}
fn opaque(&self) -> OpaqueElement {
@@ -362,6 +371,20 @@ where
}
}
+ fn exported_part(&self, name: &Atom) -> Option<Atom> {
+ match self.snapshot() {
+ Some(snapshot) if snapshot.has_attrs() => snapshot.exported_part(name),
+ _ => self.element.exported_part(name),
+ }
+ }
+
+ fn imported_part(&self, name: &Atom) -> Option<Atom> {
+ match self.snapshot() {
+ Some(snapshot) if snapshot.has_attrs() => snapshot.imported_part(name),
+ _ => self.element.imported_part(name),
+ }
+ }
+
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
match self.snapshot() {
Some(snapshot) if snapshot.has_attrs() => snapshot.has_class(name, case_sensitivity),
diff --git a/components/style/invalidation/element/invalidator.rs b/components/style/invalidation/element/invalidator.rs
index 3487d7b9353..e094be281b4 100644
--- a/components/style/invalidation/element/invalidator.rs
+++ b/components/style/invalidation/element/invalidator.rs
@@ -11,6 +11,7 @@ use crate::selector_parser::SelectorImpl;
use selectors::matching::matches_compound_selector_from;
use selectors::matching::{CompoundSelectorMatchingResult, MatchingContext};
use selectors::parser::{Combinator, Component, Selector};
+use selectors::OpaqueElement;
use smallvec::SmallVec;
use std::fmt;
@@ -127,6 +128,12 @@ enum InvalidationKind {
#[derive(Clone)]
pub struct Invalidation<'a> {
selector: &'a Selector<SelectorImpl>,
+ /// The right shadow host from where the rule came from, if any.
+ ///
+ /// This is needed to ensure that we match the selector with the right
+ /// state, as whether some selectors like :host and ::part() match depends
+ /// on it.
+ scope: Option<OpaqueElement>,
/// The offset of the selector pointing to a compound selector.
///
/// This order is a "parse order" offset, that is, zero is the leftmost part
@@ -143,9 +150,14 @@ pub struct Invalidation<'a> {
impl<'a> Invalidation<'a> {
/// Create a new invalidation for a given selector and offset.
- pub fn new(selector: &'a Selector<SelectorImpl>, offset: usize) -> Self {
+ pub fn new(
+ selector: &'a Selector<SelectorImpl>,
+ scope: Option<OpaqueElement>,
+ offset: usize,
+ ) -> Self {
Self {
selector,
+ scope,
offset,
matched_by_any_previous: false,
}
@@ -471,6 +483,47 @@ where
any_descendant
}
+ fn invalidate_parts_in_shadow_tree(
+ &mut self,
+ shadow: <E::ConcreteNode as TNode>::ConcreteShadowRoot,
+ invalidations: &[Invalidation<'b>],
+ ) -> bool {
+ debug_assert!(!invalidations.is_empty());
+
+ let mut any = false;
+ let mut sibling_invalidations = InvalidationVector::new();
+
+ for node in shadow.as_node().dom_descendants() {
+ let element = match node.as_element() {
+ Some(e) => e,
+ None => continue,
+ };
+
+ if element.has_part_attr() {
+ any |= self.invalidate_child(
+ element,
+ invalidations,
+ &mut sibling_invalidations,
+ DescendantInvalidationKind::Part,
+ );
+ debug_assert!(
+ sibling_invalidations.is_empty(),
+ "::part() shouldn't have sibling combinators to the right, \
+ this makes no sense! {:?}",
+ sibling_invalidations
+ );
+ }
+
+ if let Some(shadow) = element.shadow_root() {
+ if element.exports_any_part() {
+ any |= self.invalidate_parts_in_shadow_tree(shadow, invalidations)
+ }
+ }
+ }
+
+ any
+ }
+
fn invalidate_parts(&mut self, invalidations: &[Invalidation<'b>]) -> bool {
if invalidations.is_empty() {
return false;
@@ -481,23 +534,7 @@ where
None => return false,
};
- let mut any = false;
- let mut sibling_invalidations = InvalidationVector::new();
- for element in shadow.parts() {
- any |= self.invalidate_child(
- *element,
- invalidations,
- &mut sibling_invalidations,
- DescendantInvalidationKind::Part,
- );
- debug_assert!(
- sibling_invalidations.is_empty(),
- "::part() shouldn't have sibling combinators to the right, \
- this makes no sense! {:?}",
- sibling_invalidations
- );
- }
- any
+ self.invalidate_parts_in_shadow_tree(shadow, invalidations)
}
fn invalidate_slotted_elements(&mut self, invalidations: &[Invalidation<'b>]) -> bool {
@@ -721,12 +758,17 @@ where
self.element, invalidation, invalidation_kind
);
- let matching_result = matches_compound_selector_from(
- &invalidation.selector,
- invalidation.offset,
- self.processor.matching_context(),
- &self.element,
- );
+ let matching_result = {
+ let context = self.processor.matching_context();
+ context.current_host = invalidation.scope;
+
+ matches_compound_selector_from(
+ &invalidation.selector,
+ invalidation.offset,
+ context,
+ &self.element,
+ )
+ };
let mut invalidated_self = false;
let mut matched = false;
@@ -809,6 +851,7 @@ where
let next_invalidation = Invalidation {
selector: invalidation.selector,
+ scope: invalidation.scope,
offset: next_combinator_offset + 1,
matched_by_any_previous: false,
};
diff --git a/components/style/invalidation/element/state_and_attributes.rs b/components/style/invalidation/element/state_and_attributes.rs
index 30521fb8c00..e678413218c 100644
--- a/components/style/invalidation/element/state_and_attributes.rs
+++ b/components/style/invalidation/element/state_and_attributes.rs
@@ -158,7 +158,11 @@ where
// If we the visited state changed, we force a restyle here. Matching
// doesn't depend on the actual visited state at all, so we can't look
// at matching results to decide what to do for this case.
- if state_changes.intersects(ElementState::IN_VISITED_OR_UNVISITED_STATE) {
+ //
+ // TODO(emilio): This piece of code should be removed when
+ // layout.css.always-repaint-on-unvisited is true, since we cannot get
+ // into this situation in that case.
+ if state_changes.contains(ElementState::IN_VISITED_OR_UNVISITED_STATE) {
trace!(" > visitedness change, force subtree restyle");
// We can't just return here because there may also be attribute
// changes as well that imply additional hints for siblings.
@@ -453,6 +457,7 @@ where
let invalidation = Invalidation::new(
&dependency.selector,
+ self.matching_context.current_host.clone(),
dependency.selector.len() - dependency.selector_offset + 1,
);
diff --git a/components/style/matching.rs b/components/style/matching.rs
index 958ec00f1d9..01246ed3878 100644
--- a/components/style/matching.rs
+++ b/components/style/matching.rs
@@ -137,12 +137,12 @@ trait PrivateMatchMethods: TElement {
if replacements.contains(RestyleHint::RESTYLE_STYLE_ATTRIBUTE) {
let style_attribute = self.style_attribute();
result |= replace_rule_node(
- CascadeLevel::StyleAttributeNormal,
+ CascadeLevel::same_tree_author_normal(),
style_attribute,
primary_rules,
);
result |= replace_rule_node(
- CascadeLevel::StyleAttributeImportant,
+ CascadeLevel::same_tree_author_important(),
style_attribute,
primary_rules,
);
diff --git a/components/style/properties/cascade.rs b/components/style/properties/cascade.rs
index 5266ed78356..a667cba09bc 100644
--- a/components/style/properties/cascade.rs
+++ b/components/style/properties/cascade.rs
@@ -15,7 +15,7 @@ use crate::properties::{LonghandId, LonghandIdSet, CSSWideKeyword};
use crate::properties::{PropertyDeclaration, PropertyDeclarationId, DeclarationImportanceIterator};
use crate::properties::CASCADE_PROPERTY;
use crate::rule_cache::{RuleCache, RuleCacheConditions};
-use crate::rule_tree::{CascadeLevel, StrongRuleNode};
+use crate::rule_tree::StrongRuleNode;
use crate::selector_parser::PseudoElement;
use crate::stylesheets::{Origin, PerOrigin};
use servo_arc::Arc;
@@ -134,11 +134,15 @@ where
let restriction = pseudo.and_then(|p| p.property_restriction());
let iter_declarations = || {
rule_node.self_and_ancestors().flat_map(|node| {
- let cascade_level = node.cascade_level();
+ let origin = node.cascade_level().origin();
let node_importance = node.importance();
+ let guard = match origin {
+ Origin::Author => guards.author,
+ Origin::User | Origin::UserAgent => guards.ua_or_user,
+ };
let declarations = match node.style_source() {
Some(source) => source
- .read(cascade_level.guard(guards))
+ .read(guard)
.declaration_importance_iter(),
None => DeclarationImportanceIterator::new(&[], &empty),
};
@@ -153,14 +157,14 @@ where
// longhands are only allowed if they have our
// restriction flag set.
if let PropertyDeclarationId::Longhand(id) = declaration.id() {
- if !id.flags().contains(restriction) && cascade_level.origin() != Origin::UserAgent {
+ if !id.flags().contains(restriction) && origin != Origin::UserAgent {
return None;
}
}
}
if declaration_importance == node_importance {
- Some((declaration, cascade_level))
+ Some((declaration, origin))
} else {
None
}
@@ -223,7 +227,7 @@ pub fn apply_declarations<'a, E, F, I>(
where
E: TElement,
F: Fn() -> I,
- I: Iterator<Item = (&'a PropertyDeclaration, CascadeLevel)>,
+ I: Iterator<Item = (&'a PropertyDeclaration, Origin)>,
{
debug_assert!(layout_parent_style.is_none() || parent_style.is_some());
debug_assert_eq!(
@@ -242,17 +246,17 @@ where
let inherited_style = parent_style.unwrap_or(device.default_computed_values());
- let mut declarations = SmallVec::<[(&_, CascadeLevel); 32]>::new();
+ let mut declarations = SmallVec::<[(&_, Origin); 32]>::new();
let custom_properties = {
let mut builder = CustomPropertiesBuilder::new(
inherited_style.custom_properties(),
device.environment(),
);
- for (declaration, cascade_level) in iter_declarations() {
- declarations.push((declaration, cascade_level));
+ for (declaration, origin) in iter_declarations() {
+ declarations.push((declaration, origin));
if let PropertyDeclaration::Custom(ref declaration) = *declaration {
- builder.cascade(declaration, cascade_level.origin());
+ builder.cascade(declaration, origin);
}
}
@@ -332,7 +336,7 @@ where
fn should_ignore_declaration_when_ignoring_document_colors(
device: &Device,
longhand_id: LonghandId,
- cascade_level: CascadeLevel,
+ origin: Origin,
pseudo: Option<&PseudoElement>,
declaration: &mut Cow<PropertyDeclaration>,
) -> bool {
@@ -340,22 +344,15 @@ fn should_ignore_declaration_when_ignoring_document_colors(
return false;
}
- let is_ua_or_user_rule =
- matches!(cascade_level.origin(), Origin::User | Origin::UserAgent);
+ let is_ua_or_user_rule = matches!(origin, Origin::User | Origin::UserAgent);
if is_ua_or_user_rule {
return false;
}
- let is_style_attribute = matches!(
- cascade_level,
- CascadeLevel::StyleAttributeNormal | CascadeLevel::StyleAttributeImportant
- );
-
- // Don't override colors on pseudo-element's style attributes. The
- // background-color on ::-moz-color-swatch is an example. Those are set
- // as an author style (via the style attribute), but it's pretty
- // important for it to show up for obvious reasons :)
- if pseudo.is_some() && is_style_attribute {
+ // Don't override background-color on ::-moz-color-swatch. It is set as an
+ // author style (via the style attribute), but it's pretty important for it
+ // to show up for obvious reasons :)
+ if pseudo.map_or(false, |p| p.is_color_swatch()) && longhand_id == LonghandId::BackgroundColor {
return false;
}
@@ -452,7 +449,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
declarations: I,
) where
Phase: CascadePhase,
- I: Iterator<Item = (&'decls PropertyDeclaration, CascadeLevel)>,
+ I: Iterator<Item = (&'decls PropertyDeclaration, Origin)>,
{
let apply_reset = apply_reset == ApplyResetProperties::Yes;
@@ -465,9 +462,8 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
let ignore_colors = !self.context.builder.device.use_document_colors();
- for (declaration, cascade_level) in declarations {
+ for (declaration, origin) in declarations {
let declaration_id = declaration.id();
- let origin = cascade_level.origin();
let longhand_id = match declaration_id {
PropertyDeclarationId::Longhand(id) => id,
PropertyDeclarationId::Custom(..) => continue,
@@ -515,7 +511,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
let should_ignore = should_ignore_declaration_when_ignoring_document_colors(
self.context.builder.device,
longhand_id,
- cascade_level,
+ origin,
self.context.builder.pseudo,
&mut declaration,
);
diff --git a/components/style/properties/data.py b/components/style/properties/data.py
index d1876a5ea02..87ec87a7fa5 100644
--- a/components/style/properties/data.py
+++ b/components/style/properties/data.py
@@ -257,10 +257,12 @@ class Longhand(object):
def type():
return "longhand"
- # For a given logical property return all the physical
- # property names corresponding to it.
- def all_physical_mapped_properties(self):
- assert self.logical
+ # For a given logical property return all the physical property names
+ # corresponding to it.
+ def all_physical_mapped_properties(self, data):
+ if not self.logical:
+ return []
+
candidates = [s for s in LOGICAL_SIDES + LOGICAL_SIZES + LOGICAL_CORNERS
if s in self.name] + [s for s in LOGICAL_AXES if self.name.endswith(s)]
assert(len(candidates) == 1)
@@ -270,7 +272,7 @@ class Longhand(object):
else PHYSICAL_SIZES if logical_side in LOGICAL_SIZES \
else PHYSICAL_AXES if logical_side in LOGICAL_AXES \
else LOGICAL_CORNERS
- return [to_phys(self.name, logical_side, physical_side)
+ return [data.longhands_by_name[to_phys(self.name, logical_side, physical_side)]
for physical_side in physical]
def experimental(self, engine):
diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs
index 7783c7eebd3..b6cd741038c 100644
--- a/components/style/properties/gecko.mako.rs
+++ b/components/style/properties/gecko.mako.rs
@@ -46,7 +46,7 @@ use crate::rule_tree::StrongRuleNode;
use crate::selector_parser::PseudoElement;
use servo_arc::{Arc, RawOffsetArc, UniqueArc};
use std::marker::PhantomData;
-use std::mem::{forget, zeroed, ManuallyDrop};
+use std::mem::{forget, MaybeUninit};
use std::{cmp, ops, ptr};
use crate::values::{self, CustomIdent, Either, KeyframesName, None_};
use crate::values::computed::{Percentage, TransitionProperty};
@@ -218,7 +218,7 @@ impl ComputedValuesInner {
unsafe {
let mut arc = UniqueArc::<ComputedValues>::new_uninit();
bindings::Gecko_ComputedStyle_Init(
- &mut (*arc.as_mut_ptr()).0,
+ arc.as_mut_ptr() as *mut _,
&self,
pseudo_ty,
);
@@ -621,14 +621,17 @@ def set_gecko_property(ffi_name, expr):
impl ${style_struct.gecko_struct_name} {
#[allow(dead_code, unused_variables)]
pub fn default(document: &structs::Document) -> Arc<Self> {
- let mut result = Arc::new(${style_struct.gecko_struct_name} { gecko: ManuallyDrop::new(unsafe { zeroed() }) });
unsafe {
+ let mut result = UniqueArc::<Self>::new_uninit();
+ // FIXME(bug 1595895): Zero the memory to keep valgrind happy, but
+ // these looks like Valgrind false-positives at a quick glance.
+ ptr::write_bytes::<Self>(result.as_mut_ptr(), 0, 1);
Gecko_Construct_Default_${style_struct.gecko_ffi_name}(
- &mut *Arc::get_mut(&mut result).unwrap().gecko,
+ result.as_mut_ptr() as *mut _,
document,
);
+ UniqueArc::assume_init(result).shareable()
}
- result
}
}
impl Drop for ${style_struct.gecko_struct_name} {
@@ -641,9 +644,12 @@ impl Drop for ${style_struct.gecko_struct_name} {
impl Clone for ${style_struct.gecko_struct_name} {
fn clone(&self) -> Self {
unsafe {
- let mut result = ${style_struct.gecko_struct_name} { gecko: ManuallyDrop::new(zeroed()) };
- Gecko_CopyConstruct_${style_struct.gecko_ffi_name}(&mut *result.gecko, &*self.gecko);
- result
+ let mut result = MaybeUninit::<Self>::uninit();
+ // FIXME(bug 1595895): Zero the memory to keep valgrind happy, but
+ // these looks like Valgrind false-positives at a quick glance.
+ ptr::write_bytes::<Self>(result.as_mut_ptr(), 0, 1);
+ Gecko_CopyConstruct_${style_struct.gecko_ffi_name}(result.as_mut_ptr() as *mut _, &*self.gecko);
+ result.assume_init()
}
}
}
diff --git a/components/style/properties/longhands/inherited_box.mako.rs b/components/style/properties/longhands/inherited_box.mako.rs
index 8db62bf56d6..a92d638671b 100644
--- a/components/style/properties/longhands/inherited_box.mako.rs
+++ b/components/style/properties/longhands/inherited_box.mako.rs
@@ -51,6 +51,7 @@ ${helpers.single_keyword(
"mixed upright sideways",
engines="gecko",
gecko_aliases="sideways-right=sideways",
+ gecko_enum_prefix="StyleTextOrientation",
animation_value_type="none",
spec="https://drafts.csswg.org/css-writing-modes/#propdef-text-orientation",
)}
@@ -71,9 +72,10 @@ ${helpers.single_keyword(
${helpers.single_keyword(
"image-rendering",
"auto crisp-edges",
- engines="gecko servo-2013",
+ engines="gecko servo-2013 servo-2020",
extra_gecko_values="optimizespeed optimizequality",
extra_servo_2013_values="pixelated",
+ extra_servo_2020_values="pixelated",
gecko_aliases="-moz-crisp-edges=crisp-edges",
animation_value_type="discrete",
spec="https://drafts.csswg.org/css-images/#propdef-image-rendering",
diff --git a/components/style/properties/longhands/inherited_svg.mako.rs b/components/style/properties/longhands/inherited_svg.mako.rs
index bbb7eba1c5b..1d75df08bd8 100644
--- a/components/style/properties/longhands/inherited_svg.mako.rs
+++ b/components/style/properties/longhands/inherited_svg.mako.rs
@@ -25,6 +25,7 @@ ${helpers.single_keyword(
engines="gecko",
animation_value_type="discrete",
spec="https://www.w3.org/TR/SVG/text.html#TextAnchorProperty",
+ gecko_enum_prefix="StyleTextAnchor",
)}
// Section 11 - Painting: Filling, Stroking and Marker Symbols
@@ -80,6 +81,7 @@ ${helpers.single_keyword(
engines="gecko",
animation_value_type="discrete",
spec="https://www.w3.org/TR/SVG11/painting.html#ShapeRenderingProperty",
+ gecko_enum_prefix = "StyleShapeRendering",
)}
${helpers.predefined_type(
@@ -107,6 +109,7 @@ ${helpers.single_keyword(
engines="gecko",
animation_value_type="discrete",
spec="https://www.w3.org/TR/SVG11/painting.html#StrokeLinecapProperty",
+ gecko_enum_prefix = "StyleStrokeLinecap",
)}
${helpers.single_keyword(
diff --git a/components/style/properties/longhands/position.mako.rs b/components/style/properties/longhands/position.mako.rs
index 1c2f5cc2e4a..95595f36316 100644
--- a/components/style/properties/longhands/position.mako.rs
+++ b/components/style/properties/longhands/position.mako.rs
@@ -331,6 +331,7 @@ ${helpers.single_keyword(
engines="gecko",
animation_value_type="discrete",
spec="https://drafts.csswg.org/css-images/#propdef-object-fit",
+ gecko_enum_prefix = "StyleObjectFit",
)}
${helpers.predefined_type(
diff --git a/components/style/properties/longhands/ui.mako.rs b/components/style/properties/longhands/ui.mako.rs
index 64702855967..05d22abd9e9 100644
--- a/components/style/properties/longhands/ui.mako.rs
+++ b/components/style/properties/longhands/ui.mako.rs
@@ -15,6 +15,7 @@ ${helpers.single_keyword(
"ime-mode",
"auto normal active disabled inactive",
engines="gecko",
+ gecko_enum_prefix="StyleImeMode",
gecko_ffi_name="mIMEMode",
animation_value_type="discrete",
spec="https://drafts.csswg.org/css-ui/#input-method-editor",
@@ -58,7 +59,7 @@ ${helpers.single_keyword(
"none default menu tooltip sheet",
engines="gecko",
gecko_ffi_name="mWindowShadow",
- gecko_constant_prefix="NS_STYLE_WINDOW_SHADOW",
+ gecko_enum_prefix="StyleWindowShadow",
animation_value_type="discrete",
enabled_in="chrome",
spec="None (Nonstandard internal property)",
diff --git a/components/style/properties/longhands/xul.mako.rs b/components/style/properties/longhands/xul.mako.rs
index 0862ce533d4..d5c4011eaf6 100644
--- a/components/style/properties/longhands/xul.mako.rs
+++ b/components/style/properties/longhands/xul.mako.rs
@@ -64,16 +64,6 @@ ${helpers.single_keyword(
spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/box-pack)",
)}
-${helpers.single_keyword(
- "-moz-stack-sizing",
- "stretch-to-fit ignore ignore-horizontal ignore-vertical",
- engines="gecko",
- gecko_ffi_name="mStackSizing",
- gecko_enum_prefix="StyleStackSizing",
- animation_value_type="discrete",
- spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-stack-sizing)",
-)}
-
${helpers.predefined_type(
"-moz-box-ordinal-group",
"Integer",
diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs
index 37b2319dfd6..0a26ae4555b 100644
--- a/components/style/properties/properties.mako.rs
+++ b/components/style/properties/properties.mako.rs
@@ -1651,13 +1651,25 @@ impl UnparsedValue {
shorthands::${shorthand.ident}::parse_value(&context, input)
.map(|longhands| {
match longhand_id {
+ <% seen = set() %>
% for property in shorthand.sub_properties:
- LonghandId::${property.camel_case} => {
- PropertyDeclaration::${property.camel_case}(
- longhands.${property.ident}
- )
- }
+ // When animating logical properties, we end up
+ // physicalizing the value during the animation, but
+ // the value still comes from the logical shorthand.
+ //
+ // So we need to handle the physical properties too.
+ % for prop in [property] + property.all_physical_mapped_properties(data):
+ % if prop.camel_case not in seen:
+ LonghandId::${prop.camel_case} => {
+ PropertyDeclaration::${prop.camel_case}(
+ longhands.${property.ident}
+ )
+ }
+ <% seen.add(prop.camel_case) %>
+ % endif
% endfor
+ % endfor
+ <% del seen %>
_ => unreachable!()
}
})
@@ -1801,8 +1813,8 @@ pub enum CountedUnknownProperty {
}
impl CountedUnknownProperty {
- /// Parse the counted unknown property.
- pub fn parse_for_test(property_name: &str) -> Option<Self> {
+ /// Parse the counted unknown property, for testing purposes only.
+ pub fn parse_for_testing(property_name: &str) -> Option<Self> {
ascii_case_insensitive_phf_map! {
unknown_id -> CountedUnknownProperty = {
% for property in data.counted_unknown_properties:
@@ -1814,6 +1826,7 @@ impl CountedUnknownProperty {
}
/// Returns the underlying index, used for use counter.
+ #[inline]
pub fn bit(self) -> usize {
self as usize
}
@@ -1830,9 +1843,16 @@ impl PropertyId {
})
}
- /// Returns a given property from the string `s`.
+ /// Returns a given property from the given name, _regardless of whether it
+ /// is enabled or not_, or Err(()) for unknown properties.
///
- /// Returns Err(()) for unknown properties.
+ /// Do not use for non-testing purposes.
+ pub fn parse_unchecked_for_testing(name: &str) -> Result<Self, ()> {
+ Self::parse_unchecked(name, None)
+ }
+
+ /// Returns a given property from the given name, _regardless of whether it
+ /// is enabled or not_, or Err(()) for unknown properties.
fn parse_unchecked(
property_name: &str,
use_counters: Option< &UseCounters>,
@@ -2176,14 +2196,12 @@ impl PropertyDeclaration {
let mut ret = self.clone();
% for prop in data.longhands:
- % if prop.logical:
- % for physical_property in prop.all_physical_mapped_properties():
- % if data.longhands_by_name[physical_property].specified_type() != prop.specified_type():
+ % for physical_property in prop.all_physical_mapped_properties(data):
+ % if physical_property.specified_type() != prop.specified_type():
<% raise "Logical property %s should share specified value with physical property %s" % \
- (prop.name, physical_property) %>
+ (prop.name, physical_property.name) %>
% endif
% endfor
- % endif
% endfor
unsafe {
diff --git a/components/style/properties/shorthands/box.mako.rs b/components/style/properties/shorthands/box.mako.rs
index 7b4ce131922..351b8cec606 100644
--- a/components/style/properties/shorthands/box.mako.rs
+++ b/components/style/properties/shorthands/box.mako.rs
@@ -464,11 +464,13 @@ ${helpers.two_properties_shorthand(
};
// Make sure that the initial value matches the values for the
- // longhands, just for general sanity.
+ // longhands, just for general sanity. `zoom: 1` and `zoom: 0` are
+ // ignored, see [1][2]. They are just hack for the "has layout" mode on
+ // IE.
//
- // FIXME: Should we just do this for the "normal" case? Seems weird
- // either way, so maybe not?
- Ok(if zoom.get() == 1.0 {
+ // [1]: https://bugs.webkit.org/show_bug.cgi?id=18467
+ // [2]: https://bugzilla.mozilla.org/show_bug.cgi?id=1593009
+ Ok(if zoom.get() == 1.0 || zoom.get() == 0.0 {
expanded! {
transform: Transform::none(),
transform_origin: TransformOrigin::initial_value(),
diff --git a/components/style/properties/shorthands/position.mako.rs b/components/style/properties/shorthands/position.mako.rs
index 81a54dbfa57..d9cb9da3342 100644
--- a/components/style/properties/shorthands/position.mako.rs
+++ b/components/style/properties/shorthands/position.mako.rs
@@ -181,8 +181,18 @@
}
impl<'a> ToCss for LonghandsToSerialize<'a> {
+ // Return the shortest possible serialization of the `grid-${kind}-[start/end]` values.
+ // This function exploits the opportunities to omit the end value per this spec text:
+ //
+ // https://drafts.csswg.org/css-grid/#propdef-grid-column
+ // "When the second value is omitted, if the first value is a <custom-ident>,
+ // the grid-row-end/grid-column-end longhand is also set to that <custom-ident>;
+ // otherwise, it is set to auto."
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write {
self.grid_${kind}_start.to_css(dest)?;
+ if self.grid_${kind}_start.can_omit(self.grid_${kind}_end) {
+ return Ok(()); // the end value is redundant
+ }
dest.write_str(" / ")?;
self.grid_${kind}_end.to_css(dest)
}
@@ -247,14 +257,39 @@
}
impl<'a> ToCss for LonghandsToSerialize<'a> {
+ // Return the shortest possible serialization of the `grid-[column/row]-[start/end]` values.
+ // This function exploits the opportunities to omit trailing values per this spec text:
+ //
+ // https://drafts.csswg.org/css-grid/#propdef-grid-area
+ // "If four <grid-line> values are specified, grid-row-start is set to the first value,
+ // grid-column-start is set to the second value, grid-row-end is set to the third value,
+ // and grid-column-end is set to the fourth value.
+ //
+ // When grid-column-end is omitted, if grid-column-start is a <custom-ident>,
+ // grid-column-end is set to that <custom-ident>; otherwise, it is set to auto.
+ //
+ // When grid-row-end is omitted, if grid-row-start is a <custom-ident>, grid-row-end is
+ // set to that <custom-ident>; otherwise, it is set to auto.
+ //
+ // When grid-column-start is omitted, if grid-row-start is a <custom-ident>, all four
+ // longhands are set to that value. Otherwise, it is set to auto."
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write {
self.grid_row_start.to_css(dest)?;
+ let mut trailing_values = 3;
+ if self.grid_column_start.can_omit(self.grid_column_end) {
+ trailing_values -= 1;
+ if self.grid_row_start.can_omit(self.grid_row_end) {
+ trailing_values -= 1;
+ if self.grid_row_start.can_omit(self.grid_column_start) {
+ trailing_values -= 1;
+ }
+ }
+ }
let values = [&self.grid_column_start, &self.grid_row_end, &self.grid_column_end];
- for value in &values {
+ for value in values.iter().take(trailing_values) {
dest.write_str(" / ")?;
value.to_css(dest)?;
}
-
Ok(())
}
}
@@ -301,27 +336,37 @@
% endfor
let first_line_names = input.try(parse_line_names).unwrap_or_default();
- if let Ok(mut string) = input.try(|i| i.expect_string().map(|s| s.as_ref().to_owned().into())) {
+ if let Ok(string) = input.try(|i| i.expect_string().map(|s| s.as_ref().to_owned().into())) {
let mut strings = vec![];
let mut values = vec![];
let mut line_names = vec![];
- let mut names = first_line_names;
+ line_names.push(first_line_names);
+ strings.push(string);
loop {
- line_names.push(names);
- strings.push(string);
let size = input.try(|i| TrackSize::parse(context, i)).unwrap_or_default();
values.push(TrackListValue::TrackSize(size));
- names = input.try(parse_line_names).unwrap_or_default();
- if let Ok(v) = input.try(parse_line_names) {
- let mut names_vec = names.into_vec();
- names_vec.extend(v.into_iter());
- names = names_vec.into();
- }
-
- string = match input.try(|i| i.expect_string().map(|s| s.as_ref().to_owned().into())) {
- Ok(s) => s,
- _ => { // only the named area determines whether we should bail out
- line_names.push(names.into());
+ let mut names = input.try(parse_line_names).unwrap_or_default();
+ let more_names = input.try(parse_line_names);
+
+ match input.try(|i| i.expect_string().map(|s| s.as_ref().to_owned().into())) {
+ Ok(string) => {
+ strings.push(string);
+ if let Ok(v) = more_names {
+ // We got `[names] [more_names] "string"` - merge the two name lists.
+ let mut names_vec = names.into_vec();
+ names_vec.extend(v.into_iter());
+ names = names_vec.into();
+ }
+ line_names.push(names);
+ },
+ Err(e) => {
+ if more_names.is_ok() {
+ // We've parsed `"string" [names] [more_names]` but then failed to parse another `"string"`.
+ // The grammar doesn't allow two trailing `<line-names>` so this is an invalid value.
+ return Err(e.into());
+ }
+ // only the named area determines whether we should bail out
+ line_names.push(names);
break
},
};
@@ -350,7 +395,7 @@
value
} else {
- GenericGridTemplateComponent::None
+ GridTemplateComponent::default()
};
Ok((
@@ -399,6 +444,9 @@
W: Write {
match *template_areas {
GridTemplateAreas::None => {
+ if template_rows.is_initial() && template_columns.is_initial() {
+ return GridTemplateComponent::default().to_css(dest);
+ }
template_rows.to_css(dest)?;
dest.write_str(" / ")?;
template_columns.to_css(dest)
@@ -455,8 +503,12 @@
}
string.to_css(dest)?;
- dest.write_str(" ")?;
- value.to_css(dest)?;
+
+ // If the track size is the initial value then it's redundant here.
+ if !value.is_initial() {
+ dest.write_str(" ")?;
+ value.to_css(dest)?;
+ }
}
if let Some(names) = names_iter.next() {
@@ -503,8 +555,8 @@
context: &ParserContext,
input: &mut Parser<'i, 't>,
) -> Result<Longhands, ParseError<'i>> {
- let mut temp_rows = GridTemplateComponent::None;
- let mut temp_cols = GridTemplateComponent::None;
+ let mut temp_rows = GridTemplateComponent::default();
+ let mut temp_cols = GridTemplateComponent::default();
let mut temp_areas = GridTemplateAreas::None;
let mut auto_rows = ImplicitGridTracks::default();
let mut auto_cols = ImplicitGridTracks::default();
@@ -577,8 +629,8 @@
impl<'a> ToCss for LonghandsToSerialize<'a> {
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write {
if *self.grid_template_areas != GridTemplateAreas::None ||
- (*self.grid_template_rows != GridTemplateComponent::None &&
- *self.grid_template_columns != GridTemplateComponent::None) ||
+ (!self.grid_template_rows.is_initial() &&
+ !self.grid_template_columns.is_initial()) ||
self.is_grid_template() {
return super::grid_template::serialize_grid_template(self.grid_template_rows,
self.grid_template_columns,
@@ -588,7 +640,7 @@
if self.grid_auto_flow.autoflow == AutoFlow::Column {
// It should fail to serialize if other branch of the if condition's values are set.
if !self.grid_auto_rows.is_initial() ||
- *self.grid_template_columns != GridTemplateComponent::None {
+ !self.grid_template_columns.is_initial() {
return Ok(());
}
@@ -612,7 +664,7 @@
} else {
// It should fail to serialize if other branch of the if condition's values are set.
if !self.grid_auto_columns.is_initial() ||
- *self.grid_template_rows != GridTemplateComponent::None {
+ !self.grid_template_rows.is_initial() {
return Ok(());
}
diff --git a/components/style/rule_cache.rs b/components/style/rule_cache.rs
index 117f63f9ea2..24039fb94f7 100644
--- a/components/style/rule_cache.rs
+++ b/components/style/rule_cache.rs
@@ -26,9 +26,7 @@ pub struct RuleCacheConditions {
impl RuleCacheConditions {
/// Sets the style as depending in the font-size value.
pub fn set_font_size_dependency(&mut self, font_size: NonNegativeLength) {
- if let Some(f) = &self.font_size {
- debug_assert_eq!(*f, font_size);
- }
+ debug_assert!(self.font_size.map_or(true, |f| f == font_size));
self.font_size = Some(font_size);
}
diff --git a/components/style/rule_collector.rs b/components/style/rule_collector.rs
index f536b80b5c5..ab1fb88d7f2 100644
--- a/components/style/rule_collector.rs
+++ b/components/style/rule_collector.rs
@@ -13,6 +13,7 @@ use crate::selector_parser::PseudoElement;
use crate::shared_lock::Locked;
use crate::stylesheets::Origin;
use crate::stylist::{AuthorStylesEnabled, Rule, RuleInclusion, Stylist};
+use crate::Atom;
use selectors::matching::{ElementSelectorFlags, MatchingContext, MatchingMode};
use servo_arc::ArcBorrow;
use smallvec::SmallVec;
@@ -79,7 +80,6 @@ where
rules: &'a mut ApplicableDeclarationList,
context: &'a mut MatchingContext<'b, E::Impl>,
flags_setter: &'a mut F,
- shadow_cascade_order: ShadowCascadeOrder,
matches_user_and_author_rules: bool,
matches_document_author_rules: bool,
}
@@ -132,7 +132,6 @@ where
context,
flags_setter,
rules,
- shadow_cascade_order: 0,
matches_user_and_author_rules,
matches_document_author_rules: matches_user_and_author_rules,
}
@@ -142,7 +141,7 @@ where
let cascade_level = match origin {
Origin::UserAgent => CascadeLevel::UANormal,
Origin::User => CascadeLevel::UserNormal,
- Origin::Author => CascadeLevel::SameTreeAuthorNormal,
+ Origin::Author => CascadeLevel::same_tree_author_normal(),
};
let cascade_data = self.stylist.cascade_data().borrow_for_origin(origin);
@@ -198,7 +197,6 @@ where
) {
debug_assert!(shadow_host.shadow_root().is_some());
self.collect_rules_internal(Some(shadow_host), map, cascade_level);
- self.shadow_cascade_order += 1;
}
#[inline]
@@ -212,7 +210,6 @@ where
let rule_hash_target = self.rule_hash_target;
let rules = &mut self.rules;
let flags_setter = &mut self.flags_setter;
- let shadow_cascade_order = self.shadow_cascade_order;
let start = rules.len();
self.context.with_shadow_host(shadow_host, |context| {
map.get_all_matching_rules(
@@ -222,16 +219,18 @@ where
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
);
});
sort_rules_from(rules, start);
}
- /// Collects the rules for the ::slotted pseudo-element.
- fn collect_slotted_rules(&mut self) {
+ /// Collects the rules for the ::slotted pseudo-element and the :host
+ /// pseudo-class.
+ fn collect_host_and_slotted_rules(&mut self) {
let mut slots = SmallVec::<[_; 3]>::new();
let mut current = self.rule_hash_target.assigned_slot();
+ let mut shadow_cascade_order = ShadowCascadeOrder::for_outermost_shadow_tree();
+
while let Some(slot) = current {
debug_assert!(
self.matches_user_and_author_rules,
@@ -239,11 +238,16 @@ where
);
slots.push(slot);
current = slot.assigned_slot();
+ shadow_cascade_order.dec();
}
+ self.collect_host_rules(shadow_cascade_order);
+
// Match slotted rules in reverse order, so that the outer slotted rules
// come before the inner rules (and thus have less priority).
for slot in slots.iter().rev() {
+ shadow_cascade_order.inc();
+
let shadow = slot.containing_shadow().unwrap();
let data = match shadow.style_data() {
Some(d) => d,
@@ -253,10 +257,13 @@ where
Some(r) => r,
None => continue,
};
+
self.collect_rules_in_shadow_tree(
shadow.host(),
slotted_rules,
- CascadeLevel::InnerShadowNormal,
+ CascadeLevel::AuthorNormal {
+ shadow_cascade_order,
+ },
);
}
}
@@ -277,12 +284,12 @@ where
let cascade_data = containing_shadow.style_data();
let host = containing_shadow.host();
if let Some(map) = cascade_data.and_then(|data| data.normal_rules(self.pseudo_element)) {
- self.collect_rules_in_shadow_tree(host, map, CascadeLevel::SameTreeAuthorNormal);
+ self.collect_rules_in_shadow_tree(host, map, CascadeLevel::same_tree_author_normal());
}
}
/// Collects the rules for the :host pseudo-class.
- fn collect_host_rules(&mut self) {
+ fn collect_host_rules(&mut self, shadow_cascade_order: ShadowCascadeOrder) {
let shadow = match self.rule_hash_target.shadow_root() {
Some(s) => s,
None => return,
@@ -307,7 +314,9 @@ where
self.collect_rules_in_shadow_tree(
rule_hash_target,
host_rules,
- CascadeLevel::InnerShadowNormal,
+ CascadeLevel::AuthorNormal {
+ shadow_cascade_order,
+ },
);
}
@@ -324,68 +333,89 @@ where
return;
}
- let shadow = match self.rule_hash_target.containing_shadow() {
+ let mut inner_shadow = match self.rule_hash_target.containing_shadow() {
Some(s) => s,
None => return,
};
- let host = shadow.host();
- let containing_shadow = host.containing_shadow();
- let part_rules = match containing_shadow {
- Some(shadow) => shadow
- .style_data()
- .and_then(|data| data.part_rules(self.pseudo_element)),
- None => self
- .stylist
- .cascade_data()
- .borrow_for_origin(Origin::Author)
- .part_rules(self.pseudo_element),
- };
+ let mut shadow_cascade_order = ShadowCascadeOrder::for_innermost_containing_tree();
- // TODO(emilio): SameTreeAuthorNormal is a bit of a lie here, we may
- // need an OuterTreeAuthorNormal cascade level or such, and change the
- // cascade order, if we allow to forward parts to even outer trees.
- //
- // Though the current thing kinda works because we apply them after
- // the outer tree, so as long as we don't allow forwarding we're
- // good.
- if let Some(part_rules) = part_rules {
- let containing_host = containing_shadow.map(|s| s.host());
- let element = self.element;
- let rule_hash_target = self.rule_hash_target;
- let rules = &mut self.rules;
- let flags_setter = &mut self.flags_setter;
- let shadow_cascade_order = self.shadow_cascade_order;
- let cascade_level = CascadeLevel::SameTreeAuthorNormal;
- let start = rules.len();
- self.context.with_shadow_host(containing_host, |context| {
- rule_hash_target.each_part(|p| {
- if let Some(part_rules) = part_rules.get(p) {
- SelectorMap::get_matching_rules(
- element,
- &part_rules,
- rules,
- context,
- flags_setter,
- cascade_level,
- shadow_cascade_order,
- );
+ let mut parts = SmallVec::<[Atom; 3]>::new();
+ self.rule_hash_target.each_part(|p| parts.push(p.clone()));
+
+ loop {
+ if parts.is_empty() {
+ return;
+ }
+
+ let outer_shadow = inner_shadow.host().containing_shadow();
+ let part_rules = match outer_shadow {
+ Some(shadow) => shadow
+ .style_data()
+ .and_then(|data| data.part_rules(self.pseudo_element)),
+ None => self
+ .stylist
+ .cascade_data()
+ .borrow_for_origin(Origin::Author)
+ .part_rules(self.pseudo_element),
+ };
+
+ if let Some(part_rules) = part_rules {
+ let containing_host = outer_shadow.map(|s| s.host());
+ let element = self.element;
+ let rules = &mut self.rules;
+ let flags_setter = &mut self.flags_setter;
+ let cascade_level = CascadeLevel::AuthorNormal {
+ shadow_cascade_order,
+ };
+ let start = rules.len();
+ self.context.with_shadow_host(containing_host, |context| {
+ for p in &parts {
+ if let Some(part_rules) = part_rules.get(p) {
+ SelectorMap::get_matching_rules(
+ element,
+ &part_rules,
+ rules,
+ context,
+ flags_setter,
+ cascade_level,
+ );
+ }
}
});
+ sort_rules_from(rules, start);
+ shadow_cascade_order.inc();
+ }
+
+ let inner_shadow_host = inner_shadow.host();
+
+ inner_shadow = match outer_shadow {
+ Some(s) => s,
+ None => break, // Nowhere to export to.
+ };
+
+ parts.retain(|part| {
+ let exported_part = match inner_shadow_host.exported_part(part) {
+ Some(part) => part,
+ None => return false,
+ };
+ std::mem::replace(part, exported_part);
+ true
});
- sort_rules_from(rules, start);
}
}
- fn collect_style_attribute_and_animation_rules(&mut self) {
+ fn collect_style_attribute(&mut self) {
if let Some(sa) = self.style_attribute {
self.rules
.push(ApplicableDeclarationBlock::from_declarations(
sa.clone_arc(),
- CascadeLevel::StyleAttributeNormal,
+ CascadeLevel::same_tree_author_normal(),
));
}
+ }
+ fn collect_animation_rules(&mut self) {
if let Some(so) = self.smil_override {
self.rules
.push(ApplicableDeclarationBlock::from_declarations(
@@ -431,11 +461,11 @@ where
if self.stylist.author_styles_enabled() == AuthorStylesEnabled::No {
return;
}
- self.collect_host_rules();
- self.collect_slotted_rules();
+ self.collect_host_and_slotted_rules();
self.collect_normal_rules_from_containing_shadow_tree();
self.collect_document_author_rules();
+ self.collect_style_attribute();
self.collect_part_rules();
- self.collect_style_attribute_and_animation_rules();
+ self.collect_animation_rules();
}
}
diff --git a/components/style/rule_tree/mod.rs b/components/style/rule_tree/mod.rs
index 02ebeed0452..7cb153de375 100644
--- a/components/style/rule_tree/mod.rs
+++ b/components/style/rule_tree/mod.rs
@@ -169,15 +169,60 @@ const FREE_LIST_SENTINEL: *mut RuleNode = 0x01 as *mut RuleNode;
/// another thread is currently adding an entry). We spin if we find this value.
const FREE_LIST_LOCKED: *mut RuleNode = 0x02 as *mut RuleNode;
-/// A counter to track how many inner shadow roots rules deep we are.
-///
-/// This is used to handle:
+/// A counter to track how many shadow root rules deep we are. This is used to
+/// handle:
///
/// https://drafts.csswg.org/css-scoping/#shadow-cascading
///
-/// In particular, it'd be `0` for the innermost shadow host, `1` for the next,
-/// and so on.
-pub type ShadowCascadeOrder = u8;
+/// See the static functions for the meaning of different values.
+#[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, Ord, PartialEq, PartialOrd)]
+pub struct ShadowCascadeOrder(i8);
+
+impl ShadowCascadeOrder {
+ /// A level for the outermost shadow tree (the shadow tree we own, and the
+ /// ones from the slots we're slotted in).
+ #[inline]
+ pub fn for_outermost_shadow_tree() -> Self {
+ Self(-1)
+ }
+
+ /// A level for the element's tree.
+ #[inline]
+ fn for_same_tree() -> Self {
+ Self(0)
+ }
+
+ /// A level for the innermost containing tree (the one closest to the
+ /// element).
+ #[inline]
+ pub fn for_innermost_containing_tree() -> Self {
+ Self(1)
+ }
+
+ /// Decrement the level, moving inwards. We should only move inwards if
+ /// we're traversing slots.
+ #[inline]
+ pub fn dec(&mut self) {
+ debug_assert!(self.0 < 0);
+ self.0 = self.0.saturating_sub(1);
+ }
+
+ /// The level, moving inwards. We should only move inwards if we're
+ /// traversing slots.
+ #[inline]
+ pub fn inc(&mut self) {
+ debug_assert_ne!(self.0, -1);
+ self.0 = self.0.saturating_add(1);
+ }
+}
+
+impl std::ops::Neg for ShadowCascadeOrder {
+ type Output = Self;
+ #[inline]
+ fn neg(self) -> Self {
+ Self(self.0.neg())
+ }
+}
impl RuleTree {
/// Construct a new rule tree.
@@ -215,26 +260,20 @@ impl RuleTree {
guards: &StylesheetGuards,
) -> StrongRuleNode
where
- I: Iterator<Item = (StyleSource, CascadeLevel, ShadowCascadeOrder)>,
+ I: Iterator<Item = (StyleSource, CascadeLevel)>,
{
use self::CascadeLevel::*;
let mut current = self.root.clone();
- let mut last_level = current.get().level;
let mut found_important = false;
- let mut important_style_attr = None;
- let mut important_same_tree = SmallVec::<[StyleSource; 4]>::new();
- let mut important_inner_shadow = SmallVec::<[SmallVec<[StyleSource; 4]>; 4]>::new();
- important_inner_shadow.push(SmallVec::new());
+ let mut important_author = SmallVec::<[(StyleSource, ShadowCascadeOrder); 4]>::new();
let mut important_user = SmallVec::<[StyleSource; 4]>::new();
let mut important_ua = SmallVec::<[StyleSource; 4]>::new();
let mut transition = None;
- let mut last_cascade_order = 0;
- for (source, level, shadow_cascade_order) in iter {
- debug_assert!(level >= last_level, "Not really ordered");
+ for (source, level) in iter {
debug_assert!(!level.is_important(), "Important levels handled internally");
let any_important = {
let pdb = source.read(level.guard(guards));
@@ -244,29 +283,13 @@ impl RuleTree {
if any_important {
found_important = true;
match level {
- InnerShadowNormal => {
- debug_assert!(
- shadow_cascade_order >= last_cascade_order,
- "Not really ordered"
- );
- if shadow_cascade_order > last_cascade_order &&
- !important_inner_shadow.last().unwrap().is_empty()
- {
- last_cascade_order = shadow_cascade_order;
- important_inner_shadow.push(SmallVec::new());
- }
- important_inner_shadow
- .last_mut()
- .unwrap()
- .push(source.clone())
+ AuthorNormal {
+ shadow_cascade_order,
+ } => {
+ important_author.push((source.clone(), shadow_cascade_order));
},
- SameTreeAuthorNormal => important_same_tree.push(source.clone()),
UANormal => important_ua.push(source.clone()),
UserNormal => important_user.push(source.clone()),
- StyleAttributeNormal => {
- debug_assert!(important_style_attr.is_none());
- important_style_attr = Some(source.clone());
- },
_ => {},
};
}
@@ -290,7 +313,6 @@ impl RuleTree {
} else {
current = current.ensure_child(self.root.downgrade(), source, level);
}
- last_level = level;
}
// Early-return in the common case of no !important declarations.
@@ -298,23 +320,39 @@ impl RuleTree {
return current;
}
- //
// Insert important declarations, in order of increasing importance,
// followed by any transition rule.
//
-
- for source in important_same_tree.drain() {
- current = current.ensure_child(self.root.downgrade(), source, SameTreeAuthorImportant);
- }
-
- if let Some(source) = important_style_attr {
- current = current.ensure_child(self.root.downgrade(), source, StyleAttributeImportant);
+ // Inner shadow wins over same-tree, which wins over outer-shadow.
+ //
+ // We negate the shadow cascade order to preserve the right PartialOrd
+ // behavior.
+ if !important_author.is_empty() &&
+ important_author.first().unwrap().1 != important_author.last().unwrap().1
+ {
+ // We only need to sort if the important rules come from
+ // different trees, but we need this sort to be stable.
+ //
+ // FIXME(emilio): This could maybe be smarter, probably by chunking
+ // the important rules while inserting, and iterating the outer
+ // chunks in reverse order.
+ //
+ // That is, if we have rules with levels like: -1 -1 -1 0 0 0 1 1 1,
+ // we're really only sorting the chunks, while keeping elements
+ // inside the same chunk already sorted. Seems like we could try to
+ // keep a SmallVec-of-SmallVecs with the chunks and just iterate the
+ // outer in reverse.
+ important_author.sort_by_key(|&(_, order)| -order);
}
- for mut list in important_inner_shadow.drain().rev() {
- for source in list.drain() {
- current = current.ensure_child(self.root.downgrade(), source, InnerShadowImportant);
- }
+ for (source, shadow_cascade_order) in important_author.drain() {
+ current = current.ensure_child(
+ self.root.downgrade(),
+ source,
+ AuthorImportant {
+ shadow_cascade_order: -shadow_cascade_order,
+ },
+ );
}
for source in important_user.drain() {
@@ -359,11 +397,8 @@ impl RuleTree {
I: Iterator<Item = (StyleSource, CascadeLevel)>,
{
let mut current = from;
- let mut last_level = current.get().level;
for (source, level) in iter {
- debug_assert!(last_level <= level, "Not really ordered");
current = current.ensure_child(self.root.downgrade(), source, level);
- last_level = level;
}
current
}
@@ -439,7 +474,6 @@ impl RuleTree {
guards: &StylesheetGuards,
important_rules_changed: &mut bool,
) -> Option<StrongRuleNode> {
- debug_assert!(level.is_unique_per_element());
// TODO(emilio): Being smarter with lifetimes we could avoid a bit of
// the refcount churn.
let mut current = path.clone();
@@ -468,7 +502,11 @@ impl RuleTree {
if current.get().level == level {
*important_rules_changed |= level.is_important();
- if let Some(pdb) = pdb {
+ let current_decls = current.get().source.as_ref().unwrap().as_declarations();
+
+ // If the only rule at the level we're replacing is exactly the
+ // same as `pdb`, we're done, and `path` is still valid.
+ if let (Some(ref pdb), Some(ref current_decls)) = (pdb, current_decls) {
// If the only rule at the level we're replacing is exactly the
// same as `pdb`, we're done, and `path` is still valid.
//
@@ -478,25 +516,17 @@ impl RuleTree {
// also equally valid. This is less likely, and would require an
// in-place mutation of the source, which is, at best, fiddly,
// so let's skip it for now.
- let current_decls = current
- .get()
- .source
- .as_ref()
- .unwrap()
- .as_declarations()
- .expect("Replacing non-declarations style?");
- let is_here_already = ArcBorrow::ptr_eq(&pdb, &current_decls);
+ let is_here_already = ArcBorrow::ptr_eq(pdb, current_decls);
if is_here_already {
debug!("Picking the fast path in rule replacement");
return None;
}
}
- current = current.parent().unwrap().clone();
+
+ if current_decls.is_some() {
+ current = current.parent().unwrap().clone();
+ }
}
- debug_assert!(
- current.get().level != level,
- "Multiple rules should've been replaced?"
- );
// Insert the rule if it's relevant at this level in the cascade.
//
@@ -611,61 +641,127 @@ const RULE_TREE_GC_INTERVAL: usize = 300;
/// tree may affect an element connected to the document or an "outer" shadow
/// tree.
///
-/// We need to differentiate between rules from the same tree and "inner" shadow
-/// trees in order to be able to find the right position for the style attribute
-/// easily. Otherwise we wouldn't be able to avoid selector-matching when a
-/// style attribute is added or removed.
-///
/// [1]: https://drafts.csswg.org/css-cascade/#cascade-origin
/// [2]: https://drafts.csswg.org/css-cascade/#preshint
/// [3]: https://html.spec.whatwg.org/multipage/#presentational-hints
/// [4]: https://drafts.csswg.org/css-scoping/#shadow-cascading
#[repr(u8)]
-#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, PartialOrd)]
-#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
+#[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, PartialEq, PartialOrd)]
pub enum CascadeLevel {
/// Normal User-Agent rules.
- UANormal = 0,
+ UANormal,
/// User normal rules.
UserNormal,
/// Presentational hints.
PresHints,
- /// Shadow DOM styles from "inner" shadow trees.
- ///
- /// See above for why this is needed instead of merging InnerShadowNormal,
- /// SameTreeAuthorNormal and StyleAttributeNormal inside something like
- /// AuthorNormal.
- InnerShadowNormal,
- /// Author normal rules from the same tree the element is in.
- SameTreeAuthorNormal,
- /// Style attribute normal rules.
- StyleAttributeNormal,
+ /// Shadow DOM styles from author styles.
+ AuthorNormal {
+ /// The order in the shadow tree hierarchy. This number is relative to
+ /// the tree of the element, and thus the only invariants that need to
+ /// be preserved is:
+ ///
+ /// * Zero is the same tree as the element that matched the rule. This
+ /// is important so that we can optimize style attribute insertions.
+ ///
+ /// * The levels are ordered in accordance with
+ /// https://drafts.csswg.org/css-scoping/#shadow-cascading
+ shadow_cascade_order: ShadowCascadeOrder,
+ },
/// SVG SMIL animations.
SMILOverride,
/// CSS animations and script-generated animations.
Animations,
- /// Author-supplied important rules from the same tree the element came
- /// from.
- SameTreeAuthorImportant,
- /// Style attribute important rules.
- StyleAttributeImportant,
- /// Shadow DOM important rules.
- InnerShadowImportant,
+ /// Author-supplied important rules.
+ AuthorImportant {
+ /// The order in the shadow tree hierarchy, inverted, so that PartialOrd
+ /// does the right thing.
+ shadow_cascade_order: ShadowCascadeOrder,
+ },
/// User important rules.
UserImportant,
/// User-agent important rules.
UAImportant,
/// Transitions
- ///
- /// NB: If this changes from being last, change from_byte below.
Transitions,
}
impl CascadeLevel {
- /// Converts a raw byte to a CascadeLevel.
- pub unsafe fn from_byte(byte: u8) -> Self {
- debug_assert!(byte <= CascadeLevel::Transitions as u8);
- mem::transmute(byte)
+ /// Pack this cascade level in a single byte.
+ ///
+ /// We have 10 levels, which we can represent with 4 bits, and then a
+ /// cascade order optionally, which we can clamp to three bits max, and
+ /// represent with a fourth bit for the sign.
+ ///
+ /// So this creates: SOOODDDD
+ ///
+ /// Where `S` is the sign of the order (one if negative, 0 otherwise), `O`
+ /// is the absolute value of the order, and `D`s are the discriminant.
+ #[inline]
+ pub fn to_byte_lossy(&self) -> u8 {
+ let (discriminant, order) = match *self {
+ Self::UANormal => (0, 0),
+ Self::UserNormal => (1, 0),
+ Self::PresHints => (2, 0),
+ Self::AuthorNormal {
+ shadow_cascade_order,
+ } => (3, shadow_cascade_order.0),
+ Self::SMILOverride => (4, 0),
+ Self::Animations => (5, 0),
+ Self::AuthorImportant {
+ shadow_cascade_order,
+ } => (6, shadow_cascade_order.0),
+ Self::UserImportant => (7, 0),
+ Self::UAImportant => (8, 0),
+ Self::Transitions => (9, 0),
+ };
+
+ debug_assert_eq!(discriminant & 0xf, discriminant);
+ if order == 0 {
+ return discriminant;
+ }
+
+ let negative = order < 0;
+ let value = std::cmp::min(order.abs() as u8, 0b111);
+ (negative as u8) << 7 | value << 4 | discriminant
+ }
+
+ /// Convert back from the single-byte representation of the cascade level
+ /// explained above.
+ #[inline]
+ pub fn from_byte(b: u8) -> Self {
+ let order = {
+ let abs = ((b & 0b01110000) >> 4) as i8;
+ let negative = b & 0b10000000 != 0;
+ if negative {
+ -abs
+ } else {
+ abs
+ }
+ };
+ let discriminant = b & 0xf;
+ let level = match discriminant {
+ 0 => Self::UANormal,
+ 1 => Self::UserNormal,
+ 2 => Self::PresHints,
+ 3 => {
+ return Self::AuthorNormal {
+ shadow_cascade_order: ShadowCascadeOrder(order),
+ }
+ },
+ 4 => Self::SMILOverride,
+ 5 => Self::Animations,
+ 6 => {
+ return Self::AuthorImportant {
+ shadow_cascade_order: ShadowCascadeOrder(order),
+ }
+ },
+ 7 => Self::UserImportant,
+ 8 => Self::UAImportant,
+ 9 => Self::Transitions,
+ _ => unreachable!("Didn't expect {} as a discriminant", discriminant),
+ };
+ debug_assert_eq!(order, 0, "Didn't expect an order value for {:?}", level);
+ level
}
/// Select a lock guard for this level
@@ -679,16 +775,21 @@ impl CascadeLevel {
}
}
- /// Returns whether this cascade level is unique per element, in which case
- /// we can replace the path in the cascade without fear.
- pub fn is_unique_per_element(&self) -> bool {
- match *self {
- CascadeLevel::Transitions |
- CascadeLevel::Animations |
- CascadeLevel::SMILOverride |
- CascadeLevel::StyleAttributeNormal |
- CascadeLevel::StyleAttributeImportant => true,
- _ => false,
+ /// Returns the cascade level for author important declarations from the
+ /// same tree as the element.
+ #[inline]
+ pub fn same_tree_author_important() -> Self {
+ CascadeLevel::AuthorImportant {
+ shadow_cascade_order: ShadowCascadeOrder::for_same_tree(),
+ }
+ }
+
+ /// Returns the cascade level for author normal declarations from the same
+ /// tree as the element.
+ #[inline]
+ pub fn same_tree_author_normal() -> Self {
+ CascadeLevel::AuthorNormal {
+ shadow_cascade_order: ShadowCascadeOrder::for_same_tree(),
}
}
@@ -697,9 +798,7 @@ impl CascadeLevel {
#[inline]
pub fn is_important(&self) -> bool {
match *self {
- CascadeLevel::SameTreeAuthorImportant |
- CascadeLevel::InnerShadowImportant |
- CascadeLevel::StyleAttributeImportant |
+ CascadeLevel::AuthorImportant { .. } |
CascadeLevel::UserImportant |
CascadeLevel::UAImportant => true,
_ => false,
@@ -724,14 +823,10 @@ impl CascadeLevel {
CascadeLevel::UAImportant | CascadeLevel::UANormal => Origin::UserAgent,
CascadeLevel::UserImportant | CascadeLevel::UserNormal => Origin::User,
CascadeLevel::PresHints |
- CascadeLevel::InnerShadowNormal |
- CascadeLevel::SameTreeAuthorNormal |
- CascadeLevel::StyleAttributeNormal |
+ CascadeLevel::AuthorNormal { .. } |
+ CascadeLevel::AuthorImportant { .. } |
CascadeLevel::SMILOverride |
CascadeLevel::Animations |
- CascadeLevel::SameTreeAuthorImportant |
- CascadeLevel::StyleAttributeImportant |
- CascadeLevel::InnerShadowImportant |
CascadeLevel::Transitions => Origin::Author,
}
}
@@ -1146,6 +1241,15 @@ impl StrongRuleNode {
) -> StrongRuleNode {
use parking_lot::RwLockUpgradableReadGuard;
+ debug_assert!(
+ self.get().level <= level,
+ "Should be ordered (instead {:?} > {:?}), from {:?} and {:?}",
+ self.get().level,
+ level,
+ self.get().source,
+ source,
+ );
+
let key = ChildKey(level, source.key());
let read_guard = self.get().children.upgradable_read();
@@ -1448,55 +1552,36 @@ impl StrongRuleNode {
}
});
- match node.cascade_level() {
- // Non-author rules:
- CascadeLevel::UANormal |
- CascadeLevel::UAImportant |
- CascadeLevel::UserNormal |
- CascadeLevel::UserImportant => {
- for (id, declaration) in longhands {
- if properties.contains(id) {
- // This property was set by a non-author rule.
- // Stop looking for it in this element's rule
- // nodes.
- properties.remove(id);
-
- // However, if it is inherited, then it might be
- // inherited from an author rule from an
- // ancestor element's rule nodes.
- if declaration.get_css_wide_keyword() ==
- Some(CSSWideKeyword::Inherit)
- {
- have_explicit_ua_inherit = true;
- inherited_properties.insert(id);
- }
- }
- }
- },
- // Author rules:
- CascadeLevel::PresHints |
- CascadeLevel::SameTreeAuthorNormal |
- CascadeLevel::InnerShadowNormal |
- CascadeLevel::StyleAttributeNormal |
- CascadeLevel::SMILOverride |
- CascadeLevel::Animations |
- CascadeLevel::SameTreeAuthorImportant |
- CascadeLevel::InnerShadowImportant |
- CascadeLevel::StyleAttributeImportant |
- CascadeLevel::Transitions => {
- for (id, declaration) in longhands {
- if properties.contains(id) {
- if !author_colors_allowed {
- if let PropertyDeclaration::BackgroundColor(ref color) =
- *declaration
- {
- return *color == Color::transparent();
- }
- }
- return true;
+ let is_author = node.cascade_level().origin() == Origin::Author;
+ for (id, declaration) in longhands {
+ if !properties.contains(id) {
+ continue;
+ }
+
+ if is_author {
+ if !author_colors_allowed {
+ // FIXME(emilio): this looks wrong, this should
+ // do: if color is not transparent, then return
+ // true, or something.
+ if let PropertyDeclaration::BackgroundColor(ref color) = *declaration {
+ return *color == Color::transparent();
}
}
- },
+ return true;
+ }
+
+ // This property was set by a non-author rule.
+ // Stop looking for it in this element's rule
+ // nodes.
+ properties.remove(id);
+
+ // However, if it is inherited, then it might be
+ // inherited from an author rule from an
+ // ancestor element's rule nodes.
+ if declaration.get_css_wide_keyword() == Some(CSSWideKeyword::Inherit) {
+ have_explicit_ua_inherit = true;
+ inherited_properties.insert(id);
+ }
}
}
diff --git a/components/style/selector_map.rs b/components/style/selector_map.rs
index 52b939e0219..cd99852861c 100644
--- a/components/style/selector_map.rs
+++ b/components/style/selector_map.rs
@@ -10,7 +10,7 @@ use crate::context::QuirksMode;
use crate::dom::TElement;
use crate::hash::map as hash_map;
use crate::hash::{HashMap, HashSet};
-use crate::rule_tree::{CascadeLevel, ShadowCascadeOrder};
+use crate::rule_tree::CascadeLevel;
use crate::selector_parser::SelectorImpl;
use crate::stylist::Rule;
use crate::{Atom, LocalName, Namespace, WeakAtom};
@@ -171,7 +171,6 @@ impl SelectorMap<Rule> {
context: &mut MatchingContext<E::Impl>,
flags_setter: &mut F,
cascade_level: CascadeLevel,
- shadow_cascade_order: ShadowCascadeOrder,
) where
E: TElement,
F: FnMut(&E, ElementSelectorFlags),
@@ -190,7 +189,6 @@ impl SelectorMap<Rule> {
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
);
}
@@ -203,7 +201,6 @@ impl SelectorMap<Rule> {
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
)
}
}
@@ -217,7 +214,6 @@ impl SelectorMap<Rule> {
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
)
}
});
@@ -230,7 +226,6 @@ impl SelectorMap<Rule> {
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
)
}
@@ -242,7 +237,6 @@ impl SelectorMap<Rule> {
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
)
}
@@ -253,7 +247,6 @@ impl SelectorMap<Rule> {
context,
flags_setter,
cascade_level,
- shadow_cascade_order,
);
}
@@ -265,7 +258,6 @@ impl SelectorMap<Rule> {
context: &mut MatchingContext<E::Impl>,
flags_setter: &mut F,
cascade_level: CascadeLevel,
- shadow_cascade_order: ShadowCascadeOrder,
) where
E: TElement,
F: FnMut(&E, ElementSelectorFlags),
@@ -279,9 +271,7 @@ impl SelectorMap<Rule> {
context,
flags_setter,
) {
- matching_rules.push(
- rule.to_applicable_declaration_block(cascade_level, shadow_cascade_order),
- );
+ matching_rules.push(rule.to_applicable_declaration_block(cascade_level));
}
}
}
diff --git a/components/style/servo/selector_parser.rs b/components/style/servo/selector_parser.rs
index 4fdd4d4ab37..977a6c59a85 100644
--- a/components/style/servo/selector_parser.rs
+++ b/components/style/servo/selector_parser.rs
@@ -173,6 +173,12 @@ impl PseudoElement {
false
}
+ /// Whether this pseudo-element is the ::-moz-color-swatch pseudo.
+ #[inline]
+ pub fn is_color_swatch(&self) -> bool {
+ false
+ }
+
/// Whether this pseudo-element is eagerly-cascaded.
#[inline]
pub fn is_eager(&self) -> bool {
@@ -694,6 +700,14 @@ impl ElementSnapshot for ServoElementSnapshot {
false
}
+ fn exported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
+ fn imported_part(&self, _: &Atom) -> Option<Atom> {
+ None
+ }
+
fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool {
self.get_attr(&ns!(), &local_name!("class"))
.map_or(false, |v| {
diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs
index ac528f4fb37..6a3dc75f4d8 100644
--- a/components/style/style_adjuster.rs
+++ b/components/style/style_adjuster.rs
@@ -63,43 +63,38 @@ where
{
use crate::Atom;
- // FIXME(emilio): This should be an actual static.
- lazy_static! {
- static ref SPECIAL_HTML_ELEMENTS: [Atom; 16] = [
- atom!("br"),
- atom!("wbr"),
- atom!("meter"),
- atom!("progress"),
- atom!("canvas"),
- atom!("embed"),
- atom!("object"),
- atom!("audio"),
- atom!("iframe"),
- atom!("img"),
- atom!("video"),
- atom!("frame"),
- atom!("frameset"),
- atom!("input"),
- atom!("textarea"),
- atom!("select"),
- ];
- }
+ const SPECIAL_HTML_ELEMENTS: [Atom; 16] = [
+ atom!("br"),
+ atom!("wbr"),
+ atom!("meter"),
+ atom!("progress"),
+ atom!("canvas"),
+ atom!("embed"),
+ atom!("object"),
+ atom!("audio"),
+ atom!("iframe"),
+ atom!("img"),
+ atom!("video"),
+ atom!("frame"),
+ atom!("frameset"),
+ atom!("input"),
+ atom!("textarea"),
+ atom!("select"),
+ ];
// https://drafts.csswg.org/css-display/#unbox-svg
//
// There's a note about "Unknown elements", but there's not a good way to
// know what that means, or to get that information from here, and no other
// UA implements this either.
- lazy_static! {
- static ref SPECIAL_SVG_ELEMENTS: [Atom; 6] = [
- atom!("svg"),
- atom!("a"),
- atom!("g"),
- atom!("use"),
- atom!("tspan"),
- atom!("textPath"),
- ];
- }
+ const SPECIAL_SVG_ELEMENTS: [Atom; 6] = [
+ atom!("svg"),
+ atom!("a"),
+ atom!("g"),
+ atom!("use"),
+ atom!("tspan"),
+ atom!("textPath"),
+ ];
// https://drafts.csswg.org/css-display/#unbox-html
if element.is_html_element() {
diff --git a/components/style/stylesheets/stylesheet.rs b/components/style/stylesheets/stylesheet.rs
index 15c60402be4..f5194d7d443 100644
--- a/components/style/stylesheets/stylesheet.rs
+++ b/components/style/stylesheets/stylesheet.rs
@@ -124,6 +124,7 @@ impl StylesheetContents {
url_data: UrlExtraData,
quirks_mode: QuirksMode,
) -> Self {
+ debug_assert!(rules.is_static());
Self {
rules,
origin,
@@ -144,6 +145,9 @@ impl StylesheetContents {
/// Measure heap usage.
#[cfg(feature = "gecko")]
pub fn size_of(&self, guard: &SharedRwLockReadGuard, ops: &mut MallocSizeOfOps) -> usize {
+ if self.rules.is_static() {
+ return 0;
+ }
// Measurement of other fields may be added later.
self.rules.unconditional_shallow_size_of(ops) +
self.rules.read_with(guard).size_of(guard, ops)
diff --git a/components/style/stylesheets/supports_rule.rs b/components/style/stylesheets/supports_rule.rs
index 721634dd9a3..6a522bcdb74 100644
--- a/components/style/stylesheets/supports_rule.rs
+++ b/components/style/stylesheets/supports_rule.rs
@@ -178,8 +178,7 @@ impl SupportsCondition {
while input.try(Parser::expect_whitespace).is_ok() {}
let pos = input.position();
let location = input.current_source_location();
- // FIXME: remove clone() when lifetimes are non-lexical
- match input.next()?.clone() {
+ match *input.next()? {
Token::ParenthesisBlock => {
let nested =
input.try(|input| input.parse_nested_block(parse_condition_or_declaration));
@@ -187,7 +186,8 @@ impl SupportsCondition {
return nested;
}
},
- Token::Function(ident) => {
+ Token::Function(ref ident) => {
+ let ident = ident.clone();
let nested = input.try(|input| {
input.parse_nested_block(|input| {
SupportsCondition::parse_functional(&ident, input)
@@ -197,7 +197,7 @@ impl SupportsCondition {
return nested;
}
},
- t => return Err(location.new_unexpected_token_error(t)),
+ ref t => return Err(location.new_unexpected_token_error(t.clone())),
}
input.parse_nested_block(consume_any_value)?;
Ok(SupportsCondition::FutureSyntax(
diff --git a/components/style/stylist.rs b/components/style/stylist.rs
index ab6fe309f3f..83db2ec4b17 100644
--- a/components/style/stylist.rs
+++ b/components/style/stylist.rs
@@ -18,7 +18,7 @@ use crate::properties::{self, CascadeMode, ComputedValues};
use crate::properties::{AnimationRules, PropertyDeclarationBlock};
use crate::rule_cache::{RuleCache, RuleCacheConditions};
use crate::rule_collector::{containing_shadow_ignoring_svg_use, RuleCollector};
-use crate::rule_tree::{CascadeLevel, RuleTree, ShadowCascadeOrder, StrongRuleNode, StyleSource};
+use crate::rule_tree::{CascadeLevel, RuleTree, StrongRuleNode, StyleSource};
use crate::selector_map::{PrecomputedHashMap, PrecomputedHashSet, SelectorMap, SelectorMapEntry};
use crate::selector_parser::{PerPseudoElementMap, PseudoElement, SelectorImpl, SnapshotMap};
use crate::shared_lock::{Locked, SharedRwLockReadGuard, StylesheetGuards};
@@ -1322,16 +1322,17 @@ impl Stylist {
let iter_declarations = || {
block
.declaration_importance_iter()
- .map(|(declaration, importance)| {
- debug_assert!(!importance.important());
- (declaration, CascadeLevel::StyleAttributeNormal)
- })
+ .map(|(declaration, _)| (declaration, Origin::Author))
};
let metrics = get_metrics_provider_for_product();
// We don't bother inserting these declarations in the rule tree, since
// it'd be quite useless and slow.
+ //
+ // TODO(emilio): Now that we fixed bug 1493420, we should consider
+ // reversing this as it shouldn't be slow anymore, and should avoid
+ // generating two instantiations of apply_declarations.
properties::apply_declarations::<E, _, _>(
&self.device,
/* pseudo = */ None,
@@ -1987,7 +1988,6 @@ impl CascadeData {
self.rules_source_order,
CascadeLevel::UANormal,
selector.specificity(),
- 0,
));
continue;
}
@@ -2323,16 +2323,9 @@ impl Rule {
pub fn to_applicable_declaration_block(
&self,
level: CascadeLevel,
- shadow_cascade_order: ShadowCascadeOrder,
) -> ApplicableDeclarationBlock {
let source = StyleSource::from_rule(self.style_rule.clone());
- ApplicableDeclarationBlock::new(
- source,
- self.source_order,
- level,
- self.specificity(),
- shadow_cascade_order,
- )
+ ApplicableDeclarationBlock::new(source, self.source_order, level, self.specificity())
}
/// Creates a new Rule.
diff --git a/components/style/values/animated/transform.rs b/components/style/values/animated/transform.rs
index 9ac64c3f2a7..aceb70f6766 100644
--- a/components/style/values/animated/transform.rs
+++ b/components/style/values/animated/transform.rs
@@ -1249,7 +1249,11 @@ impl Animate for ComputedRotate {
match (self, other) {
(&Rotate::None, &Rotate::None) => Ok(Rotate::None),
(&Rotate::Rotate3D(fx, fy, fz, fa), &Rotate::None) => {
- // No need to normalize `none`, so animate angle directly.
+ // We always normalize direction vector for rotate3d() first, so we should also
+ // apply the same rule for rotate property. In other words, we promote none into
+ // a 3d rotate, and normalize both direction vector first, and then do
+ // interpolation.
+ let (fx, fy, fz, fa) = transform::get_normalized_vector_and_angle(fx, fy, fz, fa);
Ok(Rotate::Rotate3D(
fx,
fy,
@@ -1258,7 +1262,8 @@ impl Animate for ComputedRotate {
))
},
(&Rotate::None, &Rotate::Rotate3D(tx, ty, tz, ta)) => {
- // No need to normalize `none`, so animate angle directly.
+ // Normalize direction vector first.
+ let (tx, ty, tz, ta) = transform::get_normalized_vector_and_angle(tx, ty, tz, ta);
Ok(Rotate::Rotate3D(
tx,
ty,
@@ -1368,8 +1373,7 @@ impl ComputedTranslate {
LengthPercentage::zero(),
Length::zero(),
),
- Translate::Translate3D(tx, ty, tz) => (tx, ty, tz),
- Translate::Translate(tx, ty) => (tx, ty, Length::zero()),
+ Translate::Translate(tx, ty, tz) => (tx, ty, tz),
}
}
}
@@ -1379,19 +1383,12 @@ impl Animate for ComputedTranslate {
fn animate(&self, other: &Self, procedure: Procedure) -> Result<Self, ()> {
match (self, other) {
(&Translate::None, &Translate::None) => Ok(Translate::None),
- (&Translate::Translate3D(_, ..), _) | (_, &Translate::Translate3D(_, ..)) => {
- let (from, to) = (self.resolve(), other.resolve());
- Ok(Translate::Translate3D(
- from.0.animate(&to.0, procedure)?,
- from.1.animate(&to.1, procedure)?,
- from.2.animate(&to.2, procedure)?,
- ))
- },
(&Translate::Translate(_, ..), _) | (_, &Translate::Translate(_, ..)) => {
let (from, to) = (self.resolve(), other.resolve());
Ok(Translate::Translate(
from.0.animate(&to.0, procedure)?,
from.1.animate(&to.1, procedure)?,
+ from.2.animate(&to.2, procedure)?,
))
},
}
@@ -1417,8 +1414,7 @@ impl ComputedScale {
// Unspecified scales default to 1
match *self {
Scale::None => (1.0, 1.0, 1.0),
- Scale::Scale3D(sx, sy, sz) => (sx, sy, sz),
- Scale::Scale(sx, sy) => (sx, sy, 1.),
+ Scale::Scale(sx, sy, sz) => (sx, sy, sz),
}
}
}
@@ -1428,7 +1424,7 @@ impl Animate for ComputedScale {
fn animate(&self, other: &Self, procedure: Procedure) -> Result<Self, ()> {
match (self, other) {
(&Scale::None, &Scale::None) => Ok(Scale::None),
- (&Scale::Scale3D(_, ..), _) | (_, &Scale::Scale3D(_, ..)) => {
+ (&Scale::Scale(_, ..), _) | (_, &Scale::Scale(_, ..)) => {
let (from, to) = (self.resolve(), other.resolve());
// For transform lists, we add by appending to the list of
// transform functions. However, ComputedScale cannot be
@@ -1436,24 +1432,12 @@ impl Animate for ComputedScale {
// result here.
if procedure == Procedure::Add {
// scale(x1,y1,z1)*scale(x2,y2,z2) = scale(x1*x2, y1*y2, z1*z2)
- return Ok(Scale::Scale3D(from.0 * to.0, from.1 * to.1, from.2 * to.2));
- }
- Ok(Scale::Scale3D(
- animate_multiplicative_factor(from.0, to.0, procedure)?,
- animate_multiplicative_factor(from.1, to.1, procedure)?,
- animate_multiplicative_factor(from.2, to.2, procedure)?,
- ))
- },
- (&Scale::Scale(_, ..), _) | (_, &Scale::Scale(_, ..)) => {
- let (from, to) = (self.resolve(), other.resolve());
- // As with Scale3D, addition needs special handling.
- if procedure == Procedure::Add {
- // scale(x1,y1)*scale(x2,y2) = scale(x1*x2, y1*y2)
- return Ok(Scale::Scale(from.0 * to.0, from.1 * to.1));
+ return Ok(Scale::Scale(from.0 * to.0, from.1 * to.1, from.2 * to.2));
}
Ok(Scale::Scale(
animate_multiplicative_factor(from.0, to.0, procedure)?,
animate_multiplicative_factor(from.1, to.1, procedure)?,
+ animate_multiplicative_factor(from.2, to.2, procedure)?,
))
},
}
diff --git a/components/style/values/generics/grid.rs b/components/style/values/generics/grid.rs
index 807136d98c4..5666e2c5818 100644
--- a/components/style/values/generics/grid.rs
+++ b/components/style/values/generics/grid.rs
@@ -58,7 +58,7 @@ pub use self::GenericGridLine as GridLine;
impl<Integer> GridLine<Integer>
where
- Integer: Zero,
+ Integer: PartialEq + Zero,
{
/// The `auto` value.
pub fn auto() -> Self {
@@ -73,11 +73,27 @@ where
pub fn is_auto(&self) -> bool {
self.ident == atom!("") && self.line_num.is_zero() && !self.is_span
}
+
+ /// Check whether this `<grid-line>` represents a `<custom-ident>` value.
+ pub fn is_ident_only(&self) -> bool {
+ self.ident != atom!("") && self.line_num.is_zero() && !self.is_span
+ }
+
+ /// Check if `self` makes `other` omittable according to the rules at:
+ /// https://drafts.csswg.org/css-grid/#propdef-grid-column
+ /// https://drafts.csswg.org/css-grid/#propdef-grid-area
+ pub fn can_omit(&self, other: &Self) -> bool {
+ if self.is_ident_only() {
+ self == other
+ } else {
+ other.is_auto()
+ }
+ }
}
impl<Integer> ToCss for GridLine<Integer>
where
- Integer: ToCss + Zero,
+ Integer: ToCss + PartialEq + Zero,
{
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
where
@@ -261,6 +277,19 @@ pub enum GenericTrackSize<L> {
pub use self::GenericTrackSize as TrackSize;
impl<L> TrackSize<L> {
+ /// The initial value.
+ const INITIAL_VALUE: Self = TrackSize::Breadth(TrackBreadth::Auto);
+
+ /// Returns the initial value.
+ pub const fn initial_value() -> Self {
+ Self::INITIAL_VALUE
+ }
+
+ /// Returns true if `self` is the initial value.
+ pub fn is_initial(&self) -> bool {
+ matches!(*self, TrackSize::Breadth(TrackBreadth::Auto)) // FIXME: can't use Self::INITIAL_VALUE here yet: https://github.com/rust-lang/rust/issues/66585
+ }
+
/// Check whether this is a `<fixed-size>`
///
/// <https://drafts.csswg.org/css-grid/#typedef-fixed-size>
@@ -286,17 +315,9 @@ impl<L> TrackSize<L> {
}
}
-impl<L: PartialEq> TrackSize<L> {
- /// Return true if it is `auto`.
- #[inline]
- pub fn is_auto(&self) -> bool {
- *self == TrackSize::Breadth(TrackBreadth::Auto)
- }
-}
-
impl<L> Default for TrackSize<L> {
fn default() -> Self {
- TrackSize::Breadth(TrackBreadth::Auto)
+ Self::initial_value()
}
}
@@ -513,9 +534,27 @@ pub enum GenericTrackListValue<LengthPercentage, Integer> {
pub use self::GenericTrackListValue as TrackListValue;
impl<L, I> TrackListValue<L, I> {
+ // FIXME: can't use TrackSize::initial_value() here b/c rustc error "is not yet stable as a const fn"
+ const INITIAL_VALUE: Self = TrackListValue::TrackSize(TrackSize::Breadth(TrackBreadth::Auto));
+
fn is_repeat(&self) -> bool {
matches!(*self, TrackListValue::TrackRepeat(..))
}
+
+ /// Returns true if `self` is the initial value.
+ pub fn is_initial(&self) -> bool {
+ matches!(
+ *self,
+ TrackListValue::TrackSize(TrackSize::Breadth(TrackBreadth::Auto))
+ ) // FIXME: can't use Self::INITIAL_VALUE here yet: https://github.com/rust-lang/rust/issues/66585
+ }
+}
+
+impl<L, I> Default for TrackListValue<L, I> {
+ #[inline]
+ fn default() -> Self {
+ Self::INITIAL_VALUE
+ }
}
/// A grid `<track-list>` type.
@@ -755,6 +794,9 @@ pub enum GenericGridTemplateComponent<L, I> {
pub use self::GenericGridTemplateComponent as GridTemplateComponent;
impl<L, I> GridTemplateComponent<L, I> {
+ /// The initial value.
+ const INITIAL_VALUE: Self = Self::None;
+
/// Returns length of the <track-list>s <track-size>
pub fn track_list_len(&self) -> usize {
match *self {
@@ -762,4 +804,16 @@ impl<L, I> GridTemplateComponent<L, I> {
_ => 0,
}
}
+
+ /// Returns true if `self` is the initial value.
+ pub fn is_initial(&self) -> bool {
+ matches!(*self, Self::None) // FIXME: can't use Self::INITIAL_VALUE here yet: https://github.com/rust-lang/rust/issues/66585
+ }
+}
+
+impl<L, I> Default for GridTemplateComponent<L, I> {
+ #[inline]
+ fn default() -> Self {
+ Self::INITIAL_VALUE
+ }
}
diff --git a/components/style/values/generics/transform.rs b/components/style/values/generics/transform.rs
index 4a8dc7f63fa..3322323e76e 100644
--- a/components/style/values/generics/transform.rs
+++ b/components/style/values/generics/transform.rs
@@ -700,40 +700,52 @@ where
pub enum GenericScale<Number> {
/// 'none'
None,
- /// '<number>{1,2}'
- Scale(Number, Number),
- /// '<number>{3}'
- Scale3D(Number, Number, Number),
+ /// '<number>{1,3}'
+ Scale(Number, Number, Number),
}
pub use self::GenericScale as Scale;
-impl<Number: ToCss + PartialEq> ToCss for Scale<Number> {
+impl<Number> ToCss for Scale<Number>
+where
+ Number: ToCss + PartialEq + Copy,
+ f32: From<Number>,
+{
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
where
W: fmt::Write,
+ f32: From<Number>,
{
match *self {
Scale::None => dest.write_str("none"),
- Scale::Scale(ref x, ref y) => {
+ Scale::Scale(ref x, ref y, ref z) => {
x.to_css(dest)?;
- if x != y {
+
+ let is_3d = f32::from(*z) != 1.0;
+ if is_3d || x != y {
dest.write_char(' ')?;
y.to_css(dest)?;
}
+
+ if is_3d {
+ dest.write_char(' ')?;
+ z.to_css(dest)?;
+ }
Ok(())
},
- Scale::Scale3D(ref x, ref y, ref z) => {
- x.to_css(dest)?;
- dest.write_char(' ')?;
- y.to_css(dest)?;
- dest.write_char(' ')?;
- z.to_css(dest)
- },
}
}
}
+#[inline]
+fn y_axis_and_z_axis_are_zero<LengthPercentage: Zero, Length: Zero>(
+ _: &LengthPercentage,
+ y: &LengthPercentage,
+ z: &Length,
+) -> bool {
+ y.is_zero() && z.is_zero()
+}
+
#[derive(
Clone,
Debug,
@@ -755,25 +767,24 @@ impl<Number: ToCss + PartialEq> ToCss for Scale<Number> {
/// or two values (per usual, if the second value is 0px, the default, it must
/// be omitted when serializing).
///
-/// If a 3d translation is specified, all three values must be serialized.
-///
-/// We don't omit the 3rd component even if it is 0px for now, and the
-/// related spec issue is https://github.com/w3c/csswg-drafts/issues/3305
+/// If a 3d translation is specified and the value can be expressed as 2d, we treat as 2d and
+/// serialize accoringly. Otherwise, we serialize all three values.
+/// https://github.com/w3c/csswg-drafts/issues/3305
///
/// <https://drafts.csswg.org/css-transforms-2/#individual-transforms>
pub enum GenericTranslate<LengthPercentage, Length>
where
LengthPercentage: Zero,
+ Length: Zero,
{
/// 'none'
None,
- /// '<length-percentage>' or '<length-percentage> <length-percentage>'
+ /// <length-percentage> [ <length-percentage> <length>? ]?
Translate(
LengthPercentage,
- #[css(skip_if = "Zero::is_zero")] LengthPercentage,
+ #[css(contextual_skip_if = "y_axis_and_z_axis_are_zero")] LengthPercentage,
+ #[css(skip_if = "Zero::is_zero")] Length,
),
- /// '<length-percentage> <length-percentage> <length>'
- Translate3D(LengthPercentage, LengthPercentage, Length),
}
pub use self::GenericTranslate as Translate;
diff --git a/components/style/values/specified/angle.rs b/components/style/values/specified/angle.rs
index 47c1a60772b..458f4178e59 100644
--- a/components/style/values/specified/angle.rs
+++ b/components/style/values/specified/angle.rs
@@ -208,24 +208,34 @@ impl Angle {
input: &mut Parser<'i, 't>,
allow_unitless_zero: AllowUnitlessZeroAngle,
) -> Result<Self, ParseError<'i>> {
- // FIXME: remove clone() when lifetimes are non-lexical
- let token = input.next()?.clone();
- match token {
+ let t = input.next()?;
+ match *t {
Token::Dimension {
value, ref unit, ..
} => {
- Angle::parse_dimension(value, unit, /* from_calc = */ false)
+ match Angle::parse_dimension(value, unit, /* from_calc = */ false) {
+ Ok(angle) => Ok(angle),
+ Err(()) => {
+ let t = t.clone();
+ Err(input.new_unexpected_token_error(t))
+ },
+ }
},
Token::Number { value, .. } if value == 0. => match allow_unitless_zero {
AllowUnitlessZeroAngle::Yes => Ok(Angle::zero()),
- AllowUnitlessZeroAngle::No => Err(()),
+ AllowUnitlessZeroAngle::No => {
+ let t = t.clone();
+ Err(input.new_unexpected_token_error(t))
+ },
},
Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
return input.parse_nested_block(|i| CalcNode::parse_angle(context, i));
},
- _ => Err(()),
+ ref t => {
+ let t = t.clone();
+ Err(input.new_unexpected_token_error(t))
+ },
}
- .map_err(|()| input.new_unexpected_token_error(token.clone()))
}
}
diff --git a/components/style/values/specified/box.rs b/components/style/values/specified/box.rs
index 58d51f8c006..7fd5a250e06 100644
--- a/components/style/values/specified/box.rs
+++ b/components/style/values/specified/box.rs
@@ -109,8 +109,6 @@ pub enum DisplayInside {
#[cfg(feature = "gecko")]
MozGridLine,
#[cfg(feature = "gecko")]
- MozStack,
- #[cfg(feature = "gecko")]
MozDeck,
#[cfg(feature = "gecko")]
MozGroupbox,
@@ -243,8 +241,6 @@ impl Display {
#[cfg(feature = "gecko")]
pub const MozGridLine: Self = Self::new(DisplayOutside::XUL, DisplayInside::MozGridLine);
#[cfg(feature = "gecko")]
- pub const MozStack: Self = Self::new(DisplayOutside::XUL, DisplayInside::MozStack);
- #[cfg(feature = "gecko")]
pub const MozDeck: Self = Self::new(DisplayOutside::XUL, DisplayInside::MozDeck);
#[cfg(feature = "gecko")]
pub const MozGroupbox: Self = Self::new(DisplayOutside::XUL, DisplayInside::MozGroupbox);
@@ -669,8 +665,6 @@ impl Parse for Display {
#[cfg(feature = "gecko")]
"-moz-grid-line" if moz_display_values_enabled(context) => Display::MozGridLine,
#[cfg(feature = "gecko")]
- "-moz-stack" if moz_display_values_enabled(context) => Display::MozStack,
- #[cfg(feature = "gecko")]
"-moz-deck" if moz_display_values_enabled(context) => Display::MozDeck,
#[cfg(feature = "gecko")]
"-moz-groupbox" if moz_display_values_enabled(context) => Display::MozGroupbox,
@@ -1157,7 +1151,9 @@ fn change_bits_for_longhand(longhand: LonghandId) -> WillChangeBits {
LonghandId::Opacity => WillChangeBits::OPACITY,
LonghandId::Transform => WillChangeBits::TRANSFORM,
#[cfg(feature = "gecko")]
- LonghandId::Translate | LonghandId::Rotate | LonghandId::Scale => WillChangeBits::TRANSFORM,
+ LonghandId::Translate | LonghandId::Rotate | LonghandId::Scale | LonghandId::OffsetPath => {
+ WillChangeBits::TRANSFORM
+ },
_ => WillChangeBits::empty(),
};
diff --git a/components/style/values/specified/calc.rs b/components/style/values/specified/calc.rs
index b101cd69de7..f9feb616fff 100644
--- a/components/style/values/specified/calc.rs
+++ b/components/style/values/specified/calc.rs
@@ -163,9 +163,8 @@ impl CalcNode {
expected_unit: CalcUnit,
) -> Result<Self, ParseError<'i>> {
let location = input.current_source_location();
- // FIXME: remove early returns when lifetimes are non-lexical
match (input.next()?, expected_unit) {
- (&Token::Number { value, .. }, _) => return Ok(CalcNode::Number(value)),
+ (&Token::Number { value, .. }, _) => Ok(CalcNode::Number(value)),
(
&Token::Dimension {
value, ref unit, ..
@@ -177,24 +176,18 @@ impl CalcNode {
value, ref unit, ..
},
CalcUnit::LengthPercentage,
- ) => {
- return NoCalcLength::parse_dimension(context, value, unit)
- .map(CalcNode::Length)
- .map_err(|()| {
- location.new_custom_error(StyleParseErrorKind::UnspecifiedError)
- });
- },
+ ) => NoCalcLength::parse_dimension(context, value, unit)
+ .map(CalcNode::Length)
+ .map_err(|()| location.new_custom_error(StyleParseErrorKind::UnspecifiedError)),
(
&Token::Dimension {
value, ref unit, ..
},
CalcUnit::Angle,
) => {
- return Angle::parse_dimension(value, unit, /* from_calc = */ true)
+ Angle::parse_dimension(value, unit, /* from_calc = */ true)
.map(CalcNode::Angle)
- .map_err(|()| {
- location.new_custom_error(StyleParseErrorKind::UnspecifiedError)
- });
+ .map_err(|()| location.new_custom_error(StyleParseErrorKind::UnspecifiedError))
},
(
&Token::Dimension {
@@ -202,21 +195,22 @@ impl CalcNode {
},
CalcUnit::Time,
) => {
- return Time::parse_dimension(value, unit, /* from_calc = */ true)
+ Time::parse_dimension(value, unit, /* from_calc = */ true)
.map(CalcNode::Time)
- .map_err(|()| {
- location.new_custom_error(StyleParseErrorKind::UnspecifiedError)
- });
+ .map_err(|()| location.new_custom_error(StyleParseErrorKind::UnspecifiedError))
},
(&Token::Percentage { unit_value, .. }, CalcUnit::LengthPercentage) |
(&Token::Percentage { unit_value, .. }, CalcUnit::Percentage) => {
- return Ok(CalcNode::Percentage(unit_value));
+ Ok(CalcNode::Percentage(unit_value))
+ },
+ (&Token::ParenthesisBlock, _) => {
+ input.parse_nested_block(|i| CalcNode::parse(context, i, expected_unit))
},
- (&Token::ParenthesisBlock, _) => {},
- (&Token::Function(ref name), _) if name.eq_ignore_ascii_case("calc") => {},
- (t, _) => return Err(location.new_unexpected_token_error(t.clone())),
+ (&Token::Function(ref name), _) if name.eq_ignore_ascii_case("calc") => {
+ input.parse_nested_block(|i| CalcNode::parse(context, i, expected_unit))
+ },
+ (t, _) => Err(location.new_unexpected_token_error(t.clone())),
}
- input.parse_nested_block(|i| CalcNode::parse(context, i, expected_unit))
}
/// Parse a top-level `calc` expression, with all nested sub-expressions.
@@ -236,8 +230,7 @@ impl CalcNode {
if input.is_exhausted() {
break; // allow trailing whitespace
}
- // FIXME: remove clone() when lifetimes are non-lexical
- match input.next()?.clone() {
+ match *input.next()? {
Token::Delim('+') => {
let rhs = Self::parse_product(context, input, expected_unit)?;
let new_root = CalcNode::Sum(Box::new(root), Box::new(rhs));
@@ -248,7 +241,10 @@ impl CalcNode {
let new_root = CalcNode::Sub(Box::new(root), Box::new(rhs));
root = new_root;
},
- t => return Err(input.new_unexpected_token_error(t)),
+ ref t => {
+ let t = t.clone();
+ return Err(input.new_unexpected_token_error(t));
+ },
}
},
_ => {
diff --git a/components/style/values/specified/color.rs b/components/style/values/specified/color.rs
index 01e5890d015..4e761f95338 100644
--- a/components/style/values/specified/color.rs
+++ b/components/style/values/specified/color.rs
@@ -36,9 +36,6 @@ pub enum Color {
/// A system color
#[cfg(feature = "gecko")]
System(SystemColor),
- /// A special color keyword value used in Gecko
- #[cfg(feature = "gecko")]
- Special(gecko::SpecialColorKeyword),
/// Quirksmode-only rule for inheriting color from the body
#[cfg(feature = "gecko")]
InheritFromBodyQuirk,
@@ -143,6 +140,8 @@ pub enum SystemColor {
Windowframe,
Windowtext,
MozButtondefault,
+ MozDefaultColor,
+ MozDefaultBackgroundColor,
MozDialog,
MozDialogtext,
/// Used to highlight valid regions to drop something onto.
@@ -231,6 +230,10 @@ pub enum SystemColor {
/// colors.
MozNativehyperlinktext,
+ MozHyperlinktext,
+ MozActivehyperlinktext,
+ MozVisitedhyperlinktext,
+
/// Combobox widgets
MozComboboxtext,
MozCombobox,
@@ -246,24 +249,20 @@ impl SystemColor {
#[inline]
fn compute(&self, cx: &Context) -> ComputedColor {
use crate::gecko_bindings::bindings;
- unsafe {
- convert_nscolor_to_computedcolor(bindings::Gecko_GetLookAndFeelSystemColor(
- *self as i32,
- cx.device().document(),
- ))
- }
- }
-}
-#[cfg(feature = "gecko")]
-mod gecko {
- #[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, Parse, PartialEq, ToCss, ToShmem)]
- pub enum SpecialColorKeyword {
- MozDefaultColor,
- MozDefaultBackgroundColor,
- MozHyperlinktext,
- MozActivehyperlinktext,
- MozVisitedhyperlinktext,
+ let prefs = cx.device().pref_sheet_prefs();
+
+ convert_nscolor_to_computedcolor(match *self {
+ SystemColor::MozDefaultColor => prefs.mDefaultColor,
+ SystemColor::MozDefaultBackgroundColor => prefs.mDefaultBackgroundColor,
+ SystemColor::MozHyperlinktext => prefs.mLinkColor,
+ SystemColor::MozActivehyperlinktext => prefs.mActiveLinkColor,
+ SystemColor::MozVisitedhyperlinktext => prefs.mVisitedLinkColor,
+
+ _ => unsafe {
+ bindings::Gecko_GetLookAndFeelSystemColor(*self as i32, cx.device().document())
+ },
+ })
}
}
@@ -364,10 +363,6 @@ impl Parse for Color {
if let Ok(system) = input.try(|i| SystemColor::parse(context, i)) {
return Ok(Color::System(system));
}
-
- if let Ok(c) = input.try(gecko::SpecialColorKeyword::parse) {
- return Ok(Color::Special(c));
- }
}
match e.kind {
@@ -401,8 +396,6 @@ impl ToCss for Color {
#[cfg(feature = "gecko")]
Color::System(system) => system.to_css(dest),
#[cfg(feature = "gecko")]
- Color::Special(special) => special.to_css(dest),
- #[cfg(feature = "gecko")]
Color::InheritFromBodyQuirk => Ok(()),
}
}
@@ -553,18 +546,6 @@ impl Color {
#[cfg(feature = "gecko")]
Color::System(system) => system.compute(_context?),
#[cfg(feature = "gecko")]
- Color::Special(special) => {
- use self::gecko::SpecialColorKeyword as Keyword;
- let prefs = _context?.device().pref_sheet_prefs();
- convert_nscolor_to_computedcolor(match special {
- Keyword::MozDefaultColor => prefs.mDefaultColor,
- Keyword::MozDefaultBackgroundColor => prefs.mDefaultBackgroundColor,
- Keyword::MozHyperlinktext => prefs.mLinkColor,
- Keyword::MozActivehyperlinktext => prefs.mActiveLinkColor,
- Keyword::MozVisitedhyperlinktext => prefs.mVisitedLinkColor,
- })
- },
- #[cfg(feature = "gecko")]
Color::InheritFromBodyQuirk => {
ComputedColor::rgba(_context?.device().body_text_color())
},
diff --git a/components/style/values/specified/counters.rs b/components/style/values/specified/counters.rs
index 54690b53105..09020e73448 100644
--- a/components/style/values/specified/counters.rs
+++ b/components/style/values/specified/counters.rs
@@ -63,7 +63,10 @@ fn parse_counters<'i, 't>(
let location = input.current_source_location();
let name = match input.next() {
Ok(&Token::Ident(ref ident)) => CustomIdent::from_ident(location, ident, &["none"])?,
- Ok(t) => return Err(location.new_unexpected_token_error(t.clone())),
+ Ok(t) => {
+ let t = t.clone();
+ return Err(location.new_unexpected_token_error(t));
+ },
Err(_) => break,
};
@@ -147,57 +150,60 @@ impl Parse for Content {
continue;
}
}
- // FIXME: remove clone() when lifetimes are non-lexical
- match input.next().map(|t| t.clone()) {
- Ok(Token::QuotedString(ref value)) => {
+ match input.next() {
+ Ok(&Token::QuotedString(ref value)) => {
content.push(generics::ContentItem::String(
value.as_ref().to_owned().into_boxed_str(),
));
},
- Ok(Token::Function(ref name)) => {
+ Ok(&Token::Function(ref name)) => {
let result = match_ignore_ascii_case! { &name,
- "counter" => Some(input.parse_nested_block(|input| {
+ "counter" => input.parse_nested_block(|input| {
let location = input.current_source_location();
let name = CustomIdent::from_ident(location, input.expect_ident()?, &[])?;
let style = Content::parse_counter_style(context, input);
Ok(generics::ContentItem::Counter(name, style))
- })),
- "counters" => Some(input.parse_nested_block(|input| {
+ }),
+ "counters" => input.parse_nested_block(|input| {
let location = input.current_source_location();
let name = CustomIdent::from_ident(location, input.expect_ident()?, &[])?;
input.expect_comma()?;
let separator = input.expect_string()?.as_ref().to_owned().into_boxed_str();
let style = Content::parse_counter_style(context, input);
Ok(generics::ContentItem::Counters(name, separator, style))
- })),
+ }),
#[cfg(feature = "gecko")]
- "attr" => Some(input.parse_nested_block(|input| {
+ "attr" => input.parse_nested_block(|input| {
Ok(generics::ContentItem::Attr(Attr::parse_function(context, input)?))
- })),
- _ => None
- };
- match result {
- Some(result) => content.push(result?),
- None => {
+ }),
+ _ => {
+ let name = name.clone();
return Err(input.new_custom_error(
- StyleParseErrorKind::UnexpectedFunction(name.clone()),
- ));
- },
- }
+ StyleParseErrorKind::UnexpectedFunction(name),
+ ))
+ }
+ }?;
+ content.push(result);
},
- Ok(Token::Ident(ref ident)) => {
+ Ok(&Token::Ident(ref ident)) => {
content.push(match_ignore_ascii_case! { &ident,
"open-quote" => generics::ContentItem::OpenQuote,
"close-quote" => generics::ContentItem::CloseQuote,
"no-open-quote" => generics::ContentItem::NoOpenQuote,
"no-close-quote" => generics::ContentItem::NoCloseQuote,
- _ => return Err(input.new_custom_error(
- SelectorParseErrorKind::UnexpectedIdent(ident.clone())
- ))
+ _ =>{
+ let ident = ident.clone();
+ return Err(input.new_custom_error(
+ SelectorParseErrorKind::UnexpectedIdent(ident)
+ ));
+ }
});
},
Err(_) => break,
- Ok(t) => return Err(input.new_unexpected_token_error(t)),
+ Ok(t) => {
+ let t = t.clone();
+ return Err(input.new_unexpected_token_error(t));
+ },
}
}
if content.is_empty() {
diff --git a/components/style/values/specified/font.rs b/components/style/values/specified/font.rs
index 88f5969f52c..c09d5a2c34c 100644
--- a/components/style/values/specified/font.rs
+++ b/components/style/values/specified/font.rs
@@ -1212,15 +1212,15 @@ impl Parse for FontVariantAlternates {
parsed_alternates |= $flag;
)
);
- while let Ok(_) = input.try(|input| {
- // FIXME: remove clone() when lifetimes are non-lexical
- match input.next()?.clone() {
- Token::Ident(ref value) if value.eq_ignore_ascii_case("historical-forms") => {
- check_if_parsed!(input, VariantAlternatesParsingFlags::HISTORICAL_FORMS);
- alternates.push(VariantAlternates::HistoricalForms);
- Ok(())
- },
- Token::Function(ref name) => input.parse_nested_block(|i| {
+ while let Ok(_) = input.try(|input| match *input.next()? {
+ Token::Ident(ref value) if value.eq_ignore_ascii_case("historical-forms") => {
+ check_if_parsed!(input, VariantAlternatesParsingFlags::HISTORICAL_FORMS);
+ alternates.push(VariantAlternates::HistoricalForms);
+ Ok(())
+ },
+ Token::Function(ref name) => {
+ let name = name.clone();
+ input.parse_nested_block(|i| {
match_ignore_ascii_case! { &name,
"swash" => {
check_if_parsed!(i, VariantAlternatesParsingFlags::SWASH);
@@ -1270,9 +1270,9 @@ impl Parse for FontVariantAlternates {
},
_ => return Err(i.new_custom_error(StyleParseErrorKind::UnspecifiedError)),
}
- }),
- _ => Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)),
- }
+ })
+ },
+ _ => Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)),
}) {}
if parsed_alternates.is_empty() {
diff --git a/components/style/values/specified/grid.rs b/components/style/values/specified/grid.rs
index b75e97aca99..4830aea24d6 100644
--- a/components/style/values/specified/grid.rs
+++ b/components/style/values/specified/grid.rs
@@ -102,8 +102,8 @@ impl Parse for ImplicitGridTracks<TrackSize<LengthPercentage>> {
) -> Result<Self, ParseError<'i>> {
use style_traits::{Separator, Space};
let track_sizes = Space::parse(input, |i| TrackSize::parse(context, i))?;
- if track_sizes.len() == 1 && track_sizes[0].is_auto() {
- //`auto`, which is the initial value, is always represented by an empty slice.
+ if track_sizes.len() == 1 && track_sizes[0].is_initial() {
+ // A single track with the initial value is always represented by an empty slice.
return Ok(Default::default());
}
return Ok(ImplicitGridTracks(track_sizes.into()));
diff --git a/components/style/values/specified/image.rs b/components/style/values/specified/image.rs
index 7488e631e54..126a4cc69d1 100644
--- a/components/style/values/specified/image.rs
+++ b/components/style/values/specified/image.rs
@@ -192,62 +192,57 @@ impl Parse for Gradient {
Radial,
}
- // FIXME: remove clone() when lifetimes are non-lexical
- let func = input.expect_function()?.clone();
- let result = match_ignore_ascii_case! { &func,
+ let func = input.expect_function()?;
+ let (shape, repeating, mut compat_mode) = match_ignore_ascii_case! { &func,
"linear-gradient" => {
- Some((Shape::Linear, false, GradientCompatMode::Modern))
+ (Shape::Linear, false, GradientCompatMode::Modern)
},
"-webkit-linear-gradient" => {
- Some((Shape::Linear, false, GradientCompatMode::WebKit))
+ (Shape::Linear, false, GradientCompatMode::WebKit)
},
#[cfg(feature = "gecko")]
"-moz-linear-gradient" => {
- Some((Shape::Linear, false, GradientCompatMode::Moz))
+ (Shape::Linear, false, GradientCompatMode::Moz)
},
"repeating-linear-gradient" => {
- Some((Shape::Linear, true, GradientCompatMode::Modern))
+ (Shape::Linear, true, GradientCompatMode::Modern)
},
"-webkit-repeating-linear-gradient" => {
- Some((Shape::Linear, true, GradientCompatMode::WebKit))
+ (Shape::Linear, true, GradientCompatMode::WebKit)
},
#[cfg(feature = "gecko")]
"-moz-repeating-linear-gradient" => {
- Some((Shape::Linear, true, GradientCompatMode::Moz))
+ (Shape::Linear, true, GradientCompatMode::Moz)
},
"radial-gradient" => {
- Some((Shape::Radial, false, GradientCompatMode::Modern))
+ (Shape::Radial, false, GradientCompatMode::Modern)
},
"-webkit-radial-gradient" => {
- Some((Shape::Radial, false, GradientCompatMode::WebKit))
+ (Shape::Radial, false, GradientCompatMode::WebKit)
},
#[cfg(feature = "gecko")]
"-moz-radial-gradient" => {
- Some((Shape::Radial, false, GradientCompatMode::Moz))
+ (Shape::Radial, false, GradientCompatMode::Moz)
},
"repeating-radial-gradient" => {
- Some((Shape::Radial, true, GradientCompatMode::Modern))
+ (Shape::Radial, true, GradientCompatMode::Modern)
},
"-webkit-repeating-radial-gradient" => {
- Some((Shape::Radial, true, GradientCompatMode::WebKit))
+ (Shape::Radial, true, GradientCompatMode::WebKit)
},
#[cfg(feature = "gecko")]
"-moz-repeating-radial-gradient" => {
- Some((Shape::Radial, true, GradientCompatMode::Moz))
+ (Shape::Radial, true, GradientCompatMode::Moz)
},
"-webkit-gradient" => {
return input.parse_nested_block(|i| {
Self::parse_webkit_gradient_argument(context, i)
});
},
- _ => None,
- };
-
- let (shape, repeating, mut compat_mode) = match result {
- Some(result) => result,
- None => {
+ _ => {
+ let func = func.clone();
return Err(input.new_custom_error(StyleParseErrorKind::UnexpectedFunction(func)));
- },
+ }
};
let (kind, items) = input.parse_nested_block(|i| {
diff --git a/components/style/values/specified/length.rs b/components/style/values/specified/length.rs
index c98038bdc68..ebf7746ee11 100644
--- a/components/style/values/specified/length.rs
+++ b/components/style/values/specified/length.rs
@@ -587,39 +587,34 @@ impl Length {
num_context: AllowedNumericType,
allow_quirks: AllowQuirks,
) -> Result<Self, ParseError<'i>> {
- // FIXME: remove early returns when lifetimes are non-lexical
- {
- let location = input.current_source_location();
- let token = input.next()?;
- match *token {
- Token::Dimension {
- value, ref unit, ..
- } if num_context.is_ok(context.parsing_mode, value) => {
- return NoCalcLength::parse_dimension(context, value, unit)
- .map(Length::NoCalc)
- .map_err(|()| location.new_unexpected_token_error(token.clone()));
- },
- Token::Number { value, .. } if num_context.is_ok(context.parsing_mode, value) => {
- if value != 0. &&
- !context.parsing_mode.allows_unitless_lengths() &&
- !allow_quirks.allowed(context.quirks_mode)
- {
- return Err(
- location.new_custom_error(StyleParseErrorKind::UnspecifiedError)
- );
- }
- return Ok(Length::NoCalc(NoCalcLength::Absolute(AbsoluteLength::Px(
- value,
- ))));
- },
- Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {},
- ref token => return Err(location.new_unexpected_token_error(token.clone())),
- }
+ let location = input.current_source_location();
+ let token = input.next()?;
+ match *token {
+ Token::Dimension {
+ value, ref unit, ..
+ } if num_context.is_ok(context.parsing_mode, value) => {
+ NoCalcLength::parse_dimension(context, value, unit)
+ .map(Length::NoCalc)
+ .map_err(|()| location.new_unexpected_token_error(token.clone()))
+ },
+ Token::Number { value, .. } if num_context.is_ok(context.parsing_mode, value) => {
+ if value != 0. &&
+ !context.parsing_mode.allows_unitless_lengths() &&
+ !allow_quirks.allowed(context.quirks_mode)
+ {
+ return Err(location.new_custom_error(StyleParseErrorKind::UnspecifiedError));
+ }
+ Ok(Length::NoCalc(NoCalcLength::Absolute(AbsoluteLength::Px(
+ value,
+ ))))
+ },
+ Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => input
+ .parse_nested_block(|input| {
+ CalcNode::parse_length(context, input, num_context)
+ .map(|calc| Length::Calc(Box::new(calc)))
+ }),
+ ref token => return Err(location.new_unexpected_token_error(token.clone())),
}
- input.parse_nested_block(|input| {
- CalcNode::parse_length(context, input, num_context)
- .map(|calc| Length::Calc(Box::new(calc)))
- })
}
/// Parse a non-negative length
@@ -809,44 +804,41 @@ impl LengthPercentage {
num_context: AllowedNumericType,
allow_quirks: AllowQuirks,
) -> Result<Self, ParseError<'i>> {
- // FIXME: remove early returns when lifetimes are non-lexical
- {
- let location = input.current_source_location();
- let token = input.next()?;
- match *token {
- Token::Dimension {
- value, ref unit, ..
- } if num_context.is_ok(context.parsing_mode, value) => {
- return NoCalcLength::parse_dimension(context, value, unit)
- .map(LengthPercentage::Length)
- .map_err(|()| location.new_unexpected_token_error(token.clone()));
- },
- Token::Percentage { unit_value, .. }
- if num_context.is_ok(context.parsing_mode, unit_value) =>
+ let location = input.current_source_location();
+ let token = input.next()?;
+ match *token {
+ Token::Dimension {
+ value, ref unit, ..
+ } if num_context.is_ok(context.parsing_mode, value) => {
+ return NoCalcLength::parse_dimension(context, value, unit)
+ .map(LengthPercentage::Length)
+ .map_err(|()| location.new_unexpected_token_error(token.clone()));
+ },
+ Token::Percentage { unit_value, .. }
+ if num_context.is_ok(context.parsing_mode, unit_value) =>
+ {
+ return Ok(LengthPercentage::Percentage(computed::Percentage(
+ unit_value,
+ )));
+ }
+ Token::Number { value, .. } if num_context.is_ok(context.parsing_mode, value) => {
+ if value != 0. &&
+ !context.parsing_mode.allows_unitless_lengths() &&
+ !allow_quirks.allowed(context.quirks_mode)
{
- return Ok(LengthPercentage::Percentage(computed::Percentage(
- unit_value,
- )));
+ return Err(location.new_unexpected_token_error(token.clone()));
+ } else {
+ return Ok(LengthPercentage::Length(NoCalcLength::from_px(value)));
}
- Token::Number { value, .. } if num_context.is_ok(context.parsing_mode, value) => {
- if value != 0. &&
- !context.parsing_mode.allows_unitless_lengths() &&
- !allow_quirks.allowed(context.quirks_mode)
- {
- return Err(location.new_unexpected_token_error(token.clone()));
- } else {
- return Ok(LengthPercentage::Length(NoCalcLength::from_px(value)));
- }
- },
- Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {},
- _ => return Err(location.new_unexpected_token_error(token.clone())),
- }
+ },
+ Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
+ let calc = input.parse_nested_block(|i| {
+ CalcNode::parse_length_or_percentage(context, i, num_context)
+ })?;
+ Ok(LengthPercentage::Calc(Box::new(calc)))
+ },
+ _ => return Err(location.new_unexpected_token_error(token.clone())),
}
-
- let calc = input.parse_nested_block(|i| {
- CalcNode::parse_length_or_percentage(context, i, num_context)
- })?;
- Ok(LengthPercentage::Calc(Box::new(calc)))
}
/// Parses allowing the unitless length quirk.
diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs
index d10a399dd01..bc7a8203dee 100644
--- a/components/style/values/specified/mod.rs
+++ b/components/style/values/specified/mod.rs
@@ -136,24 +136,22 @@ fn parse_number_with_clamping_mode<'i, 't>(
clamping_mode: AllowedNumericType,
) -> Result<Number, ParseError<'i>> {
let location = input.current_source_location();
- // FIXME: remove early returns when lifetimes are non-lexical
match *input.next()? {
Token::Number { value, .. } if clamping_mode.is_ok(context.parsing_mode, value) => {
- return Ok(Number {
+ Ok(Number {
value: value.min(f32::MAX).max(f32::MIN),
calc_clamping_mode: None,
- });
+ })
+ },
+ Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
+ let result = input.parse_nested_block(|i| CalcNode::parse_number(context, i))?;
+ Ok(Number {
+ value: result.min(f32::MAX).max(f32::MIN),
+ calc_clamping_mode: Some(clamping_mode),
+ })
},
- Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {},
- ref t => return Err(location.new_unexpected_token_error(t.clone())),
+ ref t => Err(location.new_unexpected_token_error(t.clone())),
}
-
- let result = input.parse_nested_block(|i| CalcNode::parse_number(context, i))?;
-
- Ok(Number {
- value: result.min(f32::MAX).max(f32::MIN),
- calc_clamping_mode: Some(clamping_mode),
- })
}
/// A CSS `<number>` specified value.
@@ -540,19 +538,16 @@ impl Parse for Integer {
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> {
let location = input.current_source_location();
-
- // FIXME: remove early returns when lifetimes are non-lexical
match *input.next()? {
Token::Number {
int_value: Some(v), ..
- } => return Ok(Integer::new(v)),
- Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {},
- ref t => return Err(location.new_unexpected_token_error(t.clone())),
+ } => Ok(Integer::new(v)),
+ Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
+ let result = input.parse_nested_block(|i| CalcNode::parse_integer(context, i))?;
+ Ok(Integer::from_calc(result))
+ },
+ ref t => Err(location.new_unexpected_token_error(t.clone())),
}
-
- let result = input.parse_nested_block(|i| CalcNode::parse_integer(context, i))?;
-
- Ok(Integer::from_calc(result))
}
}
diff --git a/components/style/values/specified/motion.rs b/components/style/values/specified/motion.rs
index 90652b5ed64..2351acecc6a 100644
--- a/components/style/values/specified/motion.rs
+++ b/components/style/values/specified/motion.rs
@@ -16,11 +16,24 @@ use style_traits::{ParseError, StyleParseErrorKind};
/// The specified value of `offset-path`.
pub type OffsetPath = GenericOffsetPath<Angle>;
+#[cfg(feature = "gecko")]
+fn is_ray_enabled() -> bool {
+ static_prefs::pref!("layout.css.motion-path-ray.enabled")
+}
+#[cfg(feature = "servo")]
+fn is_ray_enabled() -> bool {
+ false
+}
+
impl Parse for RayFunction<Angle> {
fn parse<'i, 't>(
context: &ParserContext,
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> {
+ if !is_ray_enabled() {
+ return Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError));
+ }
+
let mut angle = None;
let mut size = None;
let mut contain = false;
diff --git a/components/style/values/specified/percentage.rs b/components/style/values/specified/percentage.rs
index 64cb02bb424..50ebbb3bcf6 100644
--- a/components/style/values/specified/percentage.rs
+++ b/components/style/values/specified/percentage.rs
@@ -111,25 +111,25 @@ impl Percentage {
num_context: AllowedNumericType,
) -> Result<Self, ParseError<'i>> {
let location = input.current_source_location();
- // FIXME: remove early returns when lifetimes are non-lexical
match *input.next()? {
Token::Percentage { unit_value, .. }
if num_context.is_ok(context.parsing_mode, unit_value) =>
{
- return Ok(Percentage::new(unit_value));
- }
- Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {},
- ref t => return Err(location.new_unexpected_token_error(t.clone())),
+ Ok(Percentage::new(unit_value))
+ },
+ Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
+ let result =
+ input.parse_nested_block(|i| CalcNode::parse_percentage(context, i))?;
+
+ // TODO(emilio): -moz-image-rect is the only thing that uses
+ // the clamping mode... I guess we could disallow it...
+ Ok(Percentage {
+ value: result,
+ calc_clamping_mode: Some(num_context),
+ })
+ },
+ ref t => Err(location.new_unexpected_token_error(t.clone())),
}
-
- let result = input.parse_nested_block(|i| CalcNode::parse_percentage(context, i))?;
-
- // TODO(emilio): -moz-image-rect is the only thing that uses
- // the clamping mode... I guess we could disallow it...
- Ok(Percentage {
- value: result,
- calc_clamping_mode: Some(num_context),
- })
}
/// Parses a percentage token, but rejects it if it's negative.
diff --git a/components/style/values/specified/time.rs b/components/style/values/specified/time.rs
index f46925bc5c1..0006ec45923 100644
--- a/components/style/values/specified/time.rs
+++ b/components/style/values/specified/time.rs
@@ -83,27 +83,25 @@ impl Time {
use style_traits::ParsingMode;
let location = input.current_source_location();
- // FIXME: remove early returns when lifetimes are non-lexical
- match input.next() {
+ match *input.next()? {
// Note that we generally pass ParserContext to is_ok() to check
// that the ParserMode of the ParserContext allows all numeric
// values for SMIL regardless of clamping_mode, but in this Time
// value case, the value does not animate for SMIL at all, so we use
// ParsingMode::DEFAULT directly.
- Ok(&Token::Dimension {
+ Token::Dimension {
value, ref unit, ..
- }) if clamping_mode.is_ok(ParsingMode::DEFAULT, value) => {
- return Time::parse_dimension(value, unit, /* from_calc = */ false).map_err(|()| {
- location.new_custom_error(StyleParseErrorKind::UnspecifiedError)
- });
+ } if clamping_mode.is_ok(ParsingMode::DEFAULT, value) => {
+ Time::parse_dimension(value, unit, /* from_calc = */ false)
+ .map_err(|()| location.new_custom_error(StyleParseErrorKind::UnspecifiedError))
},
- Ok(&Token::Function(ref name)) if name.eq_ignore_ascii_case("calc") => {},
- Ok(t) => return Err(location.new_unexpected_token_error(t.clone())),
- Err(e) => return Err(e.into()),
- }
- match input.parse_nested_block(|i| CalcNode::parse_time(context, i)) {
- Ok(time) if clamping_mode.is_ok(ParsingMode::DEFAULT, time.seconds) => Ok(time),
- _ => Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)),
+ Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
+ match input.parse_nested_block(|i| CalcNode::parse_time(context, i)) {
+ Ok(time) if clamping_mode.is_ok(ParsingMode::DEFAULT, time.seconds) => Ok(time),
+ _ => Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)),
+ }
+ },
+ ref t => return Err(location.new_unexpected_token_error(t.clone())),
}
}
diff --git a/components/style/values/specified/transform.rs b/components/style/values/specified/transform.rs
index 157c6504856..a61f982cd2d 100644
--- a/components/style/values/specified/transform.rs
+++ b/components/style/values/specified/transform.rs
@@ -12,7 +12,9 @@ use crate::values::generics::transform::{Matrix, Matrix3D};
use crate::values::specified::position::{
HorizontalPositionKeyword, Side, VerticalPositionKeyword,
};
-use crate::values::specified::{self, Angle, Integer, Length, LengthPercentage, Number};
+use crate::values::specified::{
+ self, Angle, Integer, Length, LengthPercentage, Number, NumberOrPercentage,
+};
use crate::Zero;
use cssparser::Parser;
use style_traits::{ParseError, StyleParseErrorKind};
@@ -163,32 +165,32 @@ impl Transform {
Ok(generic::TransformOperation::Translate3D(tx, ty, tz))
},
"scale" => {
- let sx = Number::parse(context, input)?;
+ let sx = NumberOrPercentage::parse(context, input)?.to_number();
if input.try(|input| input.expect_comma()).is_ok() {
- let sy = Number::parse(context, input)?;
+ let sy = NumberOrPercentage::parse(context, input)?.to_number();
Ok(generic::TransformOperation::Scale(sx, sy))
} else {
Ok(generic::TransformOperation::Scale(sx, sx))
}
},
"scalex" => {
- let sx = Number::parse(context, input)?;
+ let sx = NumberOrPercentage::parse(context, input)?.to_number();
Ok(generic::TransformOperation::ScaleX(sx))
},
"scaley" => {
- let sy = Number::parse(context, input)?;
+ let sy = NumberOrPercentage::parse(context, input)?.to_number();
Ok(generic::TransformOperation::ScaleY(sy))
},
"scalez" => {
- let sz = Number::parse(context, input)?;
+ let sz = NumberOrPercentage::parse(context, input)?.to_number();
Ok(generic::TransformOperation::ScaleZ(sz))
},
"scale3d" => {
- let sx = Number::parse(context, input)?;
+ let sx = NumberOrPercentage::parse(context, input)?.to_number();
input.expect_comma()?;
- let sy = Number::parse(context, input)?;
+ let sy = NumberOrPercentage::parse(context, input)?.to_number();
input.expect_comma()?;
- let sz = Number::parse(context, input)?;
+ let sz = NumberOrPercentage::parse(context, input)?.to_number();
Ok(generic::TransformOperation::Scale3D(sx, sy, sz))
},
"rotate" => {
@@ -421,17 +423,22 @@ impl Parse for Translate {
if let Ok(ty) = input.try(|i| specified::LengthPercentage::parse(context, i)) {
if let Ok(tz) = input.try(|i| specified::Length::parse(context, i)) {
// 'translate: <length-percentage> <length-percentage> <length>'
- return Ok(generic::Translate::Translate3D(tx, ty, tz));
+ return Ok(generic::Translate::Translate(tx, ty, tz));
}
// translate: <length-percentage> <length-percentage>'
- return Ok(generic::Translate::Translate(tx, ty));
+ return Ok(generic::Translate::Translate(
+ tx,
+ ty,
+ specified::Length::zero(),
+ ));
}
// 'translate: <length-percentage> '
Ok(generic::Translate::Translate(
tx,
specified::LengthPercentage::zero(),
+ specified::Length::zero(),
))
}
}
@@ -440,6 +447,9 @@ impl Parse for Translate {
pub type Scale = generic::Scale<Number>;
impl Parse for Scale {
+ /// Scale accepts <number> | <percentage>, so we parse it as NumberOrPercentage,
+ /// and then convert into an Number if it's a Percentage.
+ /// https://github.com/w3c/csswg-drafts/pull/4396
fn parse<'i, 't>(
context: &ParserContext,
input: &mut Parser<'i, 't>,
@@ -448,18 +458,19 @@ impl Parse for Scale {
return Ok(generic::Scale::None);
}
- let sx = Number::parse(context, input)?;
- if let Ok(sy) = input.try(|i| Number::parse(context, i)) {
- if let Ok(sz) = input.try(|i| Number::parse(context, i)) {
+ let sx = NumberOrPercentage::parse(context, input)?.to_number();
+ if let Ok(sy) = input.try(|i| NumberOrPercentage::parse(context, i)) {
+ let sy = sy.to_number();
+ if let Ok(sz) = input.try(|i| NumberOrPercentage::parse(context, i)) {
// 'scale: <number> <number> <number>'
- return Ok(generic::Scale::Scale3D(sx, sy, sz));
+ return Ok(generic::Scale::Scale(sx, sy, sz.to_number()));
}
// 'scale: <number> <number>'
- return Ok(generic::Scale::Scale(sx, sy));
+ return Ok(generic::Scale::Scale(sx, sy, Number::new(1.0)));
}
// 'scale: <number>'
- Ok(generic::Scale::Scale(sx, sx))
+ Ok(generic::Scale::Scale(sx, sx, Number::new(1.0)))
}
}
diff --git a/components/style_traits/Cargo.toml b/components/style_traits/Cargo.toml
index f3dd0df744f..1f3f3e9ddb1 100644
--- a/components/style_traits/Cargo.toml
+++ b/components/style_traits/Cargo.toml
@@ -15,7 +15,7 @@ gecko = []
[dependencies]
app_units = "0.7"
-cssparser = "0.27.1"
+cssparser = "0.27"
bitflags = "1.0"
euclid = "0.20"
lazy_static = "1"
diff --git a/components/to_shmem/Cargo.toml b/components/to_shmem/Cargo.toml
index 71426507647..dd3614111e1 100644
--- a/components/to_shmem/Cargo.toml
+++ b/components/to_shmem/Cargo.toml
@@ -14,7 +14,7 @@ servo = ["cssparser/serde", "string_cache"]
gecko = []
[dependencies]
-cssparser = "0.27.1"
+cssparser = "0.27"
servo_arc = { path = "../servo_arc" }
smallbitvec = "2.1.1"
smallvec = "0.6.6"
diff --git a/etc/taskcluster/decision_task.py b/etc/taskcluster/decision_task.py
index 12f23734464..c9d7c4502b9 100644
--- a/etc/taskcluster/decision_task.py
+++ b/etc/taskcluster/decision_task.py
@@ -587,7 +587,7 @@ def update_wpt():
.with_features("taskclusterProxy")
.with_scopes("secrets:get:project/servo/wpt-sync")
.with_index_and_artifacts_expire_in(log_artifacts_expire_in)
- .with_max_run_time_minutes(6 * 60)
+ .with_max_run_time_minutes(8 * 60)
# Not using the bundle, pushing the new changes to the git remote requires a full repo.
.with_repo(alternate_object_dir="/var/cache/servo.git/objects")
)
diff --git a/tests/unit/style/Cargo.toml b/tests/unit/style/Cargo.toml
index f25e4a5b20f..2764c9d0408 100644
--- a/tests/unit/style/Cargo.toml
+++ b/tests/unit/style/Cargo.toml
@@ -11,7 +11,7 @@ doctest = false
[dependencies]
app_units = "0.7"
-cssparser = "0.27.1"
+cssparser = "0.27"
euclid = "0.20"
html5ever = "0.25"
rayon = "1"
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/box-display/containing-block-007.xht.ini b/tests/wpt/metadata-layout-2020/css/CSS2/box-display/containing-block-007.xht.ini
index b8731bb917c..0c000bb2cd3 100644
--- a/tests/wpt/metadata-layout-2020/css/CSS2/box-display/containing-block-007.xht.ini
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/box-display/containing-block-007.xht.ini
@@ -1,2 +1,2 @@
[containing-block-007.xht]
- expected: CRASH
+ expected: FAIL
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b398963ae..cd3e2dfa305 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL
@@ -15,6 +15,3 @@
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
expected: FAIL
- [Fetching a blob URL immediately before revoking it works in <script> tags.]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 714f683129b..9520740e3b0 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -9103,6 +9103,12 @@
{}
]
],
+ "css/css-text/word-boundary/word-boundary-015-manual.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-015-manual.html",
+ {}
+ ]
+ ],
"css/css-transitions/transition-delay-000-manual.html": [
[
"css/css-transitions/transition-delay-000-manual.html",
@@ -20301,6 +20307,42 @@
{}
]
],
+ "content-dpr/image-pseudo-element-content-dpr.html": [
+ [
+ "content-dpr/image-pseudo-element-content-dpr.html",
+ [
+ [
+ "/content-dpr/image-pseudo-element-content-dpr-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "content-dpr/image-with-content-dpr-and-explicit-dimensions.html": [
+ [
+ "content-dpr/image-with-content-dpr-and-explicit-dimensions.html",
+ [
+ [
+ "/content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "content-dpr/tiled-background-image-with-content-dpr.html": [
+ [
+ "content-dpr/tiled-background-image-with-content-dpr.html",
+ [
+ [
+ "/content-dpr/tiled-background-image-with-content-dpr-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/abspos/abspos-containing-block-initial-001.xht": [
[
"css/CSS2/abspos/abspos-containing-block-initial-001.xht",
@@ -110229,6 +110271,18 @@
{}
]
],
+ "css/css-break/fieldset-001.html": [
+ [
+ "css/css-break/fieldset-001.html",
+ [
+ [
+ "/css/css-break/fieldset-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-break/fieldset.html": [
[
"css/css-break/fieldset.html",
@@ -110277,6 +110331,18 @@
{}
]
],
+ "css/css-break/tall-break-inside-avoid-at-start.html": [
+ [
+ "css/css-break/tall-break-inside-avoid-at-start.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-break/widows-orphans-001.html": [
[
"css/css-break/widows-orphans-001.html",
@@ -124255,6 +124321,42 @@
{}
]
],
+ "css/css-fonts/standard-font-family-17.html": [
+ [
+ "css/css-fonts/standard-font-family-17.html",
+ [
+ [
+ "/css/css-fonts/standard-font-family-17-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-fonts/standard-font-family-18.html": [
+ [
+ "css/css-fonts/standard-font-family-18.html",
+ [
+ [
+ "/css/css-fonts/standard-font-family-18-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-fonts/standard-font-family-19.html": [
+ [
+ "css/css-fonts/standard-font-family-19.html",
+ [
+ [
+ "/css/css-fonts/standard-font-family-19-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-fonts/standard-font-family-2.html": [
[
"css/css-fonts/standard-font-family-2.html",
@@ -124267,6 +124369,18 @@
{}
]
],
+ "css/css-fonts/standard-font-family-20.html": [
+ [
+ "css/css-fonts/standard-font-family-20.html",
+ [
+ [
+ "/css/css-fonts/standard-font-family-20-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-fonts/standard-font-family-3.html": [
[
"css/css-fonts/standard-font-family-3.html",
@@ -133003,6 +133117,18 @@
{}
]
],
+ "css/css-multicol/equal-gap-and-rule.html": [
+ [
+ "css/css-multicol/equal-gap-and-rule.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-multicol/float-and-block.html": [
[
"css/css-multicol/float-and-block.html",
@@ -138775,6 +138901,18 @@
{}
]
],
+ "css/css-pseudo/first-line-and-marker.html": [
+ [
+ "css/css-pseudo/first-line-and-marker.html",
+ [
+ [
+ "/css/css-pseudo/first-line-and-marker-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-pseudo/first-line-and-placeholder.html": [
[
"css/css-pseudo/first-line-and-placeholder.html",
@@ -142415,6 +142553,54 @@
{}
]
],
+ "css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html": [
+ [
+ "css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html",
+ [
+ [
+ "/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html": [
+ [
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html",
+ [
+ [
+ "/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html": [
+ [
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html",
+ [
+ [
+ "/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html": [
+ [
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html",
+ [
+ [
+ "/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-scrollbars/scrollbars-chrome-bug-001.html": [
[
"css/css-scrollbars/scrollbars-chrome-bug-001.html",
@@ -144167,450 +144353,6 @@
{}
]
],
- "css/css-sizing/intrinsic-size/intrinsic-size-001.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-001.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-002.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-002.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-003.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-003.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-004.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-004.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-005.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-005.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-006.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-006.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-007.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-007.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-008.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-008.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-009.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-009.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-010.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-010.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-011.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-011.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-012.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-012.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-013.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-013.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-014.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-014.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-015.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-015.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-016.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-016.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-017.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-017.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-018.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-018.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-019.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-019.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-020.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-020.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-021.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-021.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-022.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-022.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-023.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-023.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-024.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-024.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-025.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-025.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-026.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-026.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html": [
- [
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html",
- [
- [
- "/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"css/css-sizing/ortho-writing-mode-001.html": [
[
"css/css-sizing/ortho-writing-mode-001.html",
@@ -144635,18 +144377,6 @@
{}
]
],
- "css/css-sizing/percentage-resolution-001.html": [
- [
- "css/css-sizing/percentage-resolution-001.html",
- [
- [
- "/css/css-sizing/percentage-resolution-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"css/css-sizing/range-percent-intrinsic-size-1.html": [
[
"css/css-sizing/range-percent-intrinsic-size-1.html",
@@ -155447,6 +155177,534 @@
{}
]
],
+ "css/css-text/word-boundary/word-boundary-001.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-001.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-002.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-002.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-003.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-003.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-004.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-004.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-005.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-005.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-006.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-006.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-007.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-007.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-007-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-008.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-008.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-008-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-009.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-009.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-009-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-010.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-010.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-010-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-011.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-011.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-011-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-012.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-012.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-012-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-013.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-013.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-013-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-014.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-014.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-014-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-101.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-101.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-101-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-102.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-102.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-102-ref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-103.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-103.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-103-ref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-104.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-104.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-104-ref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-105.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-105.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-105-ref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-106.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-106.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-106-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-107.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-107.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-107-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-108.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-108.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-108-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-109.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-109.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-109-a-ref.html",
+ "=="
+ ],
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-109-b-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-110.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-110.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-110-a-ref.html",
+ "=="
+ ],
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-110-b-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-111.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-111.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-111-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-112.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-112.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-112-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-113.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-113.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-113-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-114.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-114.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-114-a-ref.html",
+ "=="
+ ],
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-114-b-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-115.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-115.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-115-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-116.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-116.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-116-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-117.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-117.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-117-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-118.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-118.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-117-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-119.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-119.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-119-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-120.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-120.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-120-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-121.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-121.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-121-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-122.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-122.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-122-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-123.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-123.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-123-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-124.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-124.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-124-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-125.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-125.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-125-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-126.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-126.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-126-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-127.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-127.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-127-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-128.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-128.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-128-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-boundary/word-boundary-129.html": [
+ [
+ "css/css-text/word-boundary/word-boundary-129.html",
+ [
+ [
+ "/css/css-text/word-boundary/reference/word-boundary-129-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/word-break/word-break-break-all-000.html": [
[
"css/css-text/word-break/word-break-break-all-000.html",
@@ -157055,18 +157313,6 @@
{}
]
],
- "css/css-transforms/external-styles/svg-external-styles-012.html": [
- [
- "css/css-transforms/external-styles/svg-external-styles-012.html",
- [
- [
- "/css/css-transforms/external-styles/reference/svg-external-styles-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"css/css-transforms/external-styles/svg-external-styles-013.html": [
[
"css/css-transforms/external-styles/svg-external-styles-013.html",
@@ -205245,6 +205491,18 @@
{}
]
],
+ "infrastructure/reftest/reftest_wait_TestRendered.html": [
+ [
+ "infrastructure/reftest/reftest_wait_TestRendered.html",
+ [
+ [
+ "/infrastructure/reftest/green.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"infrastructure/reftest/size.html": [
[
"infrastructure/reftest/size.html",
@@ -207549,6 +207807,30 @@
{}
]
],
+ "svg/painting/marker-009.svg": [
+ [
+ "svg/painting/marker-009.svg",
+ [
+ [
+ "/svg/painting/marker-009-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg/painting/marker-orient-001.svg": [
+ [
+ "svg/painting/marker-orient-001.svg",
+ [
+ [
+ "/svg/painting/marker-orient-001-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"svg/painting/reftests/markers-orient-001.svg": [
[
"svg/painting/reftests/markers-orient-001.svg",
@@ -208629,6 +208911,66 @@
{}
]
],
+ "web-animations/timing-model/animations/reverse-running-animation.html": [
+ [
+ "web-animations/timing-model/animations/reverse-running-animation.html",
+ [
+ [
+ "/web-animations/timing-model/animations/reverse-running-animation-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/sync-start-times.html": [
+ [
+ "web-animations/timing-model/animations/sync-start-times.html",
+ [
+ [
+ "/web-animations/timing-model/animations/sync-start-times-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-fast.html": [
+ [
+ "web-animations/timing-model/animations/update-playback-rate-fast.html",
+ [
+ [
+ "/web-animations/timing-model/animations/update-playback-rate-fast-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-slow.html": [
+ [
+ "web-animations/timing-model/animations/update-playback-rate-slow.html",
+ [
+ [
+ "/web-animations/timing-model/animations/update-playback-rate-slow-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-zero.html": [
+ [
+ "web-animations/timing-model/animations/update-playback-rate-zero.html",
+ [
+ [
+ "/web-animations/timing-model/animations/update-playback-rate-zero-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html": [
[
"webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html",
@@ -215670,9 +216012,6 @@
"client-hints/resources/do_not_expect_client_hints_headers.html": [
[]
],
- "client-hints/resources/dpr.py": [
- []
- ],
"client-hints/resources/expect-client-hints-headers-iframe.py": [
[]
],
@@ -229137,6 +229476,24 @@
"contacts/resources/non-main-frame-select.html": [
[]
],
+ "content-dpr/image-pseudo-element-content-dpr-ref.html": [
+ []
+ ],
+ "content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html": [
+ []
+ ],
+ "content-dpr/resources/background.png": [
+ []
+ ],
+ "content-dpr/resources/dpr.py": [
+ []
+ ],
+ "content-dpr/resources/square.png": [
+ []
+ ],
+ "content-dpr/tiled-background-image-with-content-dpr-ref.html": [
+ []
+ ],
"content-security-policy/META.yml": [
[]
],
@@ -229884,6 +230241,9 @@
"cookie-store/README.md": [
[]
],
+ "cookie-store/resources/always_changing_sw.sub.js": [
+ []
+ ],
"cookie-store/resources/cookie-test-helpers.js": [
[]
],
@@ -229902,24 +230262,6 @@
"cookie-store/serviceworker_cookieStore_cross_origin.js": [
[]
],
- "cookie-store/serviceworker_cookieStore_subscriptions.js": [
- []
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_basic.js": [
- []
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_empty.js": [
- []
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.js": [
- []
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_mismatch.js": [
- []
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js": [
- []
- ],
"cookies/META.yml": [
[]
],
@@ -245607,6 +245949,9 @@
"css/css-break/block-end-aligned-abspos-with-overflow-ref.html": [
[]
],
+ "css/css-break/fieldset-001-ref.html": [
+ []
+ ],
"css/css-break/floats-and-text-narrow-and-short-dynamic-ref.html": [
[]
],
@@ -247674,9 +248019,21 @@
"css/css-fonts/standard-font-family-16-notref.html": [
[]
],
+ "css/css-fonts/standard-font-family-17-notref.html": [
+ []
+ ],
+ "css/css-fonts/standard-font-family-18-notref.html": [
+ []
+ ],
+ "css/css-fonts/standard-font-family-19-notref.html": [
+ []
+ ],
"css/css-fonts/standard-font-family-2-ref.html": [
[]
],
+ "css/css-fonts/standard-font-family-20-notref.html": [
+ []
+ ],
"css/css-fonts/standard-font-family-3-notref.html": [
[]
],
@@ -253191,6 +253548,15 @@
"css/css-lists/ol-change-display-type-ref.html": [
[]
],
+ "css/css-lists/resources/blue-20.png": [
+ []
+ ],
+ "css/css-lists/resources/green-20.png": [
+ []
+ ],
+ "css/css-lists/resources/stripes-20.png": [
+ []
+ ],
"css/css-lists/resources/white.gif": [
[]
],
@@ -253428,6 +253794,15 @@
"css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg": [
[]
],
+ "css/css-masking/resources/blue-20.png": [
+ []
+ ],
+ "css/css-masking/resources/green-20.png": [
+ []
+ ],
+ "css/css-masking/resources/stripes-20.png": [
+ []
+ ],
"css/css-masking/test-mask-ref.html": [
[]
],
@@ -254586,6 +254961,9 @@
"css/css-pseudo/first-letter-width-ref.html": [
[]
],
+ "css/css-pseudo/first-line-and-marker-ref.html": [
+ []
+ ],
"css/css-pseudo/first-line-and-placeholder-ref.html": [
[]
],
@@ -255396,6 +255774,9 @@
"css/css-scroll-snap/scroll-target-001-ref.html": [
[]
],
+ "css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html": [
+ []
+ ],
"css/css-scroll-snap/support/common.css": [
[]
],
@@ -255780,123 +256161,6 @@
"css/css-sizing/intrinsic-percent-non-replaced-005-ref.html": [
[]
],
- "css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-005-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html": [
- []
- ],
- "css/css-sizing/intrinsic-size/resources/dice.png": [
- []
- ],
- "css/css-sizing/percentage-resolution-001-ref.html": [
- []
- ],
"css/css-sizing/range-percent-intrinsic-size-1-ref.html": [
[]
],
@@ -258099,6 +258363,132 @@
"css/css-text/white-space/reference/white-space-wrap-after-nowrap-001-ref.html": [
[]
],
+ "css/css-text/word-boundary/reference/word-boundary-001-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-002-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-004-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-007-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-008-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-009-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-010-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-011-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-012-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-013-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-014-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-101-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-102-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-103-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-104-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-105-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-106-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-107-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-108-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-109-a-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-109-b-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-110-a-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-110-b-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-111-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-112-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-113-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-114-a-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-114-b-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-115-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-116-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-117-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-119-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-120-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-121-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-122-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-123-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-124-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-125-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-126-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-127-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-128-ref.html": [
+ []
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-129-ref.html": [
+ []
+ ],
"css/css-text/word-break/reference/word-break-break-all-010-ref.html": [
[]
],
@@ -266337,6 +266727,21 @@
"docs/writing-tests/wdspec.md": [
[]
],
+ "document-policy/echo-policy-nested.html": [
+ []
+ ],
+ "document-policy/echo-policy-nested.html.headers": [
+ []
+ ],
+ "document-policy/echo-policy.py": [
+ []
+ ],
+ "document-policy/required-policy/document-policy.html.headers": [
+ []
+ ],
+ "document-policy/required-policy/required-document-policy.html.headers": [
+ []
+ ],
"dom/META.yml": [
[]
],
@@ -277590,6 +277995,12 @@
"media/2x2-green.ogv": [
[]
],
+ "media/400x300-red-resize-200x150-green.mp4": [
+ []
+ ],
+ "media/400x300-red-resize-200x150-green.webm": [
+ []
+ ],
"media/A4.mp4": [
[]
],
@@ -282885,6 +283296,9 @@
"service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [
[]
],
+ "service-workers/service-worker/resources/fetch-event-worker-timing.js": [
+ []
+ ],
"service-workers/service-worker/resources/fetch-header-visibility-iframe.html": [
[]
],
@@ -284232,6 +284646,12 @@
"svg/painting/marker-008-ref.svg": [
[]
],
+ "svg/painting/marker-009-ref.svg": [
+ []
+ ],
+ "svg/painting/marker-orient-001-ref.svg": [
+ []
+ ],
"svg/painting/reftests/markers-orient-001-ref.svg": [
[]
],
@@ -284571,6 +284991,9 @@
"tools/ci/azure/pip_install.yml": [
[]
],
+ "tools/ci/azure/safari-technology-preview.rb": [
+ []
+ ],
"tools/ci/azure/system_info.yml": [
[]
],
@@ -284622,16 +285045,46 @@
"tools/ci/taskcluster-run.py": [
[]
],
- "tools/ci/tcdownload.py": [
+ "tools/ci/tc/README.md": [
[]
],
- "tools/ci/tests/test_jobs.py": [
+ "tools/ci/tc/__init__.py": [
[]
],
- "tools/ci/tests/test_pr_preview.py": [
+ "tools/ci/tc/decision.py": [
+ []
+ ],
+ "tools/ci/tc/download.py": [
+ []
+ ],
+ "tools/ci/tc/taskgraph.py": [
+ []
+ ],
+ "tools/ci/tc/tasks/test.yml": [
+ []
+ ],
+ "tools/ci/tc/testdata/master_push_event.json": [
+ []
+ ],
+ "tools/ci/tc/testdata/pr_event.json": [
+ []
+ ],
+ "tools/ci/tc/testdata/pr_event_tests_affected.json": [
+ []
+ ],
+ "tools/ci/tc/tests/test_decision.py": [
+ []
+ ],
+ "tools/ci/tc/tests/test_taskgraph.py": [
+ []
+ ],
+ "tools/ci/tc/tests/test_valid.py": [
[]
],
- "tools/ci/tests/test_run_tc.py": [
+ "tools/ci/tests/test_jobs.py": [
+ []
+ ],
+ "tools/ci/tests/test_pr_preview.py": [
[]
],
"tools/ci/website_build.sh": [
@@ -284664,6 +285117,9 @@
"tools/docker/retry.py": [
[]
],
+ "tools/docker/seccomp.json": [
+ []
+ ],
"tools/docker/start.sh": [
[]
],
@@ -285240,21 +285696,6 @@
"tools/serve/test_serve.py": [
[]
],
- "tools/taskcluster/__init__.py": [
- []
- ],
- "tools/taskcluster/commands.json": [
- []
- ],
- "tools/taskcluster/testdata/master_push_event.json": [
- []
- ],
- "tools/taskcluster/testdata/pr_event.json": [
- []
- ],
- "tools/taskcluster/verify.py": [
- []
- ],
"tools/third_party/atomicwrites/.gitignore": [
[]
],
@@ -288567,9 +289008,6 @@
"tools/wptrunner/wptrunner/executors/pytestrunner/runner.py": [
[]
],
- "tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js": [
- []
- ],
"tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js": [
[]
],
@@ -289698,6 +290136,21 @@
"web-animations/testcommon.js": [
[]
],
+ "web-animations/timing-model/animations/reverse-running-animation-ref.html": [
+ []
+ ],
+ "web-animations/timing-model/animations/sync-start-times-ref.html": [
+ []
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-fast-ref.html": [
+ []
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-slow-ref.html": [
+ []
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-zero-ref.html": [
+ []
+ ],
"web-locks/META.yml": [
[]
],
@@ -312046,12 +312499,6 @@
{}
]
],
- "client-hints/image-with-dpr-header.html": [
- [
- "client-hints/image-with-dpr-header.html",
- {}
- ]
- ],
"client-hints/sec-ch-quotes.https.html": [
[
"client-hints/sec-ch-quotes.https.html",
@@ -312681,13 +313128,13 @@
}
]
],
- "compression/decompression-corrupt-input.any.js": [
+ "compression/decompression-corrupt-input.tentative.any.js": [
[
- "compression/decompression-corrupt-input.any.html",
+ "compression/decompression-corrupt-input.tentative.any.html",
{}
],
[
- "compression/decompression-corrupt-input.any.worker.html",
+ "compression/decompression-corrupt-input.tentative.any.worker.html",
{}
]
],
@@ -312932,6 +313379,12 @@
}
]
],
+ "content-dpr/image-with-dpr-header.html": [
+ [
+ "content-dpr/image-with-dpr-header.html",
+ {}
+ ]
+ ],
"content-security-policy/base-uri/base-uri-allow.sub.html": [
[
"content-security-policy/base-uri/base-uri-allow.sub.html",
@@ -315909,6 +316362,126 @@
}
]
],
+ "cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js": [
+ [
+ "cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: ServiceWorker without cookie change subscriptions"
+ ],
+ [
+ "global",
+ "!default,serviceworker,window"
+ ],
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: ServiceWorker without cookie change subscriptions"
+ ],
+ [
+ "global",
+ "!default,serviceworker,window"
+ ],
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js": [
+ [
+ "cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: ServiceWorker with multiple cookie change subscriptions"
+ ],
+ [
+ "global",
+ "!default,serviceworker,window"
+ ],
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: ServiceWorker with multiple cookie change subscriptions"
+ ],
+ [
+ "global",
+ "!default,serviceworker,window"
+ ],
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js": [
+ [
+ "cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: ServiceWorker with one cookie change subscription"
+ ],
+ [
+ "global",
+ "!default,serviceworker,window"
+ ],
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: ServiceWorker with one cookie change subscription"
+ ],
+ [
+ "global",
+ "!default,serviceworker,window"
+ ],
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
"cookie-store/cookieStore_delete_arguments.tentative.https.any.js": [
[
"cookie-store/cookieStore_delete_arguments.tentative.https.any.html",
@@ -316335,6 +316908,19 @@
}
]
],
+ "cookie-store/cookieStore_subscriptions_empty.tentative.https.window.js": [
+ [
+ "cookie-store/cookieStore_subscriptions_empty.tentative.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/service-workers/service-worker/resources/test-helpers.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
"cookie-store/encoding.https.any.js": [
[
"cookie-store/encoding.https.any.html",
@@ -316452,40 +317038,95 @@
{}
]
],
- "cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html": [
+ "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html": [
[
- "cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html",
+ "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html",
{}
]
],
- "cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html": [
+ "cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.js": [
[
- "cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html",
- {}
+ "cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: cookiechange event in ServiceWorker with mismatched subscription"
+ ],
+ [
+ "global",
+ "!default,serviceworker"
+ ]
+ ]
+ }
]
],
- "cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html": [
+ "cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.js": [
[
- "cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html",
- {}
+ "cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: cookiechange event in ServiceWorker with multiple subscriptions"
+ ],
+ [
+ "global",
+ "!default,serviceworker"
+ ]
+ ]
+ }
]
],
- "cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html": [
+ "cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.js": [
[
- "cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html",
- {}
+ "cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: cookiechange event in ServiceWorker with overlapping subscriptions"
+ ],
+ [
+ "global",
+ "!default,serviceworker"
+ ]
+ ]
+ }
]
],
- "cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html": [
+ "cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.js": [
[
- "cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html",
- {}
+ "cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: cookiechange event in ServiceWorker with single subscription"
+ ],
+ [
+ "global",
+ "!default,serviceworker"
+ ]
+ ]
+ }
]
],
- "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html": [
+ "cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.js": [
[
- "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html",
- {}
+ "cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Cookie Store API: oncookiechange event in ServiceWorker with single subscription"
+ ],
+ [
+ "global",
+ "!default,serviceworker"
+ ]
+ ]
+ }
]
],
"cookies/cookie-enabled-noncookie-frame.html": [
@@ -317183,6 +317824,12 @@
{}
]
],
+ "css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html": [
+ [
+ "css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html",
+ {}
+ ]
+ ],
"css/CSS2/linebox/vertical-align-top-bottom-001.html": [
[
"css/CSS2/linebox/vertical-align-top-bottom-001.html",
@@ -318467,6 +319114,12 @@
{}
]
],
+ "css/css-backgrounds/animations/border-image-slice-interpolation-stability.html": [
+ [
+ "css/css-backgrounds/animations/border-image-slice-interpolation-stability.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/animations/border-image-slice-interpolation.html": [
[
"css/css-backgrounds/animations/border-image-slice-interpolation.html",
@@ -319573,6 +320226,12 @@
{}
]
],
+ "css/css-display/animations/display-interpolation.html": [
+ [
+ "css/css-display/animations/display-interpolation.html",
+ {}
+ ]
+ ],
"css/css-display/display-contents-blockify-dynamic.html": [
[
"css/css-display/display-contents-blockify-dynamic.html",
@@ -323603,6 +324262,12 @@
{}
]
],
+ "css/css-lists/animations/list-style-image-interpolation.html": [
+ [
+ "css/css-lists/animations/list-style-image-interpolation.html",
+ {}
+ ]
+ ],
"css/css-lists/inherit-overwrites.html": [
[
"css/css-lists/inherit-overwrites.html",
@@ -324251,6 +324916,12 @@
{}
]
],
+ "css/css-masking/animations/mask-image-interpolation.html": [
+ [
+ "css/css-masking/animations/mask-image-interpolation.html",
+ {}
+ ]
+ ],
"css/css-masking/animations/mask-position-interpolation.html": [
[
"css/css-masking/animations/mask-position-interpolation.html",
@@ -326173,15 +326844,45 @@
{}
]
],
- "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html": [
+ "css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html": [
[
- "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html",
+ "css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html",
{}
]
],
- "css/css-scroll-snap/snap-area-caputring-add-scroll-container.html": [
+ "css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html": [
[
- "css/css-scroll-snap/snap-area-caputring-add-scroll-container.html",
+ "css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html",
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-after-relayout/move-current-target.html": [
+ [
+ "css/css-scroll-snap/snap-after-relayout/move-current-target.html",
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-after-relayout/remove-current-target.html": [
+ [
+ "css/css-scroll-snap/snap-after-relayout/remove-current-target.html",
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html": [
+ [
+ "css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html",
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-area-capturing-add-scroll-container.html": [
+ [
+ "css/css-scroll-snap/snap-area-capturing-add-scroll-container.html",
+ {}
+ ]
+ ],
+ "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html": [
+ [
+ "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html",
{}
]
],
@@ -327163,102 +327864,6 @@
{}
]
],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html",
- {}
- ]
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html": [
- [
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html",
- {}
- ]
- ],
"css/css-sizing/min-max-content-orthogonal-flow-crash-001.html": [
[
"css/css-sizing/min-max-content-orthogonal-flow-crash-001.html",
@@ -329875,6 +330480,42 @@
{}
]
],
+ "css/css-text/parsing/word-boundary-detection-computed.html": [
+ [
+ "css/css-text/parsing/word-boundary-detection-computed.html",
+ {}
+ ]
+ ],
+ "css/css-text/parsing/word-boundary-detection-invalid.html": [
+ [
+ "css/css-text/parsing/word-boundary-detection-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-text/parsing/word-boundary-detection-valid.html": [
+ [
+ "css/css-text/parsing/word-boundary-detection-valid.html",
+ {}
+ ]
+ ],
+ "css/css-text/parsing/word-boundary-expansion-computed.html": [
+ [
+ "css/css-text/parsing/word-boundary-expansion-computed.html",
+ {}
+ ]
+ ],
+ "css/css-text/parsing/word-boundary-expansion-invalid.html": [
+ [
+ "css/css-text/parsing/word-boundary-expansion-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-text/parsing/word-boundary-expansion-valid.html": [
+ [
+ "css/css-text/parsing/word-boundary-expansion-valid.html",
+ {}
+ ]
+ ],
"css/css-text/parsing/word-break-computed.html": [
[
"css/css-text/parsing/word-break-computed.html",
@@ -333241,6 +333882,12 @@
{}
]
],
+ "css/css-values/animations/calc-interpolation.html": [
+ [
+ "css/css-values/animations/calc-interpolation.html",
+ {}
+ ]
+ ],
"css/css-values/calc-angle-values.html": [
[
"css/css-values/calc-angle-values.html",
@@ -337245,6 +337892,30 @@
{}
]
],
+ "document-policy/required-policy/document-policy.html": [
+ [
+ "document-policy/required-policy/document-policy.html",
+ {}
+ ]
+ ],
+ "document-policy/required-policy/no-document-policy.html": [
+ [
+ "document-policy/required-policy/no-document-policy.html",
+ {}
+ ]
+ ],
+ "document-policy/required-policy/required-document-policy-nested.html": [
+ [
+ "document-policy/required-policy/required-document-policy-nested.html",
+ {}
+ ]
+ ],
+ "document-policy/required-policy/required-document-policy.html": [
+ [
+ "document-policy/required-policy/required-document-policy.html",
+ {}
+ ]
+ ],
"dom/abort/event.any.js": [
[
"dom/abort/event.any.html",
@@ -337447,7 +338118,9 @@
"dom/events/Event-dispatch-redispatch.html": [
[
"dom/events/Event-dispatch-redispatch.html",
- {}
+ {
+ "testdriver": true
+ }
]
],
"dom/events/Event-dispatch-reenter.html": [
@@ -352637,8 +353310,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
],
[
@@ -352656,8 +353334,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
],
[
@@ -352675,8 +353358,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
],
[
@@ -352694,8 +353382,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
]
],
@@ -354104,9 +354797,9 @@
{}
]
],
- "fetch/metadata/navigation.https.sub.html": [
+ "fetch/metadata/navigation.tentative.https.sub.html": [
[
- "fetch/metadata/navigation.https.sub.html",
+ "fetch/metadata/navigation.tentative.https.sub.html",
{}
]
],
@@ -354150,6 +354843,12 @@
{}
]
],
+ "fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html": [
+ [
+ "fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html",
+ {}
+ ]
+ ],
"fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html": [
[
"fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html",
@@ -354162,12 +354861,24 @@
{}
]
],
+ "fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html": [
+ [
+ "fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html",
+ {}
+ ]
+ ],
"fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html": [
[
"fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html",
{}
]
],
+ "fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html": [
+ [
+ "fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html",
+ {}
+ ]
+ ],
"fetch/metadata/redirect/redirect-https-downgrade.tentative.sub.html": [
[
"fetch/metadata/redirect/redirect-https-downgrade.tentative.sub.html",
@@ -362831,6 +363542,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-video-element/resize-during-playback.html": [
+ [
+ "html/semantics/embedded-content/the-video-element/resize-during-playback.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-video-element/video-tabindex.html": [
[
"html/semantics/embedded-content/the-video-element/video-tabindex.html",
@@ -362951,6 +363668,12 @@
{}
]
],
+ "html/semantics/forms/constraints/infinite_backtracking.html": [
+ [
+ "html/semantics/forms/constraints/infinite_backtracking.html",
+ {}
+ ]
+ ],
"html/semantics/forms/constraints/inputwillvalidate.html": [
[
"html/semantics/forms/constraints/inputwillvalidate.html",
@@ -367779,6 +368502,12 @@
}
]
],
+ "html/syntax/parsing/html_content_in_foreign_context.html": [
+ [
+ "html/syntax/parsing/html_content_in_foreign_context.html",
+ {}
+ ]
+ ],
"html/syntax/parsing/math-parse01.html": [
[
"html/syntax/parsing/math-parse01.html",
@@ -371657,6 +372386,22 @@
{}
]
],
+ "layout-instability/pointerdown-becomes-scroll.html": [
+ [
+ "layout-instability/pointerdown-becomes-scroll.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "layout-instability/pointerdown-becomes-tap.html": [
+ [
+ "layout-instability/pointerdown-becomes-tap.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"layout-instability/rtl-distance.html": [
[
"layout-instability/rtl-distance.html",
@@ -406497,6 +407242,12 @@
}
]
],
+ "service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html": [
+ [
+ "service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/fetch-event.https.html": [
[
"service-workers/service-worker/fetch-event.https.html",
@@ -416096,6 +416847,12 @@
{}
]
],
+ "svg/render/foreignObject-in-non-rendered-getComputedStyle.html": [
+ [
+ "svg/render/foreignObject-in-non-rendered-getComputedStyle.html",
+ {}
+ ]
+ ],
"svg/scripted/script-runs-in-shadow-tree.html": [
[
"svg/scripted/script-runs-in-shadow-tree.html",
@@ -425691,15 +426448,15 @@
{}
]
],
- "web-nfc/NDEFReader_options.https.html": [
+ "web-nfc/NDEFReader_scan.https.html": [
[
- "web-nfc/NDEFReader_options.https.html",
+ "web-nfc/NDEFReader_scan.https.html",
{}
]
],
- "web-nfc/NDEFReader_scan.https.html": [
+ "web-nfc/NDEFReader_scan_filter.https.html": [
[
- "web-nfc/NDEFReader_scan.https.html",
+ "web-nfc/NDEFReader_scan_filter.https.html",
{}
]
],
@@ -437990,8 +438747,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
],
[
@@ -438009,8 +438771,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
],
[
@@ -438028,8 +438795,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
]
],
@@ -459312,9 +460084,7 @@
"webdriver/tests/find_element_from_element/find.py": [
[
"webdriver/tests/find_element_from_element/find.py",
- {
- "timeout": "long"
- }
+ {}
]
],
"webdriver/tests/find_element_from_element/user_prompts.py": [
@@ -460023,7 +460793,7 @@
},
"paths": {
".azure-pipelines.yml": [
- "fa0dc670502745aa98ec5d86461f2a17ac8e329f",
+ "a534278337d3af9489b9355f3e8fd5575d0c1f74",
"support"
],
".codecov.yml": [
@@ -460051,7 +460821,7 @@
"support"
],
".github/workflows/manifest.yml": [
- "555b9d6c2903c144539a2ec65168d6e9aa3d7344",
+ "e4708873c0d5e415a171ed2598a0b94f22c272b6",
"support"
],
".gitignore": [
@@ -460067,7 +460837,7 @@
"support"
],
".taskcluster.yml": [
- "6bc9253ec2055645981206620ecdee3d1becb792",
+ "cc07b1d67117e98ca098dc9fc5a33497cd9faaf6",
"support"
],
".well-known/README.md": [
@@ -471039,7 +471809,7 @@
"support"
],
"client-hints/accept_ch.tentative.https.html": [
- "4b46610c58103cf29734842869856df3e1d404df",
+ "0f8b525576e0d67baa2ca23381c620909d12e539",
"testharness"
],
"client-hints/accept_ch.tentative.sub.https.html": [
@@ -471087,7 +471857,7 @@
"testharness"
],
"client-hints/http_equiv_accept_ch.tentative.https.html": [
- "74eea344e90879e24568a76ba8e1197f6e9cede5",
+ "2830cb714fad4be98ddcf0ccf7594b749e77b50d",
"testharness"
],
"client-hints/http_equiv_accept_ch.tentative.sub.https.html": [
@@ -471098,10 +471868,6 @@
"dd516a97c965f4a248fa27ed8ce71dae6251e106",
"testharness"
],
- "client-hints/image-with-dpr-header.html": [
- "6c4e60844763469bbe21990879191eac0f296230",
- "testharness"
- ],
"client-hints/resources/accept-ch-lifetime-test.js": [
"05aaec1aef8a50c9aac835fd523c48c680e998a3",
"support"
@@ -471134,10 +471900,6 @@
"b3cf5df4c27224fe30a6ec3b4507aa30a8fe6a95",
"support"
],
- "client-hints/resources/dpr.py": [
- "14d7d550fe28d49a63105ea966d3cf7cf59901b1",
- "support"
- ],
"client-hints/resources/expect-client-hints-headers-iframe.py": [
"e72d77c47d9aae36c619e8e065e5685f7a9c166b",
"support"
@@ -471734,7 +472496,7 @@
"11d8736cb225d6ce575677dcdb70b0a19dd4f65f",
"testharness"
],
- "compression/decompression-corrupt-input.any.js": [
+ "compression/decompression-corrupt-input.tentative.any.js": [
"95e91b662ee47f545167cd05dc4d06b85cb74b00",
"testharness"
],
@@ -488831,7 +489593,7 @@
"support"
],
"conformance-checkers/messages.json": [
- "94d3bc461f5a0d045ed5b6329dda016e1fe0b188",
+ "2dcd3830d72dc42396e7270557954d107e6abbc0",
"support"
],
"conformance-checkers/tools/build-svg-tests.py": [
@@ -489346,6 +490108,46 @@
"c64ecd067c82d050f989f1cbe005fe0b33bb9e96",
"support"
],
+ "content-dpr/image-pseudo-element-content-dpr-ref.html": [
+ "baa25ac87c8f96ca630d2a6b508d6f3649fb8bb8",
+ "support"
+ ],
+ "content-dpr/image-pseudo-element-content-dpr.html": [
+ "7770df39997206261036029734b2304e6be331b2",
+ "reftest"
+ ],
+ "content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html": [
+ "27ce1be8b0d9b46f667da882d1c7903136a5aed0",
+ "support"
+ ],
+ "content-dpr/image-with-content-dpr-and-explicit-dimensions.html": [
+ "783fb03a3b06278b7d3284bee80ac123b0d10109",
+ "reftest"
+ ],
+ "content-dpr/image-with-dpr-header.html": [
+ "6c4e60844763469bbe21990879191eac0f296230",
+ "testharness"
+ ],
+ "content-dpr/resources/background.png": [
+ "6db6c6b1b9d851c7a85b93ddc9e5ddf368ac0a7e",
+ "support"
+ ],
+ "content-dpr/resources/dpr.py": [
+ "14d7d550fe28d49a63105ea966d3cf7cf59901b1",
+ "support"
+ ],
+ "content-dpr/resources/square.png": [
+ "01c9666a8de9d5535615aff830810e5df4b2156f",
+ "support"
+ ],
+ "content-dpr/tiled-background-image-with-content-dpr-ref.html": [
+ "58cbeb436fc1181eac3dc2e55fa343b0dd05e8d4",
+ "support"
+ ],
+ "content-dpr/tiled-background-image-with-content-dpr.html": [
+ "94f2f72d40196749faf6092d178f67dfc7067dcb",
+ "reftest"
+ ],
"content-security-policy/META.yml": [
"ee8f1ea7e07b94711ddc65e43a6c32dbc5983612",
"support"
@@ -492250,6 +493052,18 @@
"1b1ae529767fdb2744f31fd860bb881d2b744735",
"testharness"
],
+ "cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js": [
+ "7df0b7002f3448df696435ba7cb0b12265978cac",
+ "testharness"
+ ],
+ "cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js": [
+ "625f521261507b0c82d5e059f40537f84dfee4c8",
+ "testharness"
+ ],
+ "cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js": [
+ "04c21447c5d783232f4e882cbf7512df5b30ff03",
+ "testharness"
+ ],
"cookie-store/cookieStore_delete_arguments.tentative.https.any.js": [
"3a2b512bb1001864ea27a0fc66a267371976c501",
"testharness"
@@ -492326,6 +493140,10 @@
"a4b31178ab0977e96e86e45b550712b862c6d2c7",
"testharness"
],
+ "cookie-store/cookieStore_subscriptions_empty.tentative.https.window.js": [
+ "907a34b4de6632f5e91adbcd606839a92eead320",
+ "testharness"
+ ],
"cookie-store/encoding.https.any.js": [
"41ce747f8145ace74a9986120d5afaa2a6c93d88",
"testharness"
@@ -492338,6 +493156,10 @@
"0c7a5150237910b1af301f91f782f300c713071a",
"testharness"
],
+ "cookie-store/resources/always_changing_sw.sub.js": [
+ "9fdf99848fa50316e275cd6636a5755270a9bb1e",
+ "support"
+ ],
"cookie-store/resources/cookie-test-helpers.js": [
"178947ad6eca72967aa9bbc3a13172a0402bc17d",
"support"
@@ -492366,52 +493188,28 @@
"6879c5da926384b2be6969b5585c8e2a75539f75",
"testharness"
],
- "cookie-store/serviceworker_cookieStore_subscriptions.js": [
- "41cbed01a5be61b6eafa739fe65a97464c34c13d",
- "support"
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html": [
- "375bce622c348d831c968ae63b90b44ae98de5c2",
+ "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html": [
+ "bff1f04bad061c187b33b56e1760b97b784cb690",
"testharness"
],
- "cookie-store/serviceworker_cookieStore_subscriptions_basic.js": [
- "293969e5b8f86fac896b0fa75f632b31504a9a83",
- "support"
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html": [
- "0353bc2c2096f72450ad6f7b6aad5439e9bd0b20",
+ "cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.js": [
+ "bfbea7d3de386c18828bab90da20c97afd7b88f7",
"testharness"
],
- "cookie-store/serviceworker_cookieStore_subscriptions_empty.js": [
- "b62318699740938134fc51ab4c42670ce8878aca",
- "support"
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html": [
- "38ec4048f1944c3f6bfe904592ee0646e28979f2",
+ "cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.js": [
+ "17baa7fcbeec00d92753708b1e816b50eea230c0",
"testharness"
],
- "cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.js": [
- "258441921bf6bf7f72eeaf8602653c55ca991af0",
- "support"
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html": [
- "ee9713e933b8432c73c7e2e9ad523a453ddb4c60",
+ "cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.js": [
+ "b1cbeb9a12f31a2111ac6afe31a98a2b21433d52",
"testharness"
],
- "cookie-store/serviceworker_cookieStore_subscriptions_mismatch.js": [
- "bd37b9be1eec4aa4a1469502074463acd37f17fc",
- "support"
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html": [
- "b8ad46a57101386bd84b391953e76228249eff29",
+ "cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.js": [
+ "4cfc47b39fb9a8c08c90e1cebf5150c5a455eef9",
"testharness"
],
- "cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js": [
- "7fc8eabc5701e2e7bb0edacb57bbf90783ba10db",
- "support"
- ],
- "cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html": [
- "a0923548c78d5b25aa9efe521aa5f341166fef9c",
+ "cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.js": [
+ "d3fe3281acad629ff6f4d4af8d28f9d13ccd5525",
"testharness"
],
"cookies/META.yml": [
@@ -519110,6 +519908,10 @@
"226a3a19ad17b8fb773e00174b1dcd1593e6be61",
"testharness"
],
+ "css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html": [
+ "d6480edd621592928984f2d88684976a0990e734",
+ "testharness"
+ ],
"css/CSS2/linebox/leading-001-ref.xht": [
"2d6e784d2ed2f6b66e4be72d9b6d261d63bc98e7",
"support"
@@ -555975,7 +556777,7 @@
"testharness"
],
"css/css-backgrounds/animations/background-image-interpolation.html": [
- "b442c4e9120f72ecf1e61365e7483ae6c3003ff8",
+ "feda6afebed310fc62aa53c28aceb417e6e81258",
"testharness"
],
"css/css-backgrounds/animations/background-position-interpolation.html": [
@@ -556006,6 +556808,10 @@
"aebadbbafb236a090aa543ecf82e5661bee7de74",
"testharness"
],
+ "css/css-backgrounds/animations/border-image-slice-interpolation-stability.html": [
+ "26431334e4acf13f6c095868a0e9cee6926a9ef1",
+ "testharness"
+ ],
"css/css-backgrounds/animations/border-image-slice-interpolation.html": [
"60301e755bafeb699899b54988f3e3c055b13a4d",
"testharness"
@@ -559906,6 +560712,14 @@
"fb80ec45bceec093481fa54513c606c5952628b1",
"testharness"
],
+ "css/css-break/fieldset-001-ref.html": [
+ "1422086da71c3e62bde10d499a7a0de220737f3f",
+ "support"
+ ],
+ "css/css-break/fieldset-001.html": [
+ "d320fe15bebcfbdd332ee9411b548dab60f8fba6",
+ "reftest"
+ ],
"css/css-break/fieldset.html": [
"fe76988293b8d1d9a6226b23bb9b40e86fcc007a",
"reftest"
@@ -560018,6 +560832,10 @@
"06108ac800c19c68841f2a0e8867fb05e868c1ab",
"support"
],
+ "css/css-break/tall-break-inside-avoid-at-start.html": [
+ "6e9ab8bd9f56502247a6d8c2c2045b8f3af3605d",
+ "reftest"
+ ],
"css/css-break/widows-orphans-001.html": [
"8da27f0b6594fc7ddd90bdb160be8f80a9479038",
"reftest"
@@ -563178,6 +563996,10 @@
"4e70cb46303c01463675abee7b284da616bc355b",
"support"
],
+ "css/css-display/animations/display-interpolation.html": [
+ "d0b1d9573b8c5045785945dc356a601cb0ca170d",
+ "testharness"
+ ],
"css/css-display/display-change-iframe.html": [
"c12c413d5390aaf4ea4c71c689952bbdb62069df",
"reftest"
@@ -569902,12 +570724,44 @@
"0b470bd6407c8ff741c10497650f008b772d8126",
"reftest"
],
+ "css/css-fonts/standard-font-family-17-notref.html": [
+ "3d01985ed6b0582a9a7c27674ef44a5dc34377dd",
+ "support"
+ ],
+ "css/css-fonts/standard-font-family-17.html": [
+ "9ce56ed8fa6ec6cc1ea7b7ddc8f4a7221730dfff",
+ "reftest"
+ ],
+ "css/css-fonts/standard-font-family-18-notref.html": [
+ "7829a0c5e19e6bd90ed7edaa0ee9045add3d3b4a",
+ "support"
+ ],
+ "css/css-fonts/standard-font-family-18.html": [
+ "69e5cabd6ec261a5f3f63f0dcce2d738851c1b10",
+ "reftest"
+ ],
+ "css/css-fonts/standard-font-family-19-notref.html": [
+ "7e876ced31324f0cd7badb15641e9c0625bbe5e4",
+ "support"
+ ],
+ "css/css-fonts/standard-font-family-19.html": [
+ "43dc24b16750566f9e7d8d2d69bcdfc8bebef265",
+ "reftest"
+ ],
"css/css-fonts/standard-font-family-2-ref.html": [
- "e19801ba77086541fa50aba88493f13b3e60be6d",
+ "a2fe8646e13cacd08f30c884025f48a02706e2da",
"support"
],
"css/css-fonts/standard-font-family-2.html": [
- "4fbca52b659329fe00c599cf3677d39f0f86334b",
+ "2827c6c2cb8ff3936000e67e27298771ec1ee729",
+ "reftest"
+ ],
+ "css/css-fonts/standard-font-family-20-notref.html": [
+ "7e876ced31324f0cd7badb15641e9c0625bbe5e4",
+ "support"
+ ],
+ "css/css-fonts/standard-font-family-20.html": [
+ "7d0335e06160ea15af645d73d4537bfe29e1f008",
"reftest"
],
"css/css-fonts/standard-font-family-3-notref.html": [
@@ -569935,19 +570789,19 @@
"reftest"
],
"css/css-fonts/standard-font-family-6-ref.html": [
- "e9e24dfc62cfea8760c39bc7b8fe31e0d3261700",
+ "3c26321fffcca83eee35067410498bc4103eb908",
"support"
],
"css/css-fonts/standard-font-family-6.html": [
- "9a5fd418bda32df3d53098a479f6d4cd6dd33224",
+ "f6a0f158b94619e9937233d0973474df17c3f24a",
"reftest"
],
"css/css-fonts/standard-font-family-7-ref.html": [
- "4dad37fed3d92aecb50b98504f38c2590be6808d",
+ "0e2df68c1e29a4cb0e5a18ae3d25ea65f8200e6e",
"support"
],
"css/css-fonts/standard-font-family-7.html": [
- "68ebe0e04e6a625e3acfe9812a044d21f9bb360e",
+ "11af83fc9e6e36eb0b27131eeaed323272287e94",
"reftest"
],
"css/css-fonts/standard-font-family-8-notref.html": [
@@ -569967,11 +570821,11 @@
"reftest"
],
"css/css-fonts/standard-font-family-ref.html": [
- "e9e24dfc62cfea8760c39bc7b8fe31e0d3261700",
+ "3c26321fffcca83eee35067410498bc4103eb908",
"support"
],
"css/css-fonts/standard-font-family.html": [
- "907a437207c8d406746b6bb9733946a81a354a8d",
+ "b093ad442e1049b6747f115d86ec0220717553d2",
"reftest"
],
"css/css-fonts/support/100x100-lime.png": [
@@ -580862,6 +581716,10 @@
"228604ee357d22027c1691bf2baf27a52729222b",
"reftest"
],
+ "css/css-lists/animations/list-style-image-interpolation.html": [
+ "b953d8c2215dd9e01b9b2a342dd7e4088e50b415",
+ "testharness"
+ ],
"css/css-lists/change-list-style-type-ref.html": [
"033af1333132a2696d1a80ceacfc91f1ebf67a08",
"support"
@@ -581382,6 +582240,18 @@
"6f6c344f305d84d8334fc38f07484ebc95266643",
"testharness"
],
+ "css/css-lists/resources/blue-20.png": [
+ "c464c75eeca3ead65c00e7c26150d97ad58da5c3",
+ "support"
+ ],
+ "css/css-lists/resources/green-20.png": [
+ "738d1db8469e370fece1c7ce553ee0ec43986404",
+ "support"
+ ],
+ "css/css-lists/resources/stripes-20.png": [
+ "de30887ea358ece8e0c1cd593d3d7c66bc744bd4",
+ "support"
+ ],
"css/css-lists/resources/white.gif": [
"3aa2098dc8817f5360d13440f3d6245a030dc31d",
"support"
@@ -581738,6 +582608,10 @@
"e00170ed331bcbca450a4de5ef41c415cc88d2b9",
"testharness"
],
+ "css/css-masking/animations/mask-image-interpolation.html": [
+ "beb9c9eaab0344cfdbb61700f52d9ff1f033e148",
+ "testharness"
+ ],
"css/css-masking/animations/mask-position-interpolation.html": [
"d832048ca37b2693218d1c2891d9cb3fa8ba8609",
"testharness"
@@ -582826,6 +583700,18 @@
"63aed3e33c46bdbf2c1bf8c8b8758daff7ab0bee",
"testharness"
],
+ "css/css-masking/resources/blue-20.png": [
+ "c464c75eeca3ead65c00e7c26150d97ad58da5c3",
+ "support"
+ ],
+ "css/css-masking/resources/green-20.png": [
+ "738d1db8469e370fece1c7ce553ee0ec43986404",
+ "support"
+ ],
+ "css/css-masking/resources/stripes-20.png": [
+ "de30887ea358ece8e0c1cd593d3d7c66bc744bd4",
+ "support"
+ ],
"css/css-masking/test-mask-ref.html": [
"938235acbd36309fb969c55f161239bcd5ab969e",
"support"
@@ -582882,6 +583768,10 @@
"a47ed89a2e0eb11624bfb5c96d547f632f9c27e7",
"reftest"
],
+ "css/css-multicol/equal-gap-and-rule.html": [
+ "bf6d6b9cefa8cf4ccf3be422ffef942ddc595905",
+ "reftest"
+ ],
"css/css-multicol/extremely-tall-multicol-with-extremely-tall-child-crash.html": [
"1f74697489df2d8ed687b40d3681d9918f2ecb0f",
"testharness"
@@ -587110,6 +588000,14 @@
"fedf917c62a1c34c054b7484594ced16960c4c17",
"reftest"
],
+ "css/css-pseudo/first-line-and-marker-ref.html": [
+ "8095d5ca01527e4e1ccacd25887b499e198e80f0",
+ "support"
+ ],
+ "css/css-pseudo/first-line-and-marker.html": [
+ "f0a994438f1f848837b6a7814ceb621aae886fde",
+ "reftest"
+ ],
"css/css-pseudo/first-line-and-placeholder-ref.html": [
"dbadd365c25a9e3214e9920948d2a5c934075e2c",
"support"
@@ -587327,7 +588225,7 @@
"reftest"
],
"css/css-pseudo/parsing/marker-supported-properties.html": [
- "451aac149dbda8eb605dadc377bfa4186a871a50",
+ "a34fd76fea48eb05b080933b63e049a667d33b3c",
"testharness"
],
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html": [
@@ -590239,7 +591137,7 @@
"testharness"
],
"css/css-scroll-snap/scroll-snap-stop-change.html": [
- "0a73ff1206d98dd6da3c774173cb41e145f1e616",
+ "10e90d3cff4a50cfe975afd52e31fe23d2c94f1c",
"testharness"
],
"css/css-scroll-snap/scroll-snap-stop.html": [
@@ -590314,12 +591212,52 @@
"48bfb51c2d9e838d6ed78fbda636b3657607abc0",
"testharness"
],
- "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html": [
- "9b8240715992c8c1f69dd8a154f58e47c6b88abf",
+ "css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html": [
+ "d10c013e1ee0d713057c26bd7acd961b4c0a5edc",
+ "reftest"
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html": [
+ "c8009b626cb63ebcef4a211f8b61249faf36c72f",
+ "support"
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html": [
+ "aa65dde1810ebabfccfa76716063bd8e83c07bb0",
+ "reftest"
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html": [
+ "898e64be6197679635290aebd22467c96a509750",
+ "reftest"
+ ],
+ "css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html": [
+ "b3141f03f3c4b9a0a0108df8b55356e6fde3a759",
+ "reftest"
+ ],
+ "css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html": [
+ "53141707bb307dd13f13aee6d78ec67dffaa6576",
+ "testharness"
+ ],
+ "css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html": [
+ "d26359658f479c61df8d0a559fcb5558f63106a6",
"testharness"
],
- "css/css-scroll-snap/snap-area-caputring-add-scroll-container.html": [
- "d045367639200d99216e3cf498e24d56e1b2bf97",
+ "css/css-scroll-snap/snap-after-relayout/move-current-target.html": [
+ "83c2c478bf5921cedd9cb4d48b5de14533f4bbcd",
+ "testharness"
+ ],
+ "css/css-scroll-snap/snap-after-relayout/remove-current-target.html": [
+ "82bddf8074882e03d9c2dd669815303fbdd2b039",
+ "testharness"
+ ],
+ "css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html": [
+ "6ceab295e4ce89ff46d8ec3db56c566513098ffa",
+ "testharness"
+ ],
+ "css/css-scroll-snap/snap-area-capturing-add-scroll-container.html": [
+ "15f44ed8b7bdbcf8a2810523a0ee8b793edadd49",
+ "testharness"
+ ],
+ "css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html": [
+ "d3750abdd7e867a3208edea16ceca3b24e2885c7",
"testharness"
],
"css/css-scroll-snap/snap-at-user-scroll-end-manual.html": [
@@ -592078,370 +593016,6 @@
"bce0a18be6f66e57cad2e2e90694a6f53dab71c7",
"reftest"
],
- "css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html": [
- "d4f0281ae48cd9ab43403fcbfc0c50d8c96e1381",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-001.html": [
- "4d17602a95f91af86ef16825203e903d841e68cc",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html": [
- "ab847fc36e56155a0b3638a24f9ca90077c76b23",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-002.html": [
- "55f209494125e08900b60bc566b5c85d0d123d54",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html": [
- "6a2d05149894c0e7ecfc5471bab6055bc51f072d",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-003.html": [
- "3dd41ba1d2c001bcaaec7ea8338bcb3cce41d52e",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html": [
- "6e710943de9957bcda6ac83985615e35f2154d1e",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-004.html": [
- "9cce7ae25fc8f343e9a693e1ee6ef92847e71ece",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-005-ref.html": [
- "950f7190cac250124ba5cda419a71126e157d2e0",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-005.html": [
- "92b777d22e054bef9d675f00b7d67845f17081df",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html": [
- "d545093e2db58163637e466b233cd15da40d0f7b",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-006.html": [
- "82c6e8eef8536cb95f291828107a53a97a1d1428",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html": [
- "6b3f63685ac07bb0e5f95570744a7b87c56158f6",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-007.html": [
- "85fcae6cd91ba8a2f9404497992ba5b7d6411ad9",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html": [
- "5c6186fd48cf0dfd2ee83fd6ed2819fa6dbb0989",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-008.html": [
- "f3b344f6b0a79464090434127309f724ab4ba64e",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html": [
- "223e0c8a33a6832e37dc4b78de4c27b5a3abcc11",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-009.html": [
- "06a02fe78bd08602c14f890ae4bb374076807789",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html": [
- "eaaa0977f139938e2657814fd78d543f2bc5e0db",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-010.html": [
- "eea76ffb07325ac9268581f9b2db348f8301e4df",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html": [
- "29d1f4e2d1a108dd53c5905e45d9c7923ca9a2ba",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-011.html": [
- "c7888f906f8b7ec92648a7cb5b4b18df2bbeaad5",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html": [
- "ed9857aa2565762f514fe5fb73173b6a5da6494f",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-012.html": [
- "889b07ace922271e335054992d6731264a291c9f",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html": [
- "9f8334c03d508bc1d91d0163674a28c89c77e034",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-013.html": [
- "1082100012fd890d466cbea1aafe8c1101ebc945",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html": [
- "66c10824893089e0c78dd5f6f68e167eac7438b6",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-014.html": [
- "4dd45a2da409449d225c6768d2e19564f0b567d6",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html": [
- "ae65a3b5ca547b19e8bdc7b38099c8206edfa6c4",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-015.html": [
- "5ca5e49992e1d537499bc8ea314229bdfdc5bfc7",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html": [
- "f80510f630624b7bce27483fe9847cd182114fe0",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-016.html": [
- "ce6ac5c56e4a101fda21a46dc37d81ebee4b1dd5",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html": [
- "553451a7075559dad575be17e2ce08b62cb67832",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-017.html": [
- "5e2122f34ecf8e74e54c8b101772de0f9be0cdb6",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html": [
- "17261caa8af2b65f80ed331fb38bb5c2e37d5b10",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-018.html": [
- "68931834d630410e1ca9906db8a97317b26ee062",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html": [
- "8e55d7b02f9d1d7352ebdeeca1ee48a1009b49f4",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-019.html": [
- "cae8e0739fe823e82369fa5661a7f70b4dd30e0f",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html": [
- "1ee5ba8376ddc7e6bb74d765755fbe89b9e33b6b",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-020.html": [
- "a7286ce1054cae30cb8023cae074d9be8781fa33",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html": [
- "35db43fcf44a3668ae19f0d97ea7a872223fcc9c",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-021.html": [
- "04591924f659615dc22851102f5d59b4d83e5e18",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html": [
- "b0df199283470db4a7ecba4011a3429e8065bb7e",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-022.html": [
- "3593b9cce38f158bf96164ba1e8110c09eedbc01",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html": [
- "800e4ae706447004c3c8ff5bf8a530216cba1dea",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-023.html": [
- "c64ef66a03fd18b57e34ade82bd538e33578f129",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html": [
- "02ec85a0084910bb09de2e7871b7ddd7d8a68265",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-024.html": [
- "b11317d96b015282e9bcc043efcdbba799851bc6",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html": [
- "60d5cc9cd9aadb99620773ea11eaf9e2081b771b",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-025.html": [
- "ab9c56fc528ed848a200a890e0df3cc018618529",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html": [
- "2e456b43422c014a10c62fe93c776c43ad59581a",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-026.html": [
- "100f542b783794dbf5c07ac146f1e0ee5f481db7",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html": [
- "99e86d0c38fd2b76745b6cbd05224dc5aa0537d6",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html": [
- "9c2dac07da2b012a4e927916cd18f980a15d9e68",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html": [
- "70a245469b702bb5b2348ca7698c71ac1ca99671",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html": [
- "5b3902455bdccd8d16f8e9795e3821f5ab73799a",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html": [
- "246a5bad51ed6155177a7f1fb11705c4ca7dd944",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html": [
- "07ec0326787f96e08654f9643e7032309c62bfaa",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html": [
- "39c6abdcf8eba74a04c1255388ca551cf8988ed5",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html": [
- "df662e5c7f17342a0facdf2c614689833b4a424b",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html": [
- "535915a7a7bed54142f731a21eb20a97379650a1",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html": [
- "66d008ce6cef7cfe93d097a362e6cfba57b57a7a",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html": [
- "eb6394fe28464f74106c99830d67af1efa58aba4",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html": [
- "90e4f53bf64fe4d9eb9c19036abdccea98a582bf",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html": [
- "d5e7c9ff9bb9c4f155955065161e14f1fcbc954e",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html": [
- "dfeed45d73b91e620a8d3aefe8461af2c21c3e86",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html": [
- "c23984f5f1a4d07c2121088987718781d00fc85c",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html": [
- "baf9bef3aca6ae9d9c6026d993dda9e4584e78e3",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html": [
- "9b9e25d3c8da8693f82bfa7d49e87a320bb3f141",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html": [
- "41ef1fddc19d6ba3ec3ee6c6adfce4d51d078929",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html": [
- "6894b4643ad616d4acf3a631c991718c76cdae27",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html": [
- "df2c57b5d8a7f884a31934a15cc1e1037d3a6c8e",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html": [
- "5cce190275940e70c3e3451a47ed9432025dab46",
- "support"
- ],
- "css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html": [
- "45b8fbdd24484d6d2637d440edad3dc3e959cadf",
- "reftest"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html": [
- "e9a073ca2aacd9dd9fce6a1b0d33493498b33bac",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html": [
- "1b6cba20f88d78f8e29d385676a261d6d78c8e67",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html": [
- "b34c73b230f50d00371811ec063180bfc249fad7",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html": [
- "6f95274c637a54bd88b1bf5e732b8a6aaa291e32",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html": [
- "1f801124a2b5f2fe3cf96c76b9b64fe33d9f50da",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html": [
- "e461476211879b903e451e662ad393162a94afdd",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html": [
- "c53a77e5631068101f4d58a9a67d6db8b9c8c2a3",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html": [
- "6ad224d11d3831ba227fc41ab90bf0c3b748be46",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html": [
- "ad5aef95dca952785a8263a7b6447ef4e4b83e03",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html": [
- "29be33d4a3d9a33ec30cfe150f9c9f80d5fd796d",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html": [
- "b4cb2dbffd2004762d028f092e82e5f9297655ec",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html": [
- "e70c3179223eaf220edd3993069848b8e0294dea",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html": [
- "7ab13c7d7986151f22e01711f34a9184effca082",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html": [
- "08602e5347f3de0827446875b15a29c8b6789b27",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html": [
- "b89f6567ae27595ac752ece8bfe66784d16146de",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html": [
- "e2d23eabe5da207ce82519e9f57adcbd4cf5d70c",
- "testharness"
- ],
- "css/css-sizing/intrinsic-size/resources/dice.png": [
- "c82d01517cd056fe1b63266b00fb9a96ce6251a2",
- "support"
- ],
"css/css-sizing/min-max-content-orthogonal-flow-crash-001.html": [
"d2617f8aa2d1c966e394abb1d1617c012ea4648e",
"testharness"
@@ -592542,14 +593116,6 @@
"11c34eafc32812da1b4da1552afe08c231cd69db",
"testharness"
],
- "css/css-sizing/percentage-resolution-001-ref.html": [
- "a4e7f1ece4675bd415ed29ed0801b4890a31c9c4",
- "support"
- ],
- "css/css-sizing/percentage-resolution-001.html": [
- "b2cc727ca7a94f4c4f27a3d4c515f8665b769f34",
- "reftest"
- ],
"css/css-sizing/range-percent-intrinsic-size-1-ref.html": [
"9a68590b6389eb9c1fefc2dc37f42b2a60b3b41a",
"support"
@@ -594927,7 +595493,7 @@
"reftest"
],
"css/css-text/hyphens/hyphens-overflow-001.html": [
- "4154e5e1181b47f39b238abb40537262fe4906dc",
+ "948b728254a3a097964e3a341f8475c0c93b4340",
"reftest"
],
"css/css-text/hyphens/hyphens-shaping-001.html": [
@@ -594955,7 +595521,7 @@
"support"
],
"css/css-text/hyphens/reference/hyphens-overflow-001-ref.html": [
- "db002ce45d84a89ba9692e8e6d3c97a5227fc64f",
+ "08d521d33960ea5d495de39ce9bb2be5fc5c29a0",
"support"
],
"css/css-text/hyphens/reference/hyphens-shaping-001-ref.html": [
@@ -598258,6 +598824,30 @@
"d872c0b6fbc3324836e7565d1b623e64032db1ab",
"testharness"
],
+ "css/css-text/parsing/word-boundary-detection-computed.html": [
+ "b12922924ad632ffecef3eca0a05ec603f7b537d",
+ "testharness"
+ ],
+ "css/css-text/parsing/word-boundary-detection-invalid.html": [
+ "a844566b8caa7b296865a2b8d89f17e079bd45f7",
+ "testharness"
+ ],
+ "css/css-text/parsing/word-boundary-detection-valid.html": [
+ "81a8ea32b997c20e3e4c74c97b508be5daea3395",
+ "testharness"
+ ],
+ "css/css-text/parsing/word-boundary-expansion-computed.html": [
+ "054a298ae7899512f6cad61aafec38b063c7c1fc",
+ "testharness"
+ ],
+ "css/css-text/parsing/word-boundary-expansion-invalid.html": [
+ "6b68e578d4d7ac4c94d15d76997a4ed0c96e130f",
+ "testharness"
+ ],
+ "css/css-text/parsing/word-boundary-expansion-valid.html": [
+ "cf1128a5f726cf5acb6f259309509ba4b7909ec4",
+ "testharness"
+ ],
"css/css-text/parsing/word-break-computed.html": [
"5fbf0ae77495e581bc7998af78ce57e7ef0730fd",
"testharness"
@@ -601402,6 +601992,350 @@
"a484f1cf9167e468063cf2205493b8e71a254470",
"reftest"
],
+ "css/css-text/word-boundary/reference/word-boundary-001-ref.html": [
+ "620079f6ad48bba3d65a9bcd92edfd717228b973",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-002-ref.html": [
+ "70a1a6528e704b26ef5afdec938741ff30a962f4",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-004-ref.html": [
+ "fbe74942b14ef5cdffbace68f64beae61de5bf9e",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-007-ref.html": [
+ "b0cb8913084fee3c86ff549fec616f19086630f9",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-008-ref.html": [
+ "ff73104a004eafca18c2b7311edbf6469e329bc9",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-009-ref.html": [
+ "815fe800e3de5cc663fa892284ca1947f3e115d1",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-010-ref.html": [
+ "2ca6b8db7e4d7c6a01de6eca1c2048301bfe5788",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-011-ref.html": [
+ "e1af62ffdf0f3de49d90a058e367b7a0296b6fc9",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-012-ref.html": [
+ "016dc5968c0a85401f15715381daa7d95ab95c15",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-013-ref.html": [
+ "9490e52d1ba6d4ad4a0e62528f9688efebc4a091",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-014-ref.html": [
+ "dbec99b082719a1d9153ca75fa24c3b859dddd00",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-101-ref.html": [
+ "f51208ab95fd4aaa804684673f09acf1492ded4d",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-102-ref.html": [
+ "df308cee75cde74f3f71c8f0fa8d912a598de54f",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-103-ref.html": [
+ "64f2b231c042b497c51375ef1cdc1ab3a8bfaed6",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-104-ref.html": [
+ "15843b7296ef70a33f2e8a167330174c019f4b66",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-105-ref.html": [
+ "3ba4c6f143c4f50b49f923028c1c53a4871573e5",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-106-ref.html": [
+ "04d54ca20a8ce7fb11594762fa601eb72a11b92d",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-107-ref.html": [
+ "2decfe1cc090c3924409b4794ddb8b8bf5284aac",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-108-ref.html": [
+ "45497690fe4e7fdf8a3d307f0138c3e10929c6f9",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-109-a-ref.html": [
+ "3cf81f6175ded80e3a0603ff60c5118cf9a23f36",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-109-b-ref.html": [
+ "3b787b91581dad3650d6ec94b67d68413948278d",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-110-a-ref.html": [
+ "3347778df6fa08e1a07235fb54dd322aa3bbfd22",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-110-b-ref.html": [
+ "550c9e88880f6335351bd2f2cae1355697e0c5e5",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-111-ref.html": [
+ "fbb536e56596271754362f645bb703f21f2eeffd",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-112-ref.html": [
+ "f7f793908104d0da46306d3e9748936de97605b7",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-113-ref.html": [
+ "738c600f5b46ae1d8b3b67fe0ce76fcb08f04696",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-114-a-ref.html": [
+ "4ff39ee4f3f790ee64ebeda3218916f84c51aa11",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-114-b-ref.html": [
+ "5b58e078dcf40432187a52836a2e589c08ac5acd",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-115-ref.html": [
+ "a7d1dffcd9f18226763a65af359d44dea3c24b1d",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-116-ref.html": [
+ "62d26d6a4b5b41dcedacc1d81b3c9463398a5205",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-117-ref.html": [
+ "81d1f0601dd1f6f0f3527e5b1c6d277e04a0593d",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-119-ref.html": [
+ "e198dafafa11666c4038f396ce0a1ba9f8ab5953",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-120-ref.html": [
+ "e9cecd792b0a9aedb440ff0622148d0cd345930e",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-121-ref.html": [
+ "86ecdba91291062da86789bf22ca07956a6bc8fd",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-122-ref.html": [
+ "271705534689adbce52ed5dfcd6eb9edd4e2d1ef",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-123-ref.html": [
+ "35b0e5f05a74624385b6f07e493294409434eb75",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-124-ref.html": [
+ "fd732b44ec4ed087a9a652db665cb2165b8be680",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-125-ref.html": [
+ "aad7d3d4d95b7184082042ac2784bc0fad01cb79",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-126-ref.html": [
+ "91f2ec7b1936070b414e77b67f98d119b46b5e7e",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-127-ref.html": [
+ "b354a4f12dc601d1d1bd938c2d3437a6fc78e493",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-128-ref.html": [
+ "8dcabb01e29861d6bd830e5ce0c48cc2282ace18",
+ "support"
+ ],
+ "css/css-text/word-boundary/reference/word-boundary-129-ref.html": [
+ "5d7d5577aec739f252b7a456c9ad98caa1b0b149",
+ "support"
+ ],
+ "css/css-text/word-boundary/word-boundary-001.html": [
+ "08ad0d1a9883d961199cdd571623883f006752b4",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-002.html": [
+ "58dede44b2c844b52a74e5fab831371a61e58cc5",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-003.html": [
+ "41151753f92227b65f9c64b4348cc8f96b235bab",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-004.html": [
+ "ad7f19fdb995ab17f34cdd3b752a58ae9643432c",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-005.html": [
+ "f124c3737ca138f6cf002ac8809d686737037929",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-006.html": [
+ "587847b75cd6659b14f808fb05e8cacaa457ca3b",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-007.html": [
+ "912188c7404cbf443672eeb0ad86308765131cb3",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-008.html": [
+ "a1dfb828f256326f8971d3ff257d594d02dab7d5",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-009.html": [
+ "cb8ec84fc2b2954ba10748223c7ca6f8c2283cd1",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-010.html": [
+ "6e1cc1ccf2749d57097facb10fe3e447a1958fdc",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-011.html": [
+ "4da3a7a5c9d59e5e39ff9ff39c5ab63bef7f34b2",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-012.html": [
+ "aabc8d6861eb1c1f09bb0ae14d12d06dcf77d610",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-013.html": [
+ "f0d9641798742840df7393ce1ab6579bd72b5792",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-014.html": [
+ "f440064798519237e26b82600974d6eb270d3f37",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-015-manual.html": [
+ "8b7c6d98eeb6f60bc21797a7a00318aa7edf7681",
+ "manual"
+ ],
+ "css/css-text/word-boundary/word-boundary-101.html": [
+ "40a66a4271a18dfbb33dd05c6198fc9178da065c",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-102.html": [
+ "e3f9828f320f88f663ecb2d6e434078d10f6b985",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-103.html": [
+ "114c6f1367c0ff6acfb97103d8fe2c85df948f6f",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-104.html": [
+ "a7a2f38fda118078d4b0f374f594b717af04fd3d",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-105.html": [
+ "fa991221e52814bc7f93b8b51a8c08766e982bee",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-106.html": [
+ "a968af7767217318d67b9045b434d3eeee2c07b5",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-107.html": [
+ "591c1afb8d4cafccbaf02037c818d504c133d3d6",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-108.html": [
+ "c23a6fe2b2be64a4de14ad311ca96a8753f37b00",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-109.html": [
+ "c5694cc153febfbb60bf992f9e83ff6835e6359d",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-110.html": [
+ "bdfedf19e6133e2b371627ce2dac04a36b8757cc",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-111.html": [
+ "d2d3df27085265cee2abbeba7b83cad0d3500b6d",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-112.html": [
+ "73c2763d8363415efd2401836dae74aebf6d3ced",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-113.html": [
+ "f5e0cdf046db1be6788c2799540039bebdfb5888",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-114.html": [
+ "b18e1e53cafcb48a08779c1e302ae1643ab66169",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-115.html": [
+ "b1266c53dbd9f150b1bc9cae907c01d7f7ee1198",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-116.html": [
+ "4b152173b7c0d14db3e5885db6a34b27edac9484",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-117.html": [
+ "558b6a981f03addbfaa60071da68d5c462f6b074",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-118.html": [
+ "e20bc354105d4ec7d1cec7ec31e5ee942127788b",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-119.html": [
+ "fb3aaebc92ada8cd7f31fcba2a76b4dcf78f1012",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-120.html": [
+ "8f2bff5b229342a7bbc77062c3de2033e7d3a5ff",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-121.html": [
+ "667e1e068e2673af25f65bd85915e3cdb87977bc",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-122.html": [
+ "a9d3a9993078fbf9ac6bafb317d80fc04438a7bf",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-123.html": [
+ "bcf1f0245e8d914eadaf527c33bc7c248fd0f6c7",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-124.html": [
+ "a4a4902ba29db137b966dd509d038ab3b566919d",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-125.html": [
+ "a04ec4f075cfc4580f2dc5db894da85cf2c9f11b",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-126.html": [
+ "e4a5c6b0fb454135dc257a0e82ab70c57edfc34f",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-127.html": [
+ "21f00e664b7726d88060fb7691edfd44704b2984",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-128.html": [
+ "cb2d1ee4e78c1603d000bd5de71d8fcf2eb38b67",
+ "reftest"
+ ],
+ "css/css-text/word-boundary/word-boundary-129.html": [
+ "6e137177029f7bfac006c32152ef7e2611f8fe24",
+ "reftest"
+ ],
"css/css-text/word-break/reference/word-break-break-all-010-ref.html": [
"0e0300a72dc920a5ffb54cda6fbe84a2f517d010",
"support"
@@ -602219,7 +603153,7 @@
"support"
],
"css/css-transforms/external-styles/support/svg-external-styles.css": [
- "22978f89b0487bdf3f70d861107d540b06f8cf74",
+ "ad60fd81174f78c3a5a4afeb7d4ebed912861409",
"support"
],
"css/css-transforms/external-styles/svg-external-styles-001.html": [
@@ -602266,10 +603200,6 @@
"353f097451b222e0a19c20148136c66e4a9a95eb",
"reftest"
],
- "css/css-transforms/external-styles/svg-external-styles-012.html": [
- "575693dc58b35cd96be4fdc77bbdab53023e9f11",
- "reftest"
- ],
"css/css-transforms/external-styles/svg-external-styles-013.html": [
"f45639f8c6e2adf83830157f76a6588c059c0c3b",
"reftest"
@@ -602911,7 +603841,7 @@
"testharness"
],
"css/css-transforms/parsing/scale-parsing-valid.html": [
- "bbd443a717ab3c4acf1c7be52df4d92b9b8a9d03",
+ "9055e7dfd5f4b9ea03683ff546317198f7946c3a",
"testharness"
],
"css/css-transforms/parsing/transform-box-computed.html": [
@@ -602927,7 +603857,7 @@
"testharness"
],
"css/css-transforms/parsing/transform-invalid.html": [
- "25aeeae4e5df99febd541a61a5f0b0f9a8ff2471",
+ "8985720622c692a93fda9d0277ca188f581f852a",
"testharness"
],
"css/css-transforms/parsing/transform-origin-computed.html": [
@@ -602943,7 +603873,7 @@
"testharness"
],
"css/css-transforms/parsing/transform-valid.html": [
- "8237a9a4a6882dd0ec3495464c8fbfb7f52e65d3",
+ "ce32e2b44e6edb8c743035eba324db273d205cb2",
"testharness"
],
"css/css-transforms/parsing/translate-parsing-invalid.html": [
@@ -605079,11 +606009,11 @@
"testharness"
],
"css/css-transforms/transform-scale-percent-001.html": [
- "79d32b5c0453d7a219cb3d6e03a7653ed342f947",
+ "09874988628c8cb10c3c5c9dcb59c3b2266f9326",
"reftest"
],
"css/css-transforms/transform-scale-percent-ref.html": [
- "be0bac656b650e6d3fa561df6e482118cbcc1b69",
+ "f6bd014135369fb8ec641f8953ff224a84ce6275",
"support"
],
"css/css-transforms/transform-scale-ref.html": [
@@ -611090,6 +612020,10 @@
"625952abb9b3a0abd390fecc850940952eea022e",
"reftest"
],
+ "css/css-values/animations/calc-interpolation.html": [
+ "de76386e0dadc292cc66dec1170e57b19f2cdc69",
+ "testharness"
+ ],
"css/css-values/attr-color-invalid-cast.html": [
"d538eebdd9979bfda2398e46de72748dc0099810",
"reftest"
@@ -624507,7 +625441,7 @@
"support"
],
"css/support/interpolation-testcommon.js": [
- "3c9754c694128010aee095422cea127f10b6f355",
+ "d1cb7cfbeb07fb16439c2245f12c5fbc174c77b4",
"support"
],
"css/support/parsing-testcommon.js": [
@@ -634735,7 +635669,7 @@
"support"
],
"docs/writing-tests/reftests.md": [
- "845d6f8dc4fcff2b12e6c06b320684d6b7cba70d",
+ "6dbe3a1aa9d0cf3912729b18d8662fd637046589",
"support"
],
"docs/writing-tests/rendering.md": [
@@ -634790,6 +635724,42 @@
"16bdb9365f002c471d0c7c90147ed284624a9556",
"support"
],
+ "document-policy/echo-policy-nested.html": [
+ "d572dcb0465843c3d694d808c8bc883cd54fbf89",
+ "support"
+ ],
+ "document-policy/echo-policy-nested.html.headers": [
+ "fe839ef5bb6dfa3cc9460e6175b345a2249fd79c",
+ "support"
+ ],
+ "document-policy/echo-policy.py": [
+ "52a2bf97124f0e6f3ff05fcc693c751f1cd0fca0",
+ "support"
+ ],
+ "document-policy/required-policy/document-policy.html": [
+ "d6bf3e9a6d490ad5462267ae913002b696b96a80",
+ "testharness"
+ ],
+ "document-policy/required-policy/document-policy.html.headers": [
+ "d321c265d1502c364a8d1caa5ab24710e853983e",
+ "support"
+ ],
+ "document-policy/required-policy/no-document-policy.html": [
+ "9af2e51c2acd9657861e00824c2a74631a370b00",
+ "testharness"
+ ],
+ "document-policy/required-policy/required-document-policy-nested.html": [
+ "39e2a92f77379319c1c9cd6619c02c9724c2a6dd",
+ "testharness"
+ ],
+ "document-policy/required-policy/required-document-policy.html": [
+ "12cebdd292a2311f951a78dd1f8aab1ecd8c60e0",
+ "testharness"
+ ],
+ "document-policy/required-policy/required-document-policy.html.headers": [
+ "066c0f8339ea21c1102c78d82d07d060252a9980",
+ "support"
+ ],
"dom/META.yml": [
"6fd5b12664da091fd9ee773b821ad72ee704ee8f",
"support"
@@ -634931,7 +635901,7 @@
"testharness"
],
"dom/events/Event-dispatch-redispatch.html": [
- "4027587bff482b82ccbaafed80bf8adba1553fb9",
+ "dc180c61567b723bb2f3dd9e29bc20f3f8f3a921",
"testharness"
],
"dom/events/Event-dispatch-reenter.html": [
@@ -640983,7 +641953,7 @@
"testharness"
],
"fetch/api/cors/cors-preflight-redirect.any.js": [
- "5d4de7ebaad1d45775cdb00bf0233aca1a34f612",
+ "ade38e9ac7b090dc69979da99d37480ddf9c76f7",
"testharness"
],
"fetch/api/cors/cors-preflight-referrer.any.js": [
@@ -641079,7 +642049,7 @@
"testharness"
],
"fetch/api/idlharness.any.js": [
- "ccd4d2c0b46234c40f2ff452c8ead112e32539de",
+ "7b3c694e16ac3ec2776398067cf6ddbef949c969",
"testharness"
],
"fetch/api/policies/csp-blocked-worker.html": [
@@ -642055,7 +643025,7 @@
"support"
],
"fetch/metadata/appcache.tentative.https.sub.html": [
- "8912548ab1c96f99df1af712bbccf79bfbf2968d",
+ "5e35472fcfdce6972191160b57fa7cce559f96a0",
"testharness"
],
"fetch/metadata/embed.tentative.https.sub.html": [
@@ -642102,7 +643072,7 @@
"93acffef11ae23cf72088f9962da24e27911d11f",
"testharness"
],
- "fetch/metadata/navigation.https.sub.html": [
+ "fetch/metadata/navigation.tentative.https.sub.html": [
"32c9cf77f90ee9c0710da5f623e8b175aaae7f3d",
"testharness"
],
@@ -642130,6 +643100,10 @@
"fc986aaf4fdcff900980824dc41f7ff3dacd4e70",
"testharness"
],
+ "fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html": [
+ "e2715a658545a3090d47dfd49a7ce8f595b3e81e",
+ "testharness"
+ ],
"fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html": [
"37b2415168068d33f38e44c9930ede3608d202d6",
"testharness"
@@ -642138,10 +643112,18 @@
"f5483ac3fa2f3f838525a4fcb26605ddb7e0c2b2",
"testharness"
],
+ "fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html": [
+ "45fd4efaace01a735f888a8dea29fcf5e59d6723",
+ "testharness"
+ ],
"fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html": [
"c47190651e5c929741060add0f0b40dab1e4461c",
"testharness"
],
+ "fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html": [
+ "a446cbad84051564b6a39da82ccac946ca70561c",
+ "testharness"
+ ],
"fetch/metadata/redirect/redirect-https-downgrade.tentative.sub.html": [
"9eb04822b683bfb28f83e0ad3a78713a14c4b897",
"testharness"
@@ -642195,7 +643177,7 @@
"support"
],
"fetch/metadata/resources/helper.js": [
- "a344c94106a11cb66d7c8cc00d5588e9d5879f38",
+ "608a5297881b914a2cf3602f6b79f53a25354f98",
"support"
],
"fetch/metadata/resources/post-to-owner.py": [
@@ -642203,11 +643185,11 @@
"support"
],
"fetch/metadata/resources/record-header.py": [
- "99115475683d50191624795f01625a99fdfd8398",
+ "3bfb1fcdfaab6f166149b5a451f58e82bbc48531",
"support"
],
"fetch/metadata/resources/redirectTestHelper.sub.js": [
- "c40b5a5e17efda570570cb4b030fff3eebb13b99",
+ "e5547e7ac7931f87e4dc4ae947d169caadf66ba3",
"support"
],
"fetch/metadata/resources/sharedWorker.js": [
@@ -642399,7 +643381,7 @@
"testharness"
],
"fetch/stale-while-revalidate/fetch.html": [
- "73390c7ad5948c682b2fbdcb3c95a4c374dbba2d",
+ "41ece6826ed8b5a2e9b2a0df092b75f4c67f4edb",
"testharness"
],
"fetch/stale-while-revalidate/resources/stale-css.py": [
@@ -646411,23 +647393,23 @@
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html": [
- "7c939bc77466900a6fcd544dd07029503e62537b",
+ "106c3f97cb231aeadc7a09a22f402ba631fe8882",
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html": [
- "eb356c5597267eae7bd4c8d937375adf479183d8",
+ "e71d4dc8687b80e5c987349c58d46c8e0c2f3172",
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html": [
- "fff10248fedfcf7f10cb9ab64020566cd4fe6f97",
+ "086a96442dd09eb8c87802f0366bf1f3e8ebb01d",
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html": [
- "f82aa6f0abe0d16a8b132e531d165988af0af99f",
+ "b8226bd2b93bca9fb90dd5f9f68ad9b578a107ee",
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html": [
- "e6ff4a19d0d7431a7612f2425ab2eaa39639c696",
+ "ac6e47b846b4980c522cb8c3c9ef16b5b53ea9a3",
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener-setter.window.js": [
@@ -646435,7 +647417,7 @@
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/opener.html": [
- "5bbaee6a378c7cacca8a9c274da71c34809bf5da",
+ "c43d3bd3bfbc73160ce7bdaac39d47bb04036b97",
"testharness"
],
"html/browsers/windows/auxiliary-browsing-contexts/resources/close-opener.html": [
@@ -657654,6 +658636,10 @@
"7819ee1c1891887aadec9bb600bcb18e6cc562e3",
"testharness"
],
+ "html/semantics/embedded-content/the-video-element/resize-during-playback.html": [
+ "3ade1effc4bd0273a46bc45dd0e5218a3af453c9",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-video-element/video-tabindex.html": [
"30448747892203f3d53ef4b9615a5a50bb62c62f",
"testharness"
@@ -657778,6 +658764,10 @@
"6c66559a09a0168070f2520d672de79f3a1261da",
"testharness"
],
+ "html/semantics/forms/constraints/infinite_backtracking.html": [
+ "52f6e316b1faa3abec3d0680a6be68ab0d2e6b07",
+ "testharness"
+ ],
"html/semantics/forms/constraints/inputwillvalidate.html": [
"909fd889bbb0b41d218cc2d8e8c9ad4cbf102189",
"testharness"
@@ -662310,6 +663300,10 @@
"55ee1aad538db98a74adefdb385fe46bd8e81dea",
"testharness"
],
+ "html/syntax/parsing/html_content_in_foreign_context.html": [
+ "611b71d0e6aadf536e0c73f344e69c893e127962",
+ "testharness"
+ ],
"html/syntax/parsing/math-parse01.html": [
"3aff716d9f7cfa6fb6c26992920b137b63f195e4",
"testharness"
@@ -664883,7 +665877,7 @@
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini": [
- "4a4f5946fad72286df130d96bb701f9744841249",
+ "1d63261c554f96705801a92871a6159b1f0d5ea0",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini": [
@@ -665050,6 +666044,10 @@
"fec62a3cae00655a95f7bc569d2eb1f43eac6062",
"reftest"
],
+ "infrastructure/reftest/reftest_wait_TestRendered.html": [
+ "4316d338b5c7e846cc281a1d84d9ffb4a5e99e14",
+ "reftest"
+ ],
"infrastructure/reftest/size-ref.html": [
"bb792a3feb21cc0c03d0734e97f119dcce3dd10a",
"support"
@@ -665307,7 +666305,7 @@
"support"
],
"interfaces/cookie-store.idl": [
- "3e1a90ab63f5fc4afa36db8dda9fa1174236e26b",
+ "f6a413e54a20fc5611a3e428a17578a25cd9e483",
"support"
],
"interfaces/cors-rfc1918.idl": [
@@ -665635,7 +666633,7 @@
"support"
],
"interfaces/resize-observer.idl": [
- "9ac157a6328c3cdb6d50a241f1841365ef2ff709",
+ "d53e9da55ee33faef05aeb10e50ba31f27cf88c8",
"support"
],
"interfaces/resource-timing.idl": [
@@ -665715,7 +666713,7 @@
"support"
],
"interfaces/wasm-js-api.idl": [
- "828729071e4b5e77978bce021a8b5c36c3b9cd85",
+ "cc943610145dec2346e7ec9d6891cf32859f9d59",
"support"
],
"interfaces/wasm-web-api.idl": [
@@ -665731,7 +666729,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "455720c641e69af2e68b9c9a0eb2cbd740267e26",
+ "de23fac0c118c2a773a5e9627c6b1af99c861838",
"support"
],
"interfaces/web-share.idl": [
@@ -666450,12 +667448,20 @@
"3b18b98dd93312c37b9e2f25918df50266a09243",
"testharness"
],
+ "layout-instability/pointerdown-becomes-scroll.html": [
+ "4fe5c6b7e7c6339e805d26aee10e58b3bb0a3253",
+ "testharness"
+ ],
+ "layout-instability/pointerdown-becomes-tap.html": [
+ "e2e7a911dc043bb21cebfd4a5b625795f3523a14",
+ "testharness"
+ ],
"layout-instability/resources/slow-image.py": [
"ee7988c551f6429eea2b929af083ad30cbd5c73d",
"support"
],
"layout-instability/resources/util.js": [
- "ca430d0a9e2a89e85ed087289de40234f9061bae",
+ "515914e11fadc9c1f5e0b44994c52a9374eca1c6",
"support"
],
"layout-instability/rtl-distance.html": [
@@ -666551,7 +667557,7 @@
"testharness"
],
"lint.whitelist": [
- "48d7e9d6a747b973333912b6e940055449f2f5ce",
+ "4f2ef9c005b6a170f7b980617debe5d1293895fe",
"support"
],
"loading/lazyload/common.js": [
@@ -668590,6 +669596,14 @@
"29903c0a817352ea3d3ad6abf188e5aec7470173",
"support"
],
+ "media/400x300-red-resize-200x150-green.mp4": [
+ "1058c1bf26a0ae080e199886908ea2572c865f00",
+ "support"
+ ],
+ "media/400x300-red-resize-200x150-green.webm": [
+ "53b6517849f8a64536c3f015b956224b5f71dc93",
+ "support"
+ ],
"media/A4.mp4": [
"ef66d43b9eac025855118b2ff39881f4f25f94f9",
"support"
@@ -680499,7 +681513,7 @@
"testharness"
],
"portals/portals-adopt-predecessor.html": [
- "70545458b4609ac6f1993834da09bcebee65c118",
+ "96d0be9a401771759c0d0cc5a9785497f9bf3447",
"testharness"
],
"portals/portals-api.html": [
@@ -680667,7 +681681,7 @@
"support"
],
"portals/resources/portals-adopt-predecessor-portal.html": [
- "b7eb3b96779a561cacf11d6c7e9362ca1049be6c",
+ "48e162b97140e835c7269ce40a859d38665451df",
"support"
],
"portals/resources/portals-adopt-predecessor.html": [
@@ -696710,6 +697724,10 @@
"f5a60c3060961a2b1674c8959c5d4a0af7b5452a",
"testharness"
],
+ "service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html": [
+ "6ca9247619526689db286e6eef740f521ce70ad0",
+ "testharness"
+ ],
"service-workers/service-worker/fetch-event.https.html": [
"169a0b17d6230335fb0c83988039875c815d99e1",
"testharness"
@@ -697546,6 +698564,10 @@
"f3180d776c5b02ed2cf202c298fabfd1e8f8ea11",
"support"
],
+ "service-workers/service-worker/resources/fetch-event-worker-timing.js": [
+ "7f3b201ef7655cc09c4d1aab0051eb42993bce57",
+ "support"
+ ],
"service-workers/service-worker/resources/fetch-header-visibility-iframe.html": [
"0d9ab6ff904583d4ffda08d2432f5321b4b91a86",
"support"
@@ -699899,7 +700921,7 @@
"testharness"
],
"storage-access-api/META.yml": [
- "cb059fe6bb103af62e83abe2e1518011975102e2",
+ "83f078575380df8a1f368eaa09c7e93c7e1a1712",
"support"
],
"storage-access-api/hasStorageAccess.sub.window.js": [
@@ -700459,7 +701481,7 @@
"support"
],
"svg/META.yml": [
- "0836892864f6a7ea61b92fef6082f89376977c09",
+ "ee0fff087c4f9a5723f53cc002e228a713e730da",
"support"
],
"svg/README.md": [
@@ -703934,6 +704956,22 @@
"47f70336a6f6774805c08c99f37e8ee7c32ecc10",
"reftest"
],
+ "svg/painting/marker-009-ref.svg": [
+ "968eba091c513be8997c2f95e4f91e91c335b66d",
+ "support"
+ ],
+ "svg/painting/marker-009.svg": [
+ "9e6fe21d9177741c8f33a588657dd525807d4a22",
+ "reftest"
+ ],
+ "svg/painting/marker-orient-001-ref.svg": [
+ "e328aa05462e96bab7f29b32a49d7af5d276d1dc",
+ "support"
+ ],
+ "svg/painting/marker-orient-001.svg": [
+ "eefb1068391dba9db839e689e0750183373d9b28",
+ "reftest"
+ ],
"svg/painting/parsing/color-interpolation-computed.svg": [
"c437a0a908beed1221eaee6e185c4b3216411cc6",
"testharness"
@@ -704446,6 +705484,10 @@
"22bf513c862bf8d1ccbac358c71560fd834e545a",
"testharness"
],
+ "svg/render/foreignObject-in-non-rendered-getComputedStyle.html": [
+ "409f1044a33372c8e642ba61a2d4f752061eb975",
+ "testharness"
+ ],
"svg/render/reftests/blending-001-ref.svg": [
"dcd39a8a1d5b2c76038a50506e661d3c5513a847",
"support"
@@ -705371,13 +706413,17 @@
"support"
],
"tools/ci/azure/install_safari.yml": [
- "10466e3278f97a143004d62d775ae158167508cc",
+ "a8641465ac8eae70086bd0ced4a80d3a2da35113",
"support"
],
"tools/ci/azure/pip_install.yml": [
"c8795345f6bcf4a943e07a459947e718ad6a0afc",
"support"
],
+ "tools/ci/azure/safari-technology-preview.rb": [
+ "b32739be58a7028d5ff4a2de9b56dfb7ea09982b",
+ "support"
+ ],
"tools/ci/azure/system_info.yml": [
"cc37b35b853c01cdd4f6075d9a14c1fffd6a4c3a",
"support"
@@ -705415,7 +706461,7 @@
"support"
],
"tools/ci/commands.json": [
- "841fd855c8056829afd347e3067e55804ca65139",
+ "c9cd7c458989ec77bacd645cd5145351443ff73c",
"support"
],
"tools/ci/epochs_update.sh": [
@@ -705439,15 +706485,59 @@
"support"
],
"tools/ci/run_tc.py": [
- "be7dbe082a1709493b62316d15668ea10ae93607",
+ "b4cb2b01b9745de1c234c9eeaf414e65b8fe7ae3",
"support"
],
"tools/ci/taskcluster-run.py": [
"8a60012d09b4d5be9845cf4ab74e5f87bf4b58ce",
"support"
],
- "tools/ci/tcdownload.py": [
- "256726da7b568f32115dfeaa6bc1407490c0d076",
+ "tools/ci/tc/README.md": [
+ "11f367f986f97fdbfe40f09b2ae4114f263916f7",
+ "support"
+ ],
+ "tools/ci/tc/__init__.py": [
+ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+ "support"
+ ],
+ "tools/ci/tc/decision.py": [
+ "a3c47aa404990253f556a9cf59bd7c6237ffece3",
+ "support"
+ ],
+ "tools/ci/tc/download.py": [
+ "359ec33405048c134ddcfac7a564ea9a17ac1b14",
+ "support"
+ ],
+ "tools/ci/tc/taskgraph.py": [
+ "6a6cb497f2d406862d18bc214d36c1ea2ecd7c3e",
+ "support"
+ ],
+ "tools/ci/tc/tasks/test.yml": [
+ "a64ef3749211bbb2b3580efc2eee3ea5a810ea6f",
+ "support"
+ ],
+ "tools/ci/tc/testdata/master_push_event.json": [
+ "8e79f7537349a79fd70746ab6e371897acc4d5e1",
+ "support"
+ ],
+ "tools/ci/tc/testdata/pr_event.json": [
+ "5acc1a6010291c88d26f8c12573aeeb9d0b33e97",
+ "support"
+ ],
+ "tools/ci/tc/testdata/pr_event_tests_affected.json": [
+ "792ea1bcccebc00e6680e029c768542a6118894f",
+ "support"
+ ],
+ "tools/ci/tc/tests/test_decision.py": [
+ "425b5829edd360b145acebf249f4b1ac3f6d1396",
+ "support"
+ ],
+ "tools/ci/tc/tests/test_taskgraph.py": [
+ "dd8535bb6470ff919251973b073d24489edfff8b",
+ "support"
+ ],
+ "tools/ci/tc/tests/test_valid.py": [
+ "9480178206def8d1a5e4ee46798b123d7eab45be",
"support"
],
"tools/ci/tests/test_jobs.py": [
@@ -705458,10 +706548,6 @@
"63482fb184c7f14db0ebd45c18794e3a9771c90b",
"support"
],
- "tools/ci/tests/test_run_tc.py": [
- "a72dcfe5cfdd516528312488c0d731557fb85492",
- "support"
- ],
"tools/ci/website_build.sh": [
"f6b26310aabce200fc0d77844f5f3ad28de0bb7f",
"support"
@@ -705495,13 +706581,17 @@
"support"
],
"tools/docker/frontend.py": [
- "c4a207345820d534df5cc092c8b46838a5b8ce1f",
+ "976156cf65a00821a11a3351301b47c1078c8416",
"support"
],
"tools/docker/retry.py": [
"6126b781bfadd15e82b8a3a3b9494050939eab6c",
"support"
],
+ "tools/docker/seccomp.json": [
+ "8e8274ce3280e698d2c1a0abeba05a769f4c456d",
+ "support"
+ ],
"tools/docker/start.sh": [
"3427670cc9fa16a0ae23e2da1ecafcfe75789072",
"support"
@@ -705535,7 +706625,7 @@
"support"
],
"tools/lint/lint.py": [
- "7689c359928d6be0f58384dfdc22d8eaa9f0d932",
+ "c7c0197213c4660d05a3d868edd87bd907430f6b",
"support"
],
"tools/lint/rules.py": [
@@ -705683,7 +706773,7 @@
"support"
],
"tools/lint/tests/test_lint.py": [
- "dbd4708cdc969da6824ba377dcf9f33a326b9863",
+ "af2b7d3d4aa19f0c1d72a5575b5013c7897e1dc4",
"support"
],
"tools/lint/tests/test_path_lints.py": [
@@ -706270,26 +707360,6 @@
"d6c082a970357f477e82cd25a1c0952ee744db54",
"support"
],
- "tools/taskcluster/__init__.py": [
- "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
- "support"
- ],
- "tools/taskcluster/commands.json": [
- "dcbd8961fc2efbb800565b927a3e5d9314d6aba6",
- "support"
- ],
- "tools/taskcluster/testdata/master_push_event.json": [
- "8e79f7537349a79fd70746ab6e371897acc4d5e1",
- "support"
- ],
- "tools/taskcluster/testdata/pr_event.json": [
- "5acc1a6010291c88d26f8c12573aeeb9d0b33e97",
- "support"
- ],
- "tools/taskcluster/verify.py": [
- "b37e45ec74cfbccffee84319fc8b94512f170dca",
- "support"
- ],
"tools/third_party/atomicwrites/.gitignore": [
"2b2d3128753e9f6f34895e7183595829d1063a5a",
"support"
@@ -710187,7 +711257,7 @@
"support"
],
"tools/tox.ini": [
- "7a5c1eb648a97aebc718912cb22492385c588439",
+ "e8673db0a69ae4695e7b1fa152c533aa1b0f98d1",
"support"
],
"tools/webdriver/.gitignore": [
@@ -710231,7 +711301,7 @@
"support"
],
"tools/wpt/browser.py": [
- "e7d57d8638c231f9c3c65e932bdc0209ba3cb021",
+ "a94d5509cc8ba1bfcc4cbceafd9f511a4f9804ab",
"support"
],
"tools/wpt/commands.json": [
@@ -710243,7 +711313,7 @@
"support"
],
"tools/wpt/install.py": [
- "8215dfe09161ad49ba3975e1eacc927c61715acf",
+ "24915f0c98d0be3a864a3a515ba0e162dc37da8c",
"support"
],
"tools/wpt/mach-emulator.manifest": [
@@ -710255,7 +711325,7 @@
"support"
],
"tools/wpt/paths": [
- "093a71568920a944b0b8361165f5ea5fa002ee14",
+ "35867c4ccbfe95c4e71a8d71ce90a7b378951fd5",
"support"
],
"tools/wpt/requirements.txt": [
@@ -710343,7 +711413,7 @@
"support"
],
"tools/wptrunner/docs/expectation.rst": [
- "2f7467c09124cdd94e5390d498d487ce4b7ea357",
+ "77938abe03d55ce14571ec1b4c2b43d0ed4a409b",
"support"
],
"tools/wptrunner/docs/internals.rst": [
@@ -710387,7 +711457,7 @@
"support"
],
"tools/wptrunner/requirements_firefox.txt": [
- "f49102b8a89ba7bbbc809c1b4313779c31330fc4",
+ "4cbb7a5ec0293eff1ef198a21ecdc90fecf41411",
"support"
],
"tools/wptrunner/requirements_ie.txt": [
@@ -710639,7 +711709,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/base.py": [
- "f20f735528c16dbc72fdb41434f3511c2128dbd9",
+ "713d85001135d0cdf23c7a06583bd03d4355d58e",
"support"
],
"tools/wptrunner/wptrunner/executors/executorchrome.py": [
@@ -710659,7 +711729,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executormarionette.py": [
- "7a936592f8880553e7594d9a5e5c82a9f1c1642c",
+ "b165e8cd93d534062f303aa3e045cbb9850ed25c",
"support"
],
"tools/wptrunner/wptrunner/executors/executoropera.py": [
@@ -710671,19 +711741,19 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorselenium.py": [
- "913a5e6d54225b9c1c77f2b5518955fa726c4fce",
+ "d6745018279e74affce1493da3cbb9b01f828fb0",
"support"
],
"tools/wptrunner/wptrunner/executors/executorservo.py": [
- "eaea09816325ebd4dc3e1c715f4712beb2ef2825",
+ "365a1a08653b0175fc4df4050eb9d9aaf8b1d34c",
"support"
],
"tools/wptrunner/wptrunner/executors/executorservodriver.py": [
- "67a433d9a588245138f97fb8028a5a349f308f1d",
+ "bd377d0d5950ca8d469f1320cdc072c8dff10bb2",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
- "344debf8aa69ef0634764cdaf0e994511bbceab6",
+ "39346e805d735000e9fcf28fcaa72ecca8f34f68",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -710706,12 +711776,8 @@
"c1936eb966f78834d839c79409322b0a96af1284",
"support"
],
- "tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js": [
- "194e192c2f4e22021781f633841a33eae9925417",
- "support"
- ],
"tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js": [
- "a7486b6594d96093ae2267c48ca0b87ab40ef7cc",
+ "f86edacdef25257e4eda9304b209381a01d7f313",
"support"
],
"tools/wptrunner/wptrunner/executors/reftest.js": [
@@ -710815,7 +711881,7 @@
"support"
],
"tools/wptrunner/wptrunner/testrunner.py": [
- "1b02fc622bea57e25140bfcf0322271e7d9643ed",
+ "8dece20a8e93e279204ccfee70f07ce8a8debab3",
"support"
],
"tools/wptrunner/wptrunner/tests/__init__.py": [
@@ -717118,6 +718184,14 @@
"1477261e6bc6227598b4e80475a66aa95fe5d15c",
"testharness"
],
+ "web-animations/timing-model/animations/reverse-running-animation-ref.html": [
+ "0aaa0443649acd9453f5b52534016a92889b157e",
+ "support"
+ ],
+ "web-animations/timing-model/animations/reverse-running-animation.html": [
+ "584aa0029ea2e5aa4926035756b5f49d74fa9f54",
+ "reftest"
+ ],
"web-animations/timing-model/animations/reversing-an-animation.html": [
"75fd9876c0495a8bd0096d2f976a920d3d7e5a05",
"testharness"
@@ -717146,10 +718220,42 @@
"dd8617503951aafd71015d591914a1b54e3907a7",
"testharness"
],
+ "web-animations/timing-model/animations/sync-start-times-ref.html": [
+ "fc843a132f2f3741ce27ed796d1182488deb336b",
+ "support"
+ ],
+ "web-animations/timing-model/animations/sync-start-times.html": [
+ "06dcf0305639f21fbeea35039023fe2102c38451",
+ "reftest"
+ ],
"web-animations/timing-model/animations/the-current-time-of-an-animation.html": [
"77a6b716d22062998529b58382e0205e6f017980",
"testharness"
],
+ "web-animations/timing-model/animations/update-playback-rate-fast-ref.html": [
+ "af69b26100ae02ee711274071df416c45f71d868",
+ "support"
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-fast.html": [
+ "63a76ba84a62736bb7edb05d9cfa79d6dc73c1cf",
+ "reftest"
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-slow-ref.html": [
+ "11b87deecca4bcea480c9bec9221a02cd1c97a9b",
+ "support"
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-slow.html": [
+ "db449f2ca596c274170c94c1bb5dc0c87a1ba120",
+ "reftest"
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-zero-ref.html": [
+ "26293a3aebbb004dbc03742544c86d237081a56b",
+ "support"
+ ],
+ "web-animations/timing-model/animations/update-playback-rate-zero.html": [
+ "bed08d630ca2de7960e49e26c9f40da8e772f5b0",
+ "reftest"
+ ],
"web-animations/timing-model/animations/updating-the-finished-state.html": [
"4d3cc7950b09bdffc826dfa9ffd885e6dea5e9ac",
"testharness"
@@ -717302,20 +718408,20 @@
"9cf42e83bf306b5272fd753461fb78c3c9a4992f",
"manual"
],
- "web-nfc/NDEFReader_options.https.html": [
- "6901e5cdcb25cce0f3f3a02aed842b3524cc7b8a",
- "testharness"
- ],
"web-nfc/NDEFReader_scan.https.html": [
"78160fbcb2ab11a8ebc80c39a6fd935eddc0844b",
"testharness"
],
+ "web-nfc/NDEFReader_scan_filter.https.html": [
+ "4c1e7de44008889386e71431d7b4d0042739fe4e",
+ "testharness"
+ ],
"web-nfc/NDEFReader_scan_iframe.https.html": [
"9bdb07136821211214e7d2d838f92da3f1955bc4",
"testharness"
],
"web-nfc/NDEFReadingEvent_constructor.https.html": [
- "15ef6e466aab05e289cc93bb678fbda02ce253f7",
+ "3d734105e9ce0ed68e86e421f80847fa485779fe",
"testharness"
],
"web-nfc/NDEFRecord_constructor.https.html": [
@@ -717343,7 +718449,7 @@
"testharness"
],
"web-nfc/resources/nfc-helpers.js": [
- "eb3006114c7c505a5737894e8dc7d1d0eeda8fa7",
+ "0fe6fe80cb1cec7ef582bae5d7974bce9d1d8596",
"support"
],
"web-nfc/resources/support-iframe.html": [
@@ -718887,7 +719993,7 @@
"support"
],
"webdriver/tests/find_element_from_element/find.py": [
- "b107a8957e08fa2c83fd47459f1e66d3b7d74134",
+ "56e216bb646131bdcc9a0c3c28ea4142c2982897",
"wdspec"
],
"webdriver/tests/find_element_from_element/user_prompts.py": [
@@ -720747,7 +721853,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-setRemoteDescription-rollback.html": [
- "73a0fe1e5a1349c397d65aa15a89bef909192c43",
+ "342e325dad2af804c659891d7a05f00933b487a7",
"testharness"
],
"webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html": [
@@ -728587,7 +729693,7 @@
"testharness"
],
"xhr/idlharness.any.js": [
- "f36f0ce02967ec873bc8231669da22177fa39f75",
+ "d45e52e2341b8ce43d3e7e144afe518eba74c173",
"testharness"
],
"xhr/loadstart-and-state.html": [
diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini
new file mode 100644
index 00000000000..86715ffc9c2
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini
@@ -0,0 +1,2 @@
+[floats-in-table-caption-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini b/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini
index bbc1d4c8664..eb580957227 100644
--- a/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini
+++ b/tests/wpt/metadata/css/CSS2/linebox/animations/line-height-interpolation.html.ini
@@ -1,2 +1,841 @@
[line-height-interpolation.html]
- expected: ERROR
+ [CSS Transitions with transition: all: property <line-height> from [4px\] to [14px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4q\] to [14q\] at (1.5) should be [19q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (0) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (0.3) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4px\] to [14px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4\] to [14\] at (1.5) should be [19\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (0.6) should be [10q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (0.6) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (1.5) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4q\] to [14q\] at (-1) should be [0q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4q\] to [14q\] at (0.6) should be [10q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (0) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [normal\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (-0.3) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (0.5) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (1) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (0) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (1.5) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (0) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (1.5) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (-0.3) should be [14q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (0.6) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (0.3) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4px\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (-0.3) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [inherit\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4\] to [14\] at (0.3) should be [7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (0) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (0.3) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (1.5) should be [19\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (-0.3) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4px\] to [14px\] at (0.6) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (-0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4q\] to [14q\] at (0.3) should be [7q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (-0.3) should be [14q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (0) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [normal\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (0.5) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (0.6) should be [10q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (0.5) should be [14q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (0.5) should be [14q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (0.6) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (0) should be [4px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [normal\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [normal\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (1.5) should be [19\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (1.5) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4q\] to [14q\] at (0.6) should be [10q\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [inherit\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (0.6) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (0.3) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (0.6) should be [14q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (0) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (0.3) should be [7q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (0.6) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4q\] to [14q\] at (-0.3) should be [1q\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [unset\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4px\] to [14px\] at (0) should be [4px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (0) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (-0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (0.3) should be [7\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [normal\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (-0.3) should be [1q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (0.6) should be [14q\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (0.6) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (1.5) should be [19q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (0.5) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (0) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (-0.3) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4\] to [14\] at (1.5) should be [19\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (-1) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (1) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4px\] to [14px\] at (0.6) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4\] to [14\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (0.3) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (1.5) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (0.5) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4q\] to [14q\] at (1.5) should be [19q\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4px\] to [14px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (0.6) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (1.5) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (1.5) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4q\] to [14q\] at (-1) should be [0q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4\] to [14\] at (0.3) should be [7\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (-1) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (1.5) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4q\] to [14q\] at (-0.3) should be [1q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (0.5) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (0.3) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (0.5) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4\] to [14\] at (-1) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (1) should be [14\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4\] to [14\] at (0.6) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [normal\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4\] to [14\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (-0.3) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4q\] to [14q\] at (0.3) should be [7q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (0) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14px\] at (0) should be [4\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (1) should be [14q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (1.5) should be [19q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (0) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (0.6) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (-0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (1.5) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (0) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (0.3) should be [7q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [4\] at (-0.3) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (0.3) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14px\] to [normal\] at (0.3) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (1.5) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [4\] to [14\] at (-1) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [unset\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (0.6) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (-0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (0.3) should be [7\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [4\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [14q\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14q\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14q\] at (1) should be [14q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (0.6) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14q\] at (0) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4\] to [14\] at (1) should be [14\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [4\] to [14\] at (0.6) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <line-height> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [14px\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (0.5) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <line-height> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [normal\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (0) should be [4q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4q\] to [14q\] at (-1) should be [0q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (0) should be [4q\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [14\] at (0.6) should be [10\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (-1) should be [0q\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [unset\] to [20px\] at (-1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4px\] to [14px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [4\] to [normal\] at (0.3) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <line-height> from [normal\] to [14px\] at (0.5) should be [14px\]]
+ expected: FAIL
+
+ [CSS Animations: property <line-height> from [4q\] to [14q\] at (-0.3) should be [1q\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/visufx/animation/visibility-interpolation.html.ini b/tests/wpt/metadata/css/CSS2/visufx/animation/visibility-interpolation.html.ini
index 7f02684f048..56e097738cd 100644
--- a/tests/wpt/metadata/css/CSS2/visufx/animation/visibility-interpolation.html.ini
+++ b/tests/wpt/metadata/css/CSS2/visufx/animation/visibility-interpolation.html.ini
@@ -1,5 +1,247 @@
[visibility-interpolation.html]
- expected: ERROR
[visibility interpolation]
expected: FAIL
+ [CSS Animations: property <visibility> from [collapse\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (1) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [visible\] at (0) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (-0.3) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [hidden\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [hidden\] at (0) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [hidden\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [hidden\] to [visible\] at (0) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (0.3) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [visible\] at (0) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (1) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (0.3) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [hidden\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (0) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [visible\] at (1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [visible\] at (0) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [visible\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [hidden\] to [visible\] at (1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (0.5) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (0) should be [collapse\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (0.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (0.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [hidden\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (0.3) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [visible\] to [hidden\] at (1) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [visible\] at (1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (0.6) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [visible\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (0.6) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (0.6) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [visible\] at (-1) should be [collapse\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (-0.3) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [visible\] at (-1) should be [collapse\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [visible\] at (0.5) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [visible\] at (1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [hidden\] to [visible\] at (-1) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [visible\] at (-1) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [visible\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [hidden\] at (-1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [visible\] at (0) should be [collapse\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [hidden\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (0.3) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (-0.3) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [hidden\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [hidden\] to [visible\] at (-1) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [hidden\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [hidden\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [hidden\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [visible\] at (-1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [visible\] at (-1) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [visible\] at (1.5) should be [visible\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [hidden\] at (0) should be [collapse\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [visible\] at (0) should be [collapse\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (0.6) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Animations: property <visibility> from [collapse\] to [visible\] at (1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [hidden\] at (1) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [hidden\] to [visible\] at (0) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [hidden\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (0) should be [hidden\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (1) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (1) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (1.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <visibility> from [collapse\] to [visible\] at (0.1) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [visible\] to [visible\] at (1) should be [visible\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [collapse\] to [hidden\] at (0.5) should be [hidden\]]
+ expected: FAIL
+
+ [CSS Transitions: property <visibility> from [hidden\] to [visible\] at (0.9) should be [visible\]]
+ expected: FAIL
+
+ [Web Animations: property <visibility> from [collapse\] to [hidden\] at (-0.3) should be [collapse\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/animation/column-gap-interpolation.html.ini b/tests/wpt/metadata/css/css-align/animation/column-gap-interpolation.html.ini
index d0c9b229624..4870df475f6 100644
--- a/tests/wpt/metadata/css/css-align/animation/column-gap-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-align/animation/column-gap-interpolation.html.ini
@@ -1,5 +1,472 @@
[column-gap-interpolation.html]
- expected: ERROR
[column-gap interpolation]
expected: FAIL
+ [Web Animations: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [unset\] to [20px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/animation/row-gap-interpolation.html.ini b/tests/wpt/metadata/css/css-align/animation/row-gap-interpolation.html.ini
index 0974487f792..c2c9640864a 100644
--- a/tests/wpt/metadata/css/css-align/animation/row-gap-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-align/animation/row-gap-interpolation.html.ini
@@ -1,5 +1,472 @@
[row-gap-interpolation.html]
- expected: ERROR
[row-gap interpolation]
expected: FAIL
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-color-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-color-interpolation.html.ini
index 1e54a5f1f23..83217853567 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-color-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-color-interpolation.html.ini
@@ -1,5 +1,400 @@
[background-color-interpolation.html]
- expected: ERROR
[background-color-interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <background-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [unset\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [unset\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [unset\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [unset\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [unset\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [unset\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [unset\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [unset\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [unset\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [unset\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [unset\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <background-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-color> from [unset\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-image-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-image-interpolation.html.ini
index 85c15e88106..a55ebda26fd 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-image-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-image-interpolation.html.ini
@@ -1,2 +1,556 @@
[background-image-interpolation.html]
- expected: ERROR
+ [CSS Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0.6) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1.5) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (1) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from neutral to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0.6) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from neutral to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0.6) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (-0.3) should be [url(../resources/stripes-100.png), url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0.6) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.6) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.6) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (1) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0) should be [url(../resources/stripes-100.png), url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (-0.3) should be [url(../resources/blue-100.png), none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.6) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0) should be [url(../resources/blue-100.png), none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from neutral to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1.5) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1.5) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.6) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0.3) should be [url(../resources/stripes-100.png), url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0.3) should be [url(../resources/stripes-100.png), url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (1.5) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.3) should be [url(../resources/blue-100.png), none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (0) should be [url(../resources/stripes-100.png), url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (1.5) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [unset\] to [url(../resources/green-100.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.3) should be [url(../resources/blue-100.png), none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.6) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from neutral to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0) should be [url(../resources/blue-100.png), none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (1) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (1.5) should be [url(../resources/stripes-100.png), url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [url(../resources/green-100.png)\] at (0.6) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (1.5) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from neutral to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png), none\] to [url(../resources/stripes-100.png), url(../resources/green-100.png)\] at (-0.3) should be [url(../resources/blue-100.png), none\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (-0.3) should be [url(../resources/stripes-100.png), url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-image> from [inherit\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (0) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [none\] to [url(../resources/green-100.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-image> from [initial\] to [url(../resources/green-100.png)\] at (1.5) should be [url(../resources/green-100.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (-0.3) should be [url(../resources/blue-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/stripes-100.png), url(../resources/blue-100.png)\] to [url(../resources/blue-100.png), url(../resources/stripes-100.png)\] at (1.5) should be [url(../resources/blue-100.png), url(../resources/stripes-100.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-image> from [url(../resources/blue-100.png)\] to [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\] at (1.5) should be [cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-image> from [url(../resources/blue-100.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-interpolation.html.ini
index 7f0649b1627..991c81c43f3 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-interpolation.html.ini
@@ -1,5 +1,151 @@
[background-position-interpolation.html]
- expected: ERROR
[background-position-interpolation]
expected: FAIL
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1.25) should be [85px 85px, 85px 85px, 85px 85px, 85px 85px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.5) should be [calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (-0.25) should be [calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (-0.25) should be [calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.25) should be [ 10px 10px, 80px 20px, 0px 20px, 70px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (-0.25) should be [55px 55px, 55px 55px, 55px 55px, 55px 55px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1) should be [ 40px 40px, 80px 80px, 0px 80px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1.25) should be [calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1) should be [calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1) should be [80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.5) should be [ 20px 20px, 80px 40px, 0px 40px, 60px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.25) should be [65px 65px, 65px 65px, 65px 65px, 65px 65px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1.25) should be [calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.5) should be [calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1.25) should be [ 50px 50px, 80px 100px, 0px 100px, 30px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0) should be [ 0px 0px, 80px 0px, 0px 0px, 80px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.75) should be [75px 75px, 75px 75px, 75px 75px, 75px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0) should be [0% 0%, 0% 0%, 0% 0%, 0% 0%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0) should be [40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1) should be [calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.25) should be [50px 50px, 50px 50px, 50px 50px, 50px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1.25) should be [90px 90px, 90px 90px, 90px 90px, 90px 90px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1) should be [80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (-0.25) should be [30px 30px, 30px 30px, 30px 30px, 30px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.25) should be [calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.75) should be [calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.25) should be [calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.5) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0) should be [0% 0%, 0% 0%, 0% 0%, 0% 0%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [top 0px left 0px\] to [left 80px top 80px\] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.5) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.75) should be [ 30px 30px, 80px 60px, 0px 60px, 50px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.75) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [80px 80px, 80px 80px, 80px 80px, 80px 80px\] at (0.75) should be [calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-origin-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-origin-interpolation.html.ini
index 9d9724f8cc8..0b12684b578 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-origin-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-origin-interpolation.html.ini
@@ -1,5 +1,214 @@
[background-position-origin-interpolation.html]
- expected: ERROR
[background-position-origin-interpolation]
expected: FAIL
+ [Web Animations: property <background-position> from [center center\] to [left 20px center\] at (0.5) should be [calc(10px + 25%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px bottom 20px\] at (0.25) should be [calc(5px + 37.5%) calc(-5px + 62.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center center\] at (1) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px top 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px center\] at (0.25) should be [calc(5px + 37.5%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px top 20px\] at (0.5) should be [calc(-10px + 75%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [left 20px top 20px\] at (0.25) should be [5px 5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [left 20px top 20px\] at (0.5) should be [15px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center center\] at (0.25) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px top 20px\] at (0.25) should be [calc(-5px + 62.5%) calc(5px + 37.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center center\] at (0.75) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px bottom 20px\] at (0.5) should be [calc(-10px + 75%) calc(-10px + 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [left 20px top 20px\] at (0.75) should be [35px 35px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [left 20px top 20px\] at (0.75) should be [15px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px top 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [left 20px top 20px\] at (0.25) should be [65px 65px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px bottom 20px\] at (1) should be [20px calc(-20px + 100%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center top 20px\] at (1) should be [50% 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px center\] at (1) should be [calc(-20px + 100%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px bottom 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [left 20px top 20px\] at (0) should be [10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px top 20px\] at (0.75) should be [calc(-15px + 87.5%) calc(15px + 12.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center bottom 20px\] at (0.25) should be [50% calc(-5px + 62.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center bottom 20px\] at (1) should be [50% calc(-20px + 100%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center center\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [left 20px top 20px\] at (0.5) should be [10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px center\] at (0.25) should be [calc(-5px + 62.5%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center top 20px\] at (0.5) should be [50% calc(10px + 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [left 20px top 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px center\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center top 20px\] at (0.75) should be [50% calc(15px + 12.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center\] to [bottom\] at (1) should be [50% 100%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [left 20px top 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px bottom 20px\] at (1) should be [calc(-20px + 100%) calc(-20px + 100%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px bottom 20px\] at (0.75) should be [calc(-15px + 87.5%) calc(-15px + 87.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px top 20px\] at (0.75) should be [calc(15px + 12.5%) calc(15px + 12.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center\] to [bottom\] at (0.75) should be [50% 87.5%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px center\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [left 20px top 20px\] at (0) should be [0% 0%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px bottom 20px\] at (0.25) should be [calc(-5px + 62.5%) calc(-5px + 62.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center\] to [bottom\] at (0.25) should be [50% 62.5%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px center\] at (0.5) should be [calc(-10px + 75%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px bottom 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center bottom 20px\] at (0.5) should be [50% calc(-10px + 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center top 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center\] to [bottom\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [left 20px top 20px\] at (0.5) should be [50px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px bottom 20px\] at (0.5) should be [calc(10px + 25%) calc(-10px + 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [left 20px top 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [inherit\] to [left 20px top 20px\] at (0) should be [80px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px center\] at (0.75) should be [calc(-15px + 87.5%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center top 20px\] at (0.25) should be [50% calc(5px + 37.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px top 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center\] to [bottom\] at (0.5) should be [50% 75%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [left 20px top 20px\] at (0.75) should be [15px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [left 20px top 20px\] at (0.5) should be [10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px bottom 20px\] at (0.75) should be [calc(15px + 12.5%) calc(-15px + 87.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [unset\] to [left 20px top 20px\] at (0.25) should be [5px 5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px center\] at (1) should be [20px 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center bottom 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [left 20px top 20px\] at (0.25) should be [12.5px 12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center bottom 20px\] at (0.75) should be [50% calc(-15px + 87.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [initial\] to [left 20px top 20px\] at (0) should be [0% 0%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [center center\] at (0.5) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [right 20px top 20px\] at (1) should be [calc(-20px + 100%) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px top 20px\] at (0.25) should be [calc(5px + 37.5%) calc(5px + 37.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px center\] at (0.75) should be [calc(15px + 12.5%) 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [left 20px top 20px\] at (0.75) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from [center center\] to [left 20px top 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position> from neutral to [left 20px top 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini
index fb2d744eb50..440ddbdff7e 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-x-interpolation.html.ini
@@ -1,5 +1,289 @@
[background-position-x-interpolation.html]
- expected: ERROR
[background-position-x-interpolation]
expected: FAIL
+ [CSS Transitions: property <background-position-x> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from neutral to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (1) should be [500px, 600px, 700px, 500px, 600px, 700px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [initial\] to [right\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (0) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [initial\] to [right\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0) should be [300px, 400px, 300px, 400px, 300px, 400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [initial\] to [right\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [initial\] to [right\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [initial\] to [right\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [initial\] to [right\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [initial\] to [right\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [initial\] to [right\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (0) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (1) should be [500px, 600px, 700px, 500px, 600px, 700px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-x> from [initial\] to [right\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0) should be [300px, 400px, 300px, 400px, 300px, 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (0) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-x> from [initial\] to [right\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [initial\] to [right\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [initial\] to [right\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-x> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-x> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini
index a92ca1bf0a1..d6fcfc1556f 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-position-y-interpolation.html.ini
@@ -1,5 +1,289 @@
[background-position-y-interpolation.html]
- expected: ERROR
[background-position-y-interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <background-position-y> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [initial\] to [bottom\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (0) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from neutral to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (0) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [initial\] to [bottom\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (0) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from neutral to [80px\] at (0.5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [initial\] to [bottom\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [initial\] to [bottom\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0) should be [300px, 400px, 300px, 400px, 300px, 400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [initial\] to [bottom\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [initial\] to [bottom\] at (1.25) should be [125%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [initial\] to [bottom\] at (0.75) should be [75%\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (1) should be [500px, 600px, 700px, 500px, 600px, 700px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (1) should be [500px, 600px, 700px, 500px, 600px, 700px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.5) should be [400px, 500px, 500px, 450px, 450px, 550px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (0.5) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (1.25) should be [550px, 650px, 800px, 525px, 675px, 775px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [inherit\] to [80px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [inherit\] to [80px\] at (1.25) should be [85px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from [initial\] to [bottom\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [initial\] to [bottom\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.75) should be [450px, 550px, 600px, 475px, 525px, 625px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (1.25) should be [90px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [initial\] to [bottom\] at (0.25) should be [25%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [initial\] to [bottom\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (0.25) should be [65px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0) should be [300px, 400px, 300px, 400px, 300px, 400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [initial\] to [bottom\] at (-0.25) should be [-25%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from neutral to [80px\] at (-0.25) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-position-y> from [inherit\] to [80px\] at (-0.25) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-position-y> from neutral to [80px\] at (0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (-0.25) should be [250px, 350px, 200px, 375px, 225px, 325px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-position-y> from [300px, 400px\] to [500px, 600px, 700px\] at (0.25) should be [350px, 450px, 400px, 425px, 375px, 475px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-position-y> from [inherit\] to [80px\] at (1) should be [80px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/background-size-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/background-size-interpolation.html.ini
index dd8677a8b26..e48bbf678a1 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/background-size-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/background-size-interpolation.html.ini
@@ -1,5 +1,736 @@
[background-size-interpolation.html]
- expected: ERROR
[background-size-interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.75) should be [30px 30px, 80px 60px, 0px 60px, 50px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1) should be [40px 40px, 80px 80px, 0px 80px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.25) should be [12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0) should be [10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.5) should be [20px 20px, 80px 40px, 0px 40px, 60px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (0) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.75) should be [17.5px 17.5px, 2.5px 2.5px, 17.5px 17.5px, 2.5px 2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0.3) should be [0px auto, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (1.25) should be [25px 25px, 50px 50px, 75px 75px, 125px 125px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (0.25) should be [ 20px, 20px, 20px, 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0.5) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (-0.25) should be [ 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (1.5) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0) should be [0px auto, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.5) should be [20px 20px, 80px 40px, 0px 40px, 60px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (-0.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (1.25) should be [100px, 100px, 100px, 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0.5) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0.5) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (0) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.5) should be [10px 10px, 20px 20px, 30px 30px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (1.25) should be [100px, 100px, 100px, 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.75) should be [17.5px 17.5px, 2.5px 2.5px, 17.5px 17.5px, 2.5px 2.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (-0.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.75) should be [15px 15px, 30px 30px, 45px 45px, 75px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (0.5) should be [ 40px, 40px, 40px, 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.75) should be [ 40px 40px, 25px 25px, 40px 40px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.75) should be [15px 15px, 30px 30px, 45px 45px, 75px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1) should be [ 20px 20px, 0px 0px, 20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.25) should be [10px auto, 10px 10px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.5) should be [10px 10px, 20px 20px, 30px 30px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (1) should be [ 80px, 80px, 80px, 80px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.75) should be [30px auto, 30px 30px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (1) should be [40px auto, 40px 40px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.5) should be [10px 10px, 20px 20px, 30px 30px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (-0.25) should be [ 0px 0px, 80px 0px, 0px 0px, 90px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0.6) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1.25) should be [22.5px 22.5px, 0.0px 0.0px, 22.5px 22.5px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (-0.25) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (0.75) should be [ 60px, 60px, 60px, 60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (-0.25) should be [ 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.5) should be [20px 20px, 80px 40px, 0px 40px, 60px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.25) should be [ 5px 5px, 10px 10px, 15px 15px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (-0.25) should be [ 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.5) should be [15.0px 15.0px, 5.0px 5.0px, 15.0px 15.0px, 5.0px 5.0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0.6) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (-0.25) should be [120px 120px, 125px 125px, 120px 120px, 125px 125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0.6) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.75) should be [15px 15px, 30px 30px, 45px 45px, 75px 75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (-0.3) should be [0px auto, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (-0.25) should be [ 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (1.25) should be [50px auto, 50px 50px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1.25) should be [50px 50px, 80px 100px, 0px 100px, 30px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (-0.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.75) should be [30px 30px, 80px 60px, 0px 60px, 50px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (-0.25) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (1.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.75) should be [17.5px 17.5px, 2.5px 2.5px, 17.5px 17.5px, 2.5px 2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.5) should be [ 60px 60px, 50px 50px, 60px 60px, 50px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (1) should be [ 80px, 80px, 80px, 80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.25) should be [ 5px 5px, 10px 10px, 15px 15px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1) should be [ 20px 20px, 0px 0px, 20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (-0.25) should be [120px 120px, 125px 125px, 120px 120px, 125px 125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.25) should be [ 80px 80px, 75px 75px, 80px 80px, 75px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0) should be [0px auto, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (1.25) should be [25px 25px, 50px 50px, 75px 75px, 125px 125px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1.25) should be [22.5px 22.5px, 0.0px 0.0px, 22.5px 22.5px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1) should be [40px 40px, 80px 80px, 0px 80px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0) should be [ 0px 0px, 80px 0px, 0px 0px, 80px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.5) should be [20px auto, 20px 20px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (0.5) should be [ 40px, 40px, 40px, 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1) should be [ 20px 20px, 0px 0px, 20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (-0.25) should be [ 0px 0px, 80px 0px, 0px 0px, 90px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.75) should be [30px 30px, 80px 60px, 0px 60px, 50px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0) should be [0px 0px, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.5) should be [ 60px 60px, 50px 50px, 60px 60px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0) should be [10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.5) should be [20px auto, 20px 20px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (1.25) should be [50px auto, 50px 50px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.75) should be [30px auto, 30px 30px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (0.5) should be [ 40px, 40px, 40px, 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.75) should be [ 40px 40px, 25px 25px, 40px 40px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1.25) should be [50px 50px, 80px 100px, 0px 100px, 30px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.75) should be [ 40px 40px, 25px 25px, 40px 40px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (-0.3) should be [0px auto, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (1.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0.6) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.25) should be [ 5px 5px, 10px 10px, 15px 15px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (-0.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (1) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.25) should be [ 80px 80px, 75px 75px, 80px 80px, 75px 75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (1) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0) should be [ 0px 0px, 80px 0px, 0px 0px, 80px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (1.25) should be [50px auto, 50px 50px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.25) should be [10px 10px, 80px 20px, 0px 20px, 70px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.75) should be [15px 15px, 30px 30px, 45px 45px, 75px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (1.25) should be [100px, 100px, 100px, 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1) should be [20.0px 20.0px, 0.0px 0.0px, 20.0px 20.0px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (0) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (1) should be [20px 20px, 40px 40px, 60px 60px, 100px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.75) should be [17.5px 17.5px, 2.5px 2.5px, 17.5px 17.5px, 2.5px 2.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (1.25) should be [25px 25px, 50px 50px, 75px 75px, 125px 125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (-0.25) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (-0.25) should be [ 0px 0px, 80px 0px, 0px 0px, 90px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (-0.3) should be [0px 0px, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.25) should be [12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0.3) should be [0px 0px, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1.25) should be [22.5px 22.5px, 0.0px 0.0px, 22.5px 22.5px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0.3) should be [0px auto, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1.25) should be [22.5px 22.5px, 0.0px 0.0px, 22.5px 22.5px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (-0.3) should be [0px 0px, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.25) should be [12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (0.25) should be [ 20px, 20px, 20px, 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (-0.25) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (1.25) should be [100px, 100px, 100px, 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (0.75) should be [ 60px, 60px, 60px, 60px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (0.75) should be [ 60px, 60px, 60px, 60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0) should be [10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.5) should be [15.0px 15.0px, 5.0px 5.0px, 15.0px 15.0px, 5.0px 5.0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (0.5) should be [ 40px, 40px, 40px, 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.5) should be [20px 20px, 80px 40px, 0px 40px, 60px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (1.25) should be [25px 25px, 50px 50px, 75px 75px, 125px 125px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.25) should be [10px auto, 10px 10px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (1) should be [20px 20px, 40px 40px, 60px 60px, 100px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0.6) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.5) should be [20px auto, 20px 20px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.75) should be [30px auto, 30px 30px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (-0.25) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (1.25) should be [50px auto, 50px 50px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.75) should be [30px 30px, 80px 60px, 0px 60px, 50px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.25) should be [10px auto, 10px 10px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0) should be [10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px, 10.0px 10.0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1.25) should be [50px 50px, 80px 100px, 0px 100px, 30px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (1) should be [40px auto, 40px 40px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (1) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (-0.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (-0.25) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0) should be [0px 0px, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0.3) should be [0px 0px, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1) should be [40px 40px, 80px 80px, 0px 80px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (1.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1) should be [20.0px 20.0px, 0.0px 0.0px, 20.0px 20.0px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1) should be [ 20px 20px, 0px 0px, 20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (-0.25) should be [ 0px auto, 0px 0px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (0.25) should be [ 20px, 20px, 20px, 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.5) should be [ 60px 60px, 50px 50px, 60px 60px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (1.5) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (-0.25) should be [120px 120px, 125px 125px, 120px 120px, 125px 125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (-0.25) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (1) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.5) should be [15.0px 15.0px, 5.0px 5.0px, 15.0px 15.0px, 5.0px 5.0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.25) should be [ 80px 80px, 75px 75px, 80px 80px, 75px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px\] to [80px\] at (0) should be [ 0px, 0px, 0px, 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (1.5) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.25) should be [ 5px 5px, 10px 10px, 15px 15px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (1) should be [ 80px, 80px, 80px, 80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.5) should be [ 60px 60px, 50px 50px, 60px 60px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.25) should be [10px 10px, 80px 20px, 0px 20px, 70px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (1) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (1.5) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px\] to [80px\] at (0.75) should be [ 60px, 60px, 60px, 60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1) should be [20.0px 20.0px, 0.0px 0.0px, 20.0px 20.0px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0) should be [ 0px 0px, 80px 0px, 0px 0px, 80px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.25) should be [10px 10px, 80px 20px, 0px 20px, 70px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.5) should be [15.0px 15.0px, 5.0px 5.0px, 15.0px 15.0px, 5.0px 5.0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, 0px 0px, 0px 0px\] to [20px 20px, 40px 40px, 60px 60px, 100px 100px\] at (0.5) should be [10px 10px, 20px 20px, 30px 30px, 50px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (1) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px\] to [80px\] at (0.25) should be [ 20px, 20px, 20px, 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1) should be [40px 40px, 80px 80px, 0px 80px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (1) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 0px 0px, contain, cover\] to [40px 40px, 40px 40px, cover, contain\] at (0.6) should be [40px 40px, 40px 40px, cover, contain\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (1) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.75) should be [ 40px 40px, 25px 25px, 40px 40px, 25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from neutral to [20px 20px, 0px 0px\] at (0.25) should be [12.5px 12.5px, 7.5px 7.5px, 12.5px 12.5px, 7.5px 7.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (-0.25) should be [ 0px 0px, 80px 0px, 0px 0px, 90px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (1.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0) should be [ 0px 0px, 80px 0px, 0px 0px, 80px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (-0.25) should be [120px 120px, 125px 125px, 120px 120px, 125px 125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px\] to [80px 80px\] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from neutral to [20px 20px, 0px 0px\] at (1) should be [20.0px 20.0px, 0.0px 0.0px, 20.0px 20.0px, 0.0px 0.0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (1.25) should be [50px 50px, 80px 100px, 0px 100px, 30px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px\] to [80px\] at (1) should be [ 80px, 80px, 80px, 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0.6) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.75) should be [30px auto, 30px 30px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.5) should be [20px auto, 20px 20px, contain, cover\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px\] to [80px 80px\] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [0px 0px\] to [80px 80px\] at (-0.25) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [initial\] to [20px 20px, 0px 0px\] at (1.5) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <background-size> from [0px auto, 0px 0px, contain, cover\] to [40px auto, 40px 40px, contain, cover\] at (0.25) should be [10px auto, 10px 10px, contain, cover\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px 0px, 80px 0px\] to [40px 40px, 80px 80px, 0px 80px\] at (0.25) should be [10px 10px, 80px 20px, 0px 20px, 70px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [0px auto, 0px 0px\] to [auto 40px, 40px 40px\] at (0.5) should be [auto 40px, 40px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <background-size> from [inherit\] to [20px 20px, 0px 0px\] at (0.25) should be [ 80px 80px, 75px 75px, 80px 80px, 75px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <background-size> from [unset\] to [20px 20px, 0px 0px\] at (0.6) should be [20px 20px, 0px 0px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini
index a39ea79eafd..5d0b1e349ff 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-color-interpolation.html.ini
@@ -1,5 +1,349 @@
[border-color-interpolation.html]
- expected: ERROR
[border-color interpolation]
expected: FAIL
+ [CSS Animations: property <border-top-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [unset\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [unset\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [inherit\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [unset\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from neutral to [orange\] at (0.6) should be [rgb(153, 99, 56)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [initial\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from neutral to [orange\] at (-0.3) should be [rgb(0, 0, 181)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [inherit\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [unset\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [unset\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [inherit\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [initial\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [inherit\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [initial\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from neutral to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [inherit\] to [orange\] at (0) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [inherit\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [unset\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from neutral to [orange\] at (0.3) should be [rgb(77, 50, 97)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [inherit\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [initial\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from neutral to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [initial\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [initial\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [inherit\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [inherit\] to [orange\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from neutral to [orange\] at (0) should be [rgb(0, 0, 139)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from neutral to [orange\] at (-0.3) should be [rgb(0, 0, 181)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [initial\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [unset\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [inherit\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [unset\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [inherit\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [initial\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [unset\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from neutral to [orange\] at (0.3) should be [rgb(77, 50, 97)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [inherit\] to [orange\] at (0) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [inherit\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [unset\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [initial\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [unset\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [inherit\] to [orange\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [unset\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [unset\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from neutral to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [initial\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from neutral to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from neutral to [orange\] at (0.3) should be [rgb(77, 50, 97)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [inherit\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [unset\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [initial\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [initial\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [inherit\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from neutral to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from neutral to [orange\] at (0.3) should be [rgb(77, 50, 97)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from neutral to [orange\] at (0.6) should be [rgb(153, 99, 56)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [inherit\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from neutral to [orange\] at (0.6) should be [rgb(153, 99, 56)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from neutral to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [initial\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [initial\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [unset\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from neutral to [orange\] at (-0.3) should be [rgb(0, 0, 181)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [initial\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [unset\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from neutral to [orange\] at (0.6) should be [rgb(153, 99, 56)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [initial\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from [initial\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [unset\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-color> from [unset\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-color> from neutral to [orange\] at (-0.3) should be [rgb(0, 0, 181)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [initial\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-color> from [rgb(20, 30, 40) rgb(40, 50, 60)\] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)\] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-color> from [inherit\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini
index 3847c277f7b..324dea72116 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-outset-interpolation.html.ini
@@ -1,5 +1,397 @@
[border-image-outset-interpolation.html]
- expected: ERROR
[border-image-outset interpolation]
expected: FAIL
+ [CSS Transitions: property <border-image-outset> from neutral to [2px\] at (1.5) should be [2.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [initial\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0px\] to [5px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0px\] to [5px\] at (1.5) should be [7.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (-0.3) should be [0 0 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.3) should be [31 32 33px 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [unset\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.3) should be [31 32 33px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [inherit\] to [2px\] at (0.3) should be [7.6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0px\] to [5px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [initial\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [initial\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (1.5) should be [151 152 153px 154px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [0px\] to [5px\] at (1.5) should be [7.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0px\] to [5px\] at (0.3) should be [1.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [inherit\] to [2px\] at (0.6) should be [5.2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from neutral to [2px\] at (0.3) should be [1.3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0px\] to [5px\] at (0.3) should be [1.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0px\] to [5px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0px\] to [5px\] at (1) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.3) should be [31 32 33px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [inherit\] to [2px\] at (-0.3) should be [12.4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from neutral to [2px\] at (0.6) should be [1.6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [inherit\] to [2px\] at (0.3) should be [7.6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [unset\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from neutral to [2px\] at (1.5) should be [2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [inherit\] to [2px\] at (0.6) should be [5.2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from neutral to [2px\] at (0.3) should be [1.3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0px\] to [5px\] at (0.6) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [inherit\] to [2px\] at (0.3) should be [7.6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.6) should be [61 62 63px 64px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from neutral to [2px\] at (1) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0) should be [1 2 3px 4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [inherit\] to [2px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (1) should be [101 102 103px 104px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [0px\] to [5px\] at (1.5) should be [7.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.6) should be [61 62 63px 64px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from neutral to [2px\] at (0) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from neutral to [2px\] at (1.5) should be [2.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [inherit\] to [2px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [0px\] to [5px\] at (0.6) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (-0.3) should be [0 0 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from neutral to [2px\] at (0.3) should be [1.3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from neutral to [2px\] at (1) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (-0.3) should be [0 0 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [0px\] to [5px\] at (0.3) should be [1.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [0px\] to [5px\] at (0.3) should be [1.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [0px\] to [5px\] at (0.6) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from neutral to [2px\] at (0.3) should be [1.3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [inherit\] to [2px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (-0.3) should be [0 0 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [inherit\] to [2px\] at (-0.3) should be [12.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [inherit\] to [2px\] at (-0.3) should be [12.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [inherit\] to [2px\] at (0.3) should be [7.6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [inherit\] to [2px\] at (1) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [initial\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [inherit\] to [2px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from neutral to [2px\] at (-0.3) should be [0.7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0px\] to [5px\] at (0.6) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from neutral to [2px\] at (-0.3) should be [0.7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from neutral to [2px\] at (1.5) should be [2.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [inherit\] to [2px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.6) should be [61 62 63px 64px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from neutral to [2px\] at (-0.3) should be [0.7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from neutral to [2px\] at (-0.3) should be [0.7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [inherit\] to [2px\] at (-0.3) should be [12.4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [unset\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (1.5) should be [151 152 153px 154px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (1.5) should be [151 152 153px 154px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [inherit\] to [2px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from neutral to [2px\] at (0.6) should be [1.6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0) should be [1 2 3px 4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (1.5) should be [151 152 153px 154px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.6) should be [61 62 63px 64px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [unset\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from neutral to [2px\] at (0.6) should be [1.6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0px\] to [5px\] at (1.5) should be [7.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (1) should be [101 102 103px 104px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [1 2 3px 4px\] to [101 102 103px 104px\] at (0.3) should be [31 32 33px 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0px\] to [5px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from neutral to [2px\] at (0.6) should be [1.6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0px\] to [5px\] at (1) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-outset> from [inherit\] to [2px\] at (0.6) should be [5.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [inherit\] to [2px\] at (1) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-outset> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-outset> from [inherit\] to [2px\] at (0.6) should be [5.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-outset> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html.ini
new file mode 100644
index 00000000000..ee608380711
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html.ini
@@ -0,0 +1,4 @@
+[border-image-slice-interpolation-stability.html]
+ [border-image-slice interpolation stability]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini
index 1cc3b63b10e..656499aef00 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-slice-interpolation.html.ini
@@ -1,5 +1,781 @@
[border-image-slice-interpolation.html]
- expected: ERROR
[border-image-slice interpolation]
expected: FAIL
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (1.5) should be [100\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (-0.5) should be [0% 0 0% 10 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (1) should be [40% 50% 60% 70%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (1) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0.6) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (-0.5) should be [0% 0 0% 10 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (-0.3) should be [23%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (0.3) should be [38%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [initial\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.5) should be [20 30 40 50 fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [unset\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.6) should be [24 34 44 54 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.3) should be [12 22 32 42 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (1) should be [40% 50% 60% 70%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [inherit\] to [10%\] at (-0.3) should be [62%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0.5) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (-0.5) should be [0% 0 0% 10 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [initial\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (0.6) should be [30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0) should be [0% 10% 20% 30%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0.6) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from neutral to [10%\] at (0.3) should be [17%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0.6) should be [100 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (1.5) should be [5%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0) should be [0 10 20 30 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.5) should be [20% 30 40% 50 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (0.3) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (0.5) should be [100\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [initial\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [unset\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0.6) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (1.5) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (1) should be [40 50 60 70 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (-0.3) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [unset\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.3) should be [12% 22% 32% 42%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (0.6) should be [14%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [unset\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (1.5) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0.5) should be [100 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.3) should be [12% 22 32% 42 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.5) should be [20 30 40 50 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (-0.3) should be [62%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [inherit\] to [10%\] at (0.5) should be [30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (0.6) should be [26%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0.5) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (1) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from neutral to [10%\] at (0.3) should be [17%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from neutral to [10%\] at (0.5) should be [15%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0.3) should be [0% fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0.3) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (0) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.5) should be [20% 30 40% 50 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (1.5) should be [100 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from neutral to [10%\] at (0.5) should be [15%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from neutral to [10%\] at (0.5) should be [15%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0) should be [0 10 20 30 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [inherit\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [initial\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (-0.3) should be [0% fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (0) should be [100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (0.5) should be [25%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (0.3) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (1.5) should be [75%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (1.5) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (1) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (0.6) should be [100\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [inherit\] to [10%\] at (-0.3) should be [62%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (-0.5) should be [0% 0% 0% 10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (0) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (1.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [unset\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.5) should be [20% 30% 40% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.6) should be [24 34 44 54 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (0.5) should be [15%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (1) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (0.5) should be [25%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (1.5) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (-0.3) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (0.5) should be [30%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.6) should be [24% 34 44% 54 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (1.5) should be [60 70 80 90 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (-0.3) should be [50% fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0%\] to [50%\] at (0.3) should be [15%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (-0.3) should be [62%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (1.5) should be [75%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (0) should be [100%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (1.5) should be [60% 70% 80% 90%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0.6) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from neutral to [10%\] at (1.5) should be [5%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (0.3) should be [15%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (-0.3) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0.3) should be [0% 10 20 30 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (-0.3) should be [50% fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0) should be [0% 10 20 30 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (1) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [initial\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (1.5) should be [60 70 80 90 fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0%\] to [50%\] at (1.5) should be [75%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [unset\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (0.5) should be [100\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [inherit\] to [10%\] at (0.3) should be [38%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.6) should be [24% 34 44% 54 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (0) should be [20%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (1.5) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (-0.3) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0%\] to [50%\] at (1.5) should be [75%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0.3) should be [0% 10 20 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0.3) should be [0% fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [inherit\] to [10%\] at (0.3) should be [38%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [inherit\] to [10%\] at (0.6) should be [26%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (0) should be [100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [unset\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (1.5) should be [60% 70 80% 90 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0.3) should be [50% fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (1) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (1) should be [100\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0) should be [50% fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0.3) should be [50% fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [initial\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (0.6) should be [26%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (0.3) should be [38%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.3) should be [12% 22 32% 42 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0%\] to [50%\] at (0.6) should be [30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (1) should be [100 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (-0.3) should be [0% 10 20 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0.6) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from neutral to [10%\] at (0.6) should be [14%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (0.6) should be [30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.6) should be [24% 34 44% 54 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (1.5) should be [60% 70% 80% 90%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.5) should be [20% 30% 40% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from neutral to [10%\] at (0.3) should be [17%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from neutral to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.5) should be [20% 30% 40% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.6) should be [24% 34% 44% 54%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [initial\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0%\] to [50%\] at (0.3) should be [15%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (1.5) should be [60% 70% 80% 90%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.5) should be [20 30 40 50 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (-0.3) should be [0% fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from neutral to [10%\] at (0.6) should be [14%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0) should be [0% 10 20 30 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from neutral to [10%\] at (0.3) should be [17%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from neutral to [10%\] at (0.6) should be [14%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.5) should be [20% 30% 40% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.6) should be [24% 34% 44% 54%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (-0.5) should be [0% 0 0% 10 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from neutral to [10%\] at (-0.3) should be [23%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.3) should be [12 22 32 42 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.3) should be [12% 22 32% 42 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from neutral to [10%\] at (-0.3) should be [23%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (0.5) should be [40 50 60% 70\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0) should be [50% fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0) should be [0% 10% 20% 30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.3) should be [12% 22 32% 42 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [initial\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (-0.5) should be [0 0 0 10 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0) should be [0% fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from neutral to [10%\] at (1.5) should be [5%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0) should be [0% fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.3) should be [12 22 32 42 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (1) should be [40% 50 60% 70 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [initial\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.5) should be [20 30 40 50 fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [initial\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0%\] to [50%\] at (0.5) should be [25%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (-0.5) should be [0% 0% 0% 10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (1) should be [40 50 60 70 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.3) should be [12% 22% 32% 42%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from neutral to [10%\] at (-0.3) should be [23%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0.5) should be [40% 50 60% 70\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (1.5) should be [60% 70 80% 90 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70\] at (0.3) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (0) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [inherit\] to [10%\] at (0.5) should be [30%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [inherit\] to [10%\] at (0.6) should be [26%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from neutral to [10%\] at (1.5) should be [5%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [unset\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.5) should be [20% 30 40% 50 fill\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (-0.5) should be [0% 0% 0% 10%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.6) should be [24% 34% 44% 54%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.6) should be [24% 34 44% 54 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [unset\] to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (1.5) should be [60% 70 80% 90 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (1.5) should be [100 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [initial\] to [10%\] at (-0.3) should be [127%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (1.5) should be [60 70 80 90 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [initial\] to [10%\] at (0.6) should be [46%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (1.5) should be [60% 70% 80% 90%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (1) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0.5) should be [100 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0.5) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (1) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (-0.5) should be [0 0 0 10 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (-0.5) should be [0% 0% 0% 10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (0.5) should be [30%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10 20 30 fill\] to [40 50 60% 70\] at (-0.3) should be [0% 10 20 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (0.6) should be [100\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [inherit\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (1.5) should be [100\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [unset\] to [10%\] at (0.5) should be [55%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [unset\] to [10%\] at (0.3) should be [73%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.3) should be [12% 22% 32% 42%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.6) should be [24% 34% 44% 54%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (-0.3) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [50%\] to [100\] at (0) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0%\] to [50%\] at (0.5) should be [25%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [inherit\] to [10%\] at (1) should be [10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (0.6) should be [100 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (1) should be [40% 50 60% 70 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0%\] to [50%\] at (0.3) should be [15%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.6) should be [24 34 44 54 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [inherit\] to [10%\] at (0) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0.5) should be [20% 30 40% 50 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50%\] to [100\] at (1) should be [100\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [50% fill\] to [100 fill\] at (1) should be [100 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0% 10% 20% 30%\] to [40% 50% 60% 70%\] at (0.3) should be [12% 22% 32% 42%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [unset\] to [10%\] at (1.5) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (-0.5) should be [0 0 0 10 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.6) should be [24 34 44 54 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (0) should be [0% 10 20% 30 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (1.5) should be [60 70 80 90 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (0.3) should be [12 22 32 42 fill\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill\] to [40% 50 60% 70 fill\] at (1.5) should be [60% 70 80% 90 fill\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-slice> from [0%\] to [50%\] at (0.6) should be [30%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-slice> from [0 10 20 30 fill\] to [40 50 60 70 fill\] at (-0.5) should be [0 0 0 10 fill\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-slice> from [0%\] to [50%\] at (-0.3) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-slice> from [0% fill\] to [50%\] at (0.6) should be [50%\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini
index 246ab3baf12..e06c338651e 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-source-interpolation.html.ini
@@ -1,5 +1,550 @@
[border-image-source-interpolation.html]
- expected: ERROR
[border-image-source interpolation]
expected: FAIL
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (-0.3) should be [inherit\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (-0.3) should be [inherit\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0) should be [inherit\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.3) should be [inherit\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (-0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0) should be [inherit\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (0) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [url(../support/orange_color.png)\] at (0.3) should be [url(../support/aqua_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (1.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (1.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [initial\] to [url(../support/orange_color.png)\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.6) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [url(../support/aqua_color.png)\] to [linear-gradient(45deg, blue, orange)\] at (1) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (0) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (1) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.3) should be [inherit\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (-0.3) should be [linear-gradient(-45deg, red, yellow)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [none\] to [url(../support/orange_color.png)\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [unset\] to [url(../support/orange_color.png)\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.5) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-source> from [inherit\] to [url(../support/orange_color.png)\] at (0.6) should be [url(../support/orange_color.png)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-source> from [linear-gradient(-45deg, red, yellow)\] to [linear-gradient(45deg, blue, orange)\] at (0.5) should be [linear-gradient(45deg, blue, orange)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini
index 66174906c6a..ab26ad61824 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-image-width-interpolation.html.ini
@@ -1,5 +1,952 @@
[border-image-width-interpolation.html]
- expected: ERROR
[border-image-width interpolation]
expected: FAIL
+ [CSS Transitions: property <border-image-width> from [0\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (1.5) should be [115px 95% 75 55px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0) should be [10px auto auto 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (1.5) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (1) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0.5) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (1.5) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20\] at (0.6) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0.5) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (0.5) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20%\] at (0.3) should be [calc(7px + 6%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0px\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0) should be [ 10px auto auto 20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0px\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.3) should be [ 40px auto auto 50\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [inherit\] to [20px\] at (0.6) should be [52px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20px\] at (0.6) should be [calc(4% + 12px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20%\] at (0.6) should be [calc(4px + 12%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0) should be [10px 20% 30 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px\] to [20%\] at (-0.3) should be [calc(13px + -6%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10%\] to [20px\] at (0.3) should be [calc(7% + 6px)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0px\] to [20px\] at (5) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.6) should be [ 70px auto auto 80\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0) should be [10px auto auto 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [inherit\] to [20px\] at (0.3) should be [76px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (1.5) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20\] at (1.5) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20px\] at (0) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0%\] to [20%\] at (1.5) should be [30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20px\] at (1.5) should be [calc(-5% + 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (10) should be [200\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (10) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (1.5) should be [20%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (1) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0%\] to [20%\] at (0.6) should be [12%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0%\] to [20%\] at (1.5) should be [30%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.3) should be [31px 35% 39 43px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (10) should be [710px 520% 330 140px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (-0.3) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (0.5) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px\] to [20%\] at (1.5) should be [calc(-5px + 30%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10%\] to [20px\] at (0.3) should be [calc(7% + 6px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (1) should be [80px 70% 60 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (1.5) should be [115px 95% 75 55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10%\] to [20px\] at (1.5) should be [calc(-5% + 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (-0.3) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px\] to [20%\] at (1.5) should be [calc(-5px + 30%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (-0.3) should be [ 0px auto auto 0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0.3) should be [10px auto auto 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (10) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0px\] to [20px\] at (10) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (1.5) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (1.5) should be [160px auto auto 170\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from neutral to [20px\] at (10) should be [110px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (1.5) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (-0.3) should be [10\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (-0.3) should be [0px 5% 21 37px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (0.3) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.6) should be [ 70px auto auto 80\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (1.5) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (0.3) should be [6%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0%\] to [20%\] at (0.6) should be [12%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (10) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10%\] to [20px\] at (-0.3) should be [calc(13% + -6px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [inherit\] to [20px\] at (10) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0px\] to [20px\] at (10) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (1) should be [20%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (-0.3) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (-0.3) should be [ 0px auto auto 0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (10) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0.3) should be [10px auto auto 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (0.6) should be [52px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.6) should be [52px 50% 48 46px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10%\] to [20px\] at (0.6) should be [calc(4% + 12px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (-0.3) should be [10%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (-0.3) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0\] to [20\] at (10) should be [200\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20%\] at (1.5) should be [calc(-5px + 30%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (5) should be [100\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20px\] at (1.5) should be [calc(-5% + 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (5) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [inherit\] to [20px\] at (0.3) should be [76px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (1) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10%\] to [20px\] at (0.6) should be [calc(4% + 12px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px\] to [20%\] at (0.6) should be [calc(4px + 12%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px\] to [20%\] at (-0.3) should be [calc(13px + -6%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (5) should be [100\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (10) should be [710px 520% 330 140px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20px\] at (0.6) should be [calc(4% + 12px)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (-0.3) should be [124px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (0.5) should be [20%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20px\] at (1) should be [calc(0% + 20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px\] to [20%\] at (0.3) should be [calc(7px + 6%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (1) should be [110px auto auto 120\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (0.3) should be [76px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (5) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0px\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (-0.3) should be [124px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.6) should be [52px 50% 48 46px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10%\] to [20px\] at (1.5) should be [calc(-5% + 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20px\] at (-0.3) should be [calc(13% + -6px)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (-0.3) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px\] to [20%\] at (0.6) should be [calc(4px + 12%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [inherit\] to [20px\] at (10) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (0) should be [10\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (0) should be [10\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (1.5) should be [30%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (1) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (10) should be [200%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20%\] at (1) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (1.5) should be [30%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (5) should be [360px 270% 180 90px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.6) should be [52px 50% 48 46px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (0.6) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20px\] at (0) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0%\] to [20%\] at (5) should be [100%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (0.6) should be [12%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (1) should be [80px 70% 60 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0.6) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (-0.3) should be [0px 5% 21 37px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0\] to [20\] at (5) should be [100\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (5) should be [360px 270% 180 90px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0%\] to [20%\] at (10) should be [200%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.3) should be [31px 35% 39 43px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (0.5) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (10) should be [200\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.6) should be [ 70px auto auto 80\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [inherit\] to [20px\] at (-0.3) should be [124px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (0.3) should be [76px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20px\] at (0.3) should be [calc(7% + 6px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from neutral to [20px\] at (5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.3) should be [ 40px auto auto 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0px\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (0.5) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0\] to [20\] at (10) should be [200\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from neutral to [20px\] at (5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (5) should be [360px 270% 180 90px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20%\] at (-0.3) should be [calc(13px + -6%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20px\] at (-0.3) should be [calc(13% + -6px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20px\] at (0.3) should be [calc(7% + 6px)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (0.6) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (0) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.3) should be [31px 35% 39 43px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0%\] to [20%\] at (0.3) should be [6%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (0.6) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (0.6) should be [20%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.3) should be [ 40px auto auto 50\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (0) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.6) should be [52px 50% 48 46px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (1.5) should be [115px 95% 75 55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from neutral to [20px\] at (10) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [inherit\] to [20px\] at (5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (-0.3) should be [0px 5% 21 37px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [inherit\] to [20px\] at (-0.3) should be [124px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20%\] at (0) should be [calc(0% + 10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (10) should be [710px 520% 330 140px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (10) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (1) should be [110px auto 120 auto\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20%\] at (0.6) should be [calc(4px + 12%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (1.5) should be [115px 95% 75 55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0) should be [ 10px auto auto 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0px\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (0.3) should be [10%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10%\] to [20px\] at (-0.3) should be [calc(13% + -6px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (1) should be [110px auto auto 120\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (1.5) should be [160px auto auto 170\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20%\] at (1.5) should be [calc(-5px + 30%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0px\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.3) should be [ 40px auto auto 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (1.5) should be [160px auto auto 170\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (0.6) should be [12%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (-0.3) should be [ 0px auto auto 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0%\] to [20%\] at (0.3) should be [6%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (-0.3) should be [0px 5% 21 37px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20%\] at (0) should be [calc(0% + 10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (-0.3) should be [10px auto auto 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (5) should be [360px 270% 180 90px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (10) should be [200%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0%\] to [20%\] at (5) should be [100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (5) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (5) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0.3) should be [31px 35% 39 43px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (5) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (-0.3) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0%\] to [20%\] at (0.3) should be [6%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20px\] at (0.3) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20px\] at (1) should be [calc(0% + 20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0px\] to [20px\] at (5) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto 120 auto\] at (-0.3) should be [10px auto auto 20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (5) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (0.6) should be [52px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (0) should be [10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (-0.3) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10\] to [20%\] at (0.3) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px\] to [20%\] at (0.3) should be [calc(7px + 6%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0%\] to [20%\] at (5) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0\] to [20\] at (5) should be [100\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (0) should be [10px 20% 30 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (0.3) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20%\] at (0.6) should be [20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20\] at (0.5) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [0px\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (0.6) should be [ 70px auto auto 80\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10%\] to [20\] at (0.6) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20%\] at (-0.3) should be [calc(13px + -6%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [inherit\] to [20px\] at (5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [inherit\] to [20px\] at (0.6) should be [52px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (-0.3) should be [ 0px auto auto 0\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [initial\] to [20px\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0\] to [20\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px\] to [20%\] at (0.3) should be [calc(7px + 6%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [0px\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10px auto auto 20\] to [110px auto auto 120\] at (1.5) should be [160px auto auto 170\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px\] to [80px 70% 60 50px\] at (10) should be [710px 520% 330 140px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10\] to [20px\] at (0) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [inherit\] to [20px\] at (10) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20%\] at (1) should be [20%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-image-width> from [0%\] to [20%\] at (10) should be [200%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [10%\] to [20\] at (0.3) should be [10%\]]
+ expected: FAIL
+
+ [Web Animations: property <border-image-width> from [10px\] to [20\] at (0.3) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-image-width> from [0\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini
index 5572f3b9754..fdf5b5f149a 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-radius-interpolation.html.ini
@@ -1,5 +1,490 @@
[border-radius-interpolation.html]
- expected: ERROR
[border-radius interpolation]
expected: FAIL
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-0.3) should be [23px 17px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [100%\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [50px\] at (0.6) should be [34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [50px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [50px\] at (0.3) should be [22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [50px\] at (0.6) should be [34px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [50px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (1.5) should be [5px 35px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [50px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [50px\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [50px\] at (1.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [100%\] at (0) should be [calc(10px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1.5) should be [35px 55px 75px 95px / 135px 155px 175px 195px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-0.3) should be [23px 17px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-2) should be [40px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [100%\] at (0.6) should be [calc(4px + 60%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1) should be [30px 50px 70px 90px / 130px 150px 170px 190px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [100%\] at (0.6) should be [calc(4px + 60%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [50px\] at (0.6) should be [34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [50px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [unset\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [100%\] at (-0.3) should be [calc(13px + -30%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.3) should be [17px 23px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [50px\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1) should be [30px 50px 70px 90px / 130px 150px 170px 190px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [100%\] at (-0.3) should be [calc(13px + -30%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [50px\] at (1.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.6) should be [14px 26px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [50px\] at (0.6) should be [34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (1) should be [10px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [50px\] at (0.3) should be [22px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-2) should be [40px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [100%\] at (-0.3) should be [calc(13px + -30%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [100%\] at (1.5) should be [calc(-5px + 150%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [100%\] at (0) should be [calc(10px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [100%\] at (0.3) should be [calc(7px + 30%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (1.5) should be [5px 35px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-2) should be [40px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [100%\] at (1.5) should be [calc(-5px + 150%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1) should be [30px 50px 70px 90px / 130px 150px 170px 190px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.3) should be [17px 23px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [20px\] to [10px 30px\] at (1.5) should be [5px 35px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [50px\] at (1.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [100%\] at (0.3) should be [calc(7px + 30%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.3) should be [23px 43px 63px 83px / 123px 143px 163px 183px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1.5) should be [35px 55px 75px 95px / 135px 155px 175px 195px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1.5) should be [35px 55px 75px 95px / 135px 155px 175px 195px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [10px\] to [100%\] at (-0.3) should be [calc(13px + -30%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.6) should be [14px 26px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1.5) should be [35px 55px 75px 95px / 135px 155px 175px 195px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-2) should be [40px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (1) should be [30px 50px 70px 90px / 130px 150px 170px 190px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0) should be [20px 40px 60px 80px / 120px 140px 160px 180px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [50px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (0.6) should be [26px 46px 66px 86px / 126px 146px 166px 186px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [50px\] at (1.5) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [100%\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [50px\] at (0.3) should be [22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-radius> from [20px 40px 60px 80px / 120px 140px 160px 180px\] to [30px 50px 70px 90px / 130px 150px 170px 190px\] at (-0.3) should be [17px 37px 57px 77px / 117px 137px 157px 177px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.6) should be [14px 26px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-0.3) should be [23px 17px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.3) should be [17px 23px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [20px\] to [10px 30px\] at (-0.3) should be [23px 17px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [50px\] at (0.3) should be [22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [100%\] at (1.5) should be [calc(-5px + 150%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [unset\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [100%\] at (1.5) should be [calc(-5px + 150%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (1) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [10px\] to [100%\] at (0.3) should be [calc(7px + 30%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [20px\] to [10px 30px\] at (1.5) should be [5px 35px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [10px\] to [100%\] at (0.6) should be [calc(4px + 60%)\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.3) should be [17px 23px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [100%\] at (0.3) should be [calc(7px + 30%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [20px\] to [10px 30px\] at (0.6) should be [14px 26px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-left-radius> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-left-radius> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-left-radius> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-left-radius> from [10px\] to [100%\] at (0.6) should be [calc(4px + 60%)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini
index ba1236f53f7..1155976c43e 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/border-width-interpolation.html.ini
@@ -1,5 +1,646 @@
[border-width-interpolation.html]
- expected: ERROR
[border-width interpolation]
expected: FAIL
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (1) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (1) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-width> from [15px\] to [thick\] at (-0.3) should be [18px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [unset\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.3) should be [23px 43px 63px 83px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-width> from [15px\] to [thick\] at (-2) should be [35px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-bottom-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [initial\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (-2) should be [35px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [initial\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.6) should be [26px 46px 66px 86px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-width> from [15px\] to [thick\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-width> from [15px\] to [thick\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [medium\] to [13px\] at (-0.25) should be [0.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (0) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-right-width> from [thin\] to [11px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [medium\] to [13px\] at (-0.25) should be [0.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (1) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1) should be [30px 50px 70px 90px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (1) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [unset\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [initial\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (1.5) should be [18px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (-0.3) should be [18px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1.5) should be [35px 55px 75px 95px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1.5) should be [35px 55px 75px 95px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.3) should be [23px 43px 63px 83px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [inherit\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (0.3) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (0) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1) should be [30px 50px 70px 90px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-right-width> from [thin\] to [11px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [initial\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-bottom-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [inherit\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-bottom-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.6) should be [26px 46px 66px 86px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0) should be [20px 40px 60px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [unset\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-width> from [15px\] to [thick\] at (0.3) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-right-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (0) should be [1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (-0.25) should be [0.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (0) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-width> from [15px\] to [thick\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1.5) should be [35px 55px 75px 95px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [medium\] to [13px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [initial\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [medium\] to [13px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [medium\] to [13px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.3) should be [23px 43px 63px 83px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-bottom-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.3) should be [23px 43px 63px 83px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [inherit\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-width> from [15px\] to [thick\] at (-2) should be [35px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (0.3) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (0) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (1.5) should be [18px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [medium\] to [13px\] at (1.5) should be [18px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-bottom-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [unset\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-right-width> from [thin\] to [11px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (-0.3) should be [17px 37px 57px 77px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-bottom-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [unset\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [inherit\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.6) should be [26px 46px 66px 86px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [unset\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [medium\] to [13px\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (-0.3) should be [17px 37px 57px 77px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [unset\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [medium\] to [13px\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [inherit\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-right-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-top-width> from [15px\] to [thick\] at (1.5) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0) should be [20px 40px 60px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (-2) should be [35px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-bottom-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-bottom-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0) should be [20px 40px 60px 80px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0.6) should be [26px 46px 66px 86px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [initial\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1) should be [30px 50px 70px 90px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (-0.3) should be [17px 37px 57px 77px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [medium\] to [13px\] at (-0.25) should be [0.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [inherit\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (-0.3) should be [18px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1) should be [30px 50px 70px 90px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (1) should be [11px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-right-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [initial\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-bottom-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-bottom-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-width> from [15px\] to [thick\] at (0.3) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [initial\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [inherit\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [medium\] to [13px\] at (1.5) should be [18px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [inherit\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (1.5) should be [35px 55px 75px 95px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [unset\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [initial\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-top-width> from [15px\] to [thick\] at (-0.3) should be [18px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [inherit\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-right-width> from [thin\] to [11px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [0px\] to [10px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (0) should be [20px 40px 60px 80px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (0.6) should be [9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [inherit\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [initial\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [medium\] to [13px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [unset\] to [20px\] at (1.5) should be [28.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-left-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-right-width> from [thin\] to [11px\] at (0.3) should be [4px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [inherit\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (0) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-right-width> from [thin\] to [11px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (0.6) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [initial\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-right-width> from [thin\] to [11px\] at (1) should be [11px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-width> from [20px 40px 60px 80px\] to [30px 50px 70px 90px\] at (-0.3) should be [17px 37px 57px 77px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-top-width> from [15px\] to [thick\] at (1) should be [5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <border-right-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-bottom-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-top-width> from [15px\] to [thick\] at (1) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-right-width> from [thin\] to [11px\] at (1.5) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-bottom-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [medium\] to [13px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <border-left-width> from [unset\] to [20px\] at (0.6) should be [13.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <border-left-width> from [0px\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <border-left-width> from [unset\] to [20px\] at (0.3) should be [8.1px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini b/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini
index 2b13dd777be..d61b97406d9 100644
--- a/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/animations/box-shadow-interpolation.html.ini
@@ -1,5 +1,637 @@
[box-shadow-interpolation.html]
- expected: ERROR
[box-shadow-interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 7px 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 13px 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (1.5) should be [rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 25px 15px 25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 25px 15px 25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.3) should be [rgba(255, 255, 0, 0.353) 7px 14px 0px 0px, rgba(0, 128, 0, 0.7) 3.5px 21px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (1) should be [rgb(0, 128, 0) -15px -10px 25px -4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px inset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.3) should be [rgb(0, 38, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.3) should be [rgba(255, 255, 0, 0.353) 7px 14px 0px 0px, rgba(0, 128, 0, 0.7) 3.5px 21px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0) should be [rgb(0, 0, 0) 10px 30px 10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 16px 24px 16px 24px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 15px 25px 15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 13px 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 16px 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0) should be [10px 20px yellow, 5px 10px green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (-0.3) should be [rgba(255, 255, 0, 0.65) 13px 26px 0px 0px, rgb(0, 166, 0) 6.5px 39px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.6) should be [rgba(255, 255, 0, 0.2) 4px 8px 0px 0px, rgba(0, 128, 0, 0.4) 2px 12px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.3) should be [rgba(255, 255, 0, 0.353) 7px 14px 0px 0px, rgba(0, 128, 0, 0.7) 3.5px 21px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.6) should be [rgba(255, 255, 0, 0.2) 4px 8px 0px 0px, rgba(0, 128, 0, 0.4) 2px 12px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0) should be [rgba(255, 255, 0, 0.5) 10px 20px 0px 0px, rgb(0, 128, 0) 5px 30px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0) should be [rgb(0, 0, 0) 30px 10px 30px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0.3) should be [10px 20px yellow, 5px 10px green\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 33px 7px 33px 7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (1) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.6) should be [rgba(255, 255, 0, 0.2) 4px 8px 0px 0px, rgba(0, 128, 0, 0.4) 2px 12px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.3) should be [rgba(255, 255, 0, 0.353) 7px 14px 0px 0px, rgba(0, 128, 0, 0.7) 3.5px 21px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (1.5) should be [rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (-0.3) should be [rgba(255, 255, 0, 0.65) 13px 26px 0px 0px, rgb(0, 166, 0) 6.5px 39px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 33px 7px 33px 7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px inset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (1) should be [rgb(0, 128, 0) -15px -10px 25px -4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0) should be [rgb(0, 0, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (1) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (-0.3) should be [rgba(255, 255, 0, 0.65) 13px 26px 0px 0px, rgb(0, 166, 0) 6.5px 39px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.6) should be [rgb(0, 77, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 15px 25px 15px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px inset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0.6) should be [rgba(255, 255, 0, 0.2) 4px 8px 0px 0px, rgba(0, 128, 0, 0.4) 2px 12px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0.6) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 33px 7px 33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 7px 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 33px 7px 33px 7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px -4px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0.6) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.6) should be [rgba(0, 0, 0, 0.6) 12px 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px -4px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (1.5) should be [rgb(0, 192, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.3) should be [rgb(0, 38, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (1) should be [rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 16px 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0) should be [10px 20px yellow, 5px 10px green\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.6) should be [rgb(0, 77, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 27px 13px 27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (1.5) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (1.5) should be [rgb(0, 192, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 16px 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (1) should be [rgb(0, 128, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (-0.3) should be [10px 20px yellow, 5px 10px green\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (1.5) should be [rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 25px 15px 25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0.5) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 15px 25px 15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (-0.3) should be [rgba(255, 255, 0, 0.65) 13px 26px 0px 0px, rgb(0, 166, 0) 6.5px 39px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 27px 13px 27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 27px 13px 27px 13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 24px 16px 24px 16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 7px 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 13px 27px 13px 27px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 24px 16px 24px 16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px -4px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px -4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 25px 15px 25px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.3) should be [rgb(0, 38, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0.5) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (-0.3) should be [10px 20px yellow, 5px 10px green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.6) should be [rgb(0, 77, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.3) should be [rgb(0, 38, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (0.6) should be [rgb(0, 77, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px -4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 24px 16px 24px 16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0) should be [rgb(0, 0, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (1) should be [rgb(0, 128, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px 3px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (1.5) should be [rgb(0, 192, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (1) should be [rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 30px 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (1.5) should be [rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [initial\] to [20px 20px 20px 20px black\] at (1) should be [rgb(0, 0, 0) 20px 20px 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000\] to [none\] at (0) should be [rgba(255, 255, 0, 0.5) 10px 20px 0px 0px, rgb(0, 128, 0) 5px 30px 0px 0px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 27px 13px 27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px\] at (1.5) should be [rgb(0, 192, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (-0.3) should be [rgb(0, 0, 0) 7px 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (0.3) should be [rgba(0, 0, 0, 0.3) 6px 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [unset\] to [20px 20px 20px 20px black\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px -6px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px -4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px inset\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0) should be [rgb(0, 0, 0) 30px 10px 30px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from neutral to [20px 20px 20px 20px black\] at (0.3) should be [rgb(0, 0, 0) 13px 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (0.6) should be [rgb(0, 0, 0) 24px 16px 24px 16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (1.5) should be [inset 5px 10px green, 15px 20px blue\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [inherit\] to [20px 20px 20px 20px black\] at (1.5) should be [rgb(0, 0, 0) 15px 25px 15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [black 15px 10px 5px 6px\] to [orange -15px -10px 25px -4px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px -9px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <box-shadow> from [10px 10px 10px 10px black\] to [10px 10px 10px 10px currentColor\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <box-shadow> from [15px 10px 5px 6px black inset\] to [-15px -10px 25px -4px orange inset\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px 9px inset\]]
+ expected: FAIL
+
+ [CSS Animations: property <box-shadow> from [10px 20px yellow, 5px 10px green\] to [inset 5px 10px green, 15px 20px blue\] at (0.3) should be [10px 20px yellow, 5px 10px green\]]
+ expected: FAIL
+
+ [Web Animations: property <box-shadow> from [15px 10px 5px 6px black\] to [-15px -10px 25px -4px orange\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px 0px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-color/animation/color-interpolation.html.ini b/tests/wpt/metadata/css/css-color/animation/color-interpolation.html.ini
index 6aebd4bda19..4713c185673 100644
--- a/tests/wpt/metadata/css/css-color/animation/color-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-color/animation/color-interpolation.html.ini
@@ -1,5 +1,268 @@
[color-interpolation.html]
- expected: ERROR
[color interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [black\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [black\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [inherit\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [initial\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [initial\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from neutral to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [initial\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [initial\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [black\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [inherit\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [black\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [inherit\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [black\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [inherit\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from neutral to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [black\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-color/animation/opacity-interpolation.html.ini b/tests/wpt/metadata/css/css-color/animation/opacity-interpolation.html.ini
index eb473ba082f..eeca99e7580 100644
--- a/tests/wpt/metadata/css/css-color/animation/opacity-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-color/animation/opacity-interpolation.html.ini
@@ -1,5 +1,283 @@
[opacity-interpolation.html]
- expected: ERROR
[opacity interpolation]
expected: FAIL
+ [Web Animations: property <opacity> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from neutral to [0.2\] at (0.3) should be [0.13\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [inherit\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [unset\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [initial\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [initial\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [inherit\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [unset\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from neutral to [0.2\] at (0.6) should be [0.16\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [inherit\] to [0.2\] at (0.3) should be [0.62\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [0\] to [1\] at (1.5) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [unset\] to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from neutral to [0.2\] at (-0.3) should be [0.07\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [unset\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [unset\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [initial\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from neutral to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [unset\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from neutral to [0.2\] at (0.3) should be [0.13\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [initial\] to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [0\] to [1\] at (1.5) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from neutral to [0.2\] at (0.3) should be [0.13\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [inherit\] to [0.2\] at (-0.3) should be [0.98\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [inherit\] to [0.2\] at (-0.3) should be [0.98\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [inherit\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [initial\] to [0.2\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [initial\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [unset\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [initial\] to [0.2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [initial\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [unset\] to [0.2\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from neutral to [0.2\] at (1.5) should be [0.25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [inherit\] to [0.2\] at (0.3) should be [0.62\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from neutral to [0.2\] at (-0.3) should be [0.07\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [unset\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [inherit\] to [0.2\] at (-0.3) should be [0.98\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [initial\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from neutral to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from neutral to [0.2\] at (0.6) should be [0.16\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [inherit\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from neutral to [0.2\] at (0.6) should be [0.16\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [0\] to [1\] at (1.5) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [unset\] to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [unset\] to [0.2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [inherit\] to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from neutral to [0.2\] at (-0.3) should be [0.07\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [inherit\] to [0.2\] at (0.6) should be [0.44\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [initial\] to [0.2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [initial\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [initial\] to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [unset\] to [0.2\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [unset\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [unset\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from neutral to [0.2\] at (0.3) should be [0.13\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [unset\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [unset\] to [0.2\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [0\] to [1\] at (1.5) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from neutral to [0.2\] at (1.5) should be [0.25\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [inherit\] to [0.2\] at (1) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [unset\] to [0.2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [initial\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [inherit\] to [0.2\] at (0.6) should be [0.44\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [unset\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [inherit\] to [0.2\] at (0.6) should be [0.44\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from neutral to [0.2\] at (1.5) should be [0.25\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from neutral to [0.2\] at (0.6) should be [0.16\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [inherit\] to [0.2\] at (0) should be [0.8\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [inherit\] to [0.2\] at (0) should be [0.8\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from neutral to [0.2\] at (1.5) should be [0.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [inherit\] to [0.2\] at (0.3) should be [0.62\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from neutral to [0.2\] at (0) should be [0.1\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from neutral to [0.2\] at (-0.3) should be [0.07\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <opacity> from [inherit\] to [0.2\] at (0.6) should be [0.44\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [initial\] to [0.2\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <opacity> from [initial\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Transitions: property <opacity> from [initial\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [initial\] to [0.2\] at (0.3) should be [0.76\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [inherit\] to [0.2\] at (-0.3) should be [0.98\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [initial\] to [0.2\] at (0.6) should be [0.52\]]
+ expected: FAIL
+
+ [CSS Animations: property <opacity> from [inherit\] to [0.2\] at (0.3) should be [0.62\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-interpolation.html.ini b/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-interpolation.html.ini
index 152e807d6df..a3311791e91 100644
--- a/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/animation/flex-basis-interpolation.html.ini
@@ -1,5 +1,313 @@
[flex-basis-interpolation.html]
- expected: ERROR
[flex-basis interpolation]
expected: FAIL
+ [Web Animations: property <flex-basis> from [inherit\] to [2%\] at (1.5) should be [1.5%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (0.6) should be [2%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from neutral to [2%\] at (-0.3) should be [0.7%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [inherit\] to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from neutral to [2%\] at (0.3) should be [1.3%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [0px\] to [100px\] at (0.4) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [inherit\] to [2%\] at (-0.3) should be [3.3%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from neutral to [2%\] at (0) should be [1%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from neutral to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [inherit\] to [2%\] at (0.3) should be [2.7%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [inherit\] to [2%\] at (1.5) should be [1.5%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0%\] to [100%\] at (-0.3) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [inherit\] to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (0.5) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (1.5) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0%\] to [100%\] at (-0.3) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [inherit\] to [2%\] at (0.3) should be [2.7%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [0%\] to [100%\] at (1.5) should be [150%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [inherit\] to [2%\] at (0) should be [3%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (0.5) should be [2%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from neutral to [2%\] at (0.3) should be [1.3%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from neutral to [2%\] at (-0.3) should be [0.7%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (0.6) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (1.5) should be [2%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from neutral to [2%\] at (1.5) should be [2.5%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [inherit\] to [2%\] at (0.6) should be [2.4%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [0px\] to [100px\] at (0.4) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from neutral to [2%\] at (0.3) should be [1.3%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [inherit\] to [2%\] at (0.3) should be [2.7%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from neutral to [2%\] at (0.3) should be [1.3%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from neutral to [2%\] at (0.6) should be [1.6%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from neutral to [2%\] at (1.5) should be [2.5%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [inherit\] to [2%\] at (-0.3) should be [3.3%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from neutral to [2%\] at (1.5) should be [2.5%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from neutral to [2%\] at (0.6) should be [1.6%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (0.5) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [inherit\] to [2%\] at (0.6) should be [2.4%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [0%\] to [100%\] at (0.6) should be [60%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [0%\] to [100%\] at (1.5) should be [150%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (1.5) should be [2%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (0.5) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0px\] to [100px\] at (0.4) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0%\] to [100%\] at (0.4) should be [40%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0%\] to [100%\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0%\] to [100%\] at (1.5) should be [150%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0%\] to [100%\] at (0.6) should be [60%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0%\] to [100%\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (0.6) should be [2%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0px\] to [100px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [0%\] to [100%\] at (0.4) should be [40%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [0%\] to [100%\] at (0.4) should be [40%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0%\] to [100%\] at (0.6) should be [60%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [inherit\] to [2%\] at (0.6) should be [2.4%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [inherit\] to [2%\] at (1.5) should be [1.5%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from neutral to [2%\] at (0.6) should be [1.6%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [initial\] to [2%\] at (1.5) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0px\] to [100px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0%\] to [100%\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from neutral to [2%\] at (-0.3) should be [0.7%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from neutral to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from neutral to [2%\] at (1.5) should be [2.5%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0%\] to [100%\] at (1.5) should be [150%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [inherit\] to [2%\] at (0.3) should be [2.7%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [0%\] to [100%\] at (0.6) should be [60%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [unset\] to [2%\] at (1) should be [2%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [inherit\] to [2%\] at (0) should be [3%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-basis> from neutral to [2%\] at (0.6) should be [1.6%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0%\] to [100%\] at (0.4) should be [40%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0px\] to [100px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [inherit\] to [2%\] at (-0.3) should be [3.3%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [inherit\] to [2%\] at (-0.3) should be [3.3%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0px\] to [100px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from neutral to [2%\] at (-0.3) should be [0.7%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [unset\] to [2%\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [initial\] to [2%\] at (0.6) should be [2%\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [0px\] to [100px\] at (0.4) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-basis> from [inherit\] to [2%\] at (0.6) should be [2.4%\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-basis> from [0%\] to [100%\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-basis> from [inherit\] to [2%\] at (1.5) should be [1.5%\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/animation/flex-grow-interpolation.html.ini b/tests/wpt/metadata/css/css-flexbox/animation/flex-grow-interpolation.html.ini
index 1e5d4fe74f8..1b531d6b31d 100644
--- a/tests/wpt/metadata/css/css-flexbox/animation/flex-grow-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/animation/flex-grow-interpolation.html.ini
@@ -1,5 +1,355 @@
[flex-grow-interpolation.html]
- expected: ERROR
[flex-grow interpolation]
expected: FAIL
+ [CSS Animations: property <flex-grow> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [initial\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [initial\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [unset\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [unset\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from neutral to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [0\] to [1\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [unset\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [initial\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [initial\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [unset\] to [2\] at (0.3) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [initial\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [unset\] to [2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [initial\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-grow> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [1\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [initial\] to [2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [1\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [unset\] to [2\] at (1.5) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [unset\] to [2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-grow> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-grow> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-grow> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/animation/flex-shrink-interpolation.html.ini b/tests/wpt/metadata/css/css-flexbox/animation/flex-shrink-interpolation.html.ini
index e25706009be..d901dfb5e8b 100644
--- a/tests/wpt/metadata/css/css-flexbox/animation/flex-shrink-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/animation/flex-shrink-interpolation.html.ini
@@ -1,5 +1,367 @@
[flex-shrink-interpolation.html]
- expected: ERROR
[flex-shrink interpolation]
expected: FAIL
+ [Web Animations: property <flex-shrink> from [initial\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from neutral to [2\] at (-0.3) should be [1.35\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [unset\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [initial\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [unset\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [initial\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from neutral to [2\] at (0.3) should be [1.65\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from neutral to [2\] at (0.6) should be [1.8\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [unset\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [unset\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from neutral to [2\] at (1.5) should be [2.25\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [unset\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [unset\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [initial\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [unset\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [unset\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from neutral to [2\] at (1.5) should be [2.25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from neutral to [2\] at (0.3) should be [1.65\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [initial\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [initial\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [unset\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from neutral to [2\] at (-0.3) should be [1.35\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from neutral to [2\] at (0.6) should be [1.8\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [0\] to [1\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [initial\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [unset\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from neutral to [2\] at (-0.3) should be [1.35\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [initial\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [0\] to [1\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [unset\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [initial\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from neutral to [2\] at (0.3) should be [1.65\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [initial\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [unset\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [1\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [unset\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from neutral to [2\] at (0.6) should be [1.8\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [initial\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [initial\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (-5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [initial\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [unset\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [initial\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from neutral to [2\] at (-0.3) should be [1.35\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from neutral to [2\] at (0) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [0\] to [1\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [unset\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from neutral to [2\] at (1.5) should be [2.25\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [initial\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from neutral to [2\] at (0.6) should be [1.8\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [0\] to [1\] at (0.6) should be [0.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [0\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [unset\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from neutral to [2\] at (0.3) should be [1.65\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [0\] to [1\] at (0.3) should be [0.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <flex-shrink> from [initial\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [1\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [initial\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [1\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from neutral to [2\] at (1.5) should be [2.25\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [unset\] to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <flex-shrink> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <flex-shrink> from [initial\] to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <flex-shrink> from [unset\] to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/animation/order-interpolation.html.ini b/tests/wpt/metadata/css/css-flexbox/animation/order-interpolation.html.ini
index a7e52670667..8ddab1a1163 100644
--- a/tests/wpt/metadata/css/css-flexbox/animation/order-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/animation/order-interpolation.html.ini
@@ -1,5 +1,430 @@
[order-interpolation.html]
- expected: ERROR
[order interpolation]
expected: FAIL
+ [CSS Transitions: property <order> from neutral to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [unset\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (0.6) should be [24\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (-3) should be [-4\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (-0.5) should be [35\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [10\] to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (-3) should be [60\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from neutral to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [initial\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [unset\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [10\] to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [unset\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [10\] to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [10\] to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [unset\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (0) should be [30\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from neutral to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from neutral to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [unset\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (1.5) should be [15\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from neutral to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from neutral to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from neutral to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [10\] to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [inherit\] to [20\] at (0.6) should be [24\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [initial\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [10\] to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from neutral to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [initial\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (-0.5) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [inherit\] to [20\] at (-3) should be [60\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [10\] to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from neutral to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (0) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (1.5) should be [15\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [10\] to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (-0.5) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (0.3) should be [27\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [initial\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [inherit\] to [20\] at (0.3) should be [27\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (-3) should be [-4\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (-3) should be [60\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [2\] to [4\] at (-0.5) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [inherit\] to [20\] at (-0.5) should be [35\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [initial\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [initial\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [unset\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [unset\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [2\] to [4\] at (-0.5) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (0) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [initial\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (0) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [2\] to [4\] at (-3) should be [-4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from neutral to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [10\] to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (-0.5) should be [35\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from neutral to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [inherit\] to [20\] at (0.3) should be [27\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from neutral to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [10\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from neutral to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [inherit\] to [20\] at (0.6) should be [24\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [10\] to [20\] at (0.3) should be [13\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [inherit\] to [20\] at (0.6) should be [24\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [initial\] to [20\] at (0.6) should be [12\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [10\] to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [2\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (0) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [inherit\] to [20\] at (1.5) should be [15\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [10\] to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [inherit\] to [20\] at (1.5) should be [15\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [inherit\] to [20\] at (-0.5) should be [35\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [initial\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from neutral to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [initial\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (0.3) should be [27\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from neutral to [20\] at (-3) should be [-20\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [unset\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [10\] to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [10\] to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (1.5) should be [25\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [inherit\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [unset\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [inherit\] to [20\] at (-3) should be [60\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [2\] to [4\] at (-3) should be [-4\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [initial\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [10\] to [20\] at (0.6) should be [16\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (0.3) should be [6\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from neutral to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from neutral to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (-0.5) should be [-10\]]
+ expected: FAIL
+
+ [CSS Animations: property <order> from [unset\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <order> from [initial\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (1) should be [20\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [unset\] to [20\] at (1.5) should be [30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <order> from [unset\] to [20\] at (-3) should be [-60\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (0) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <order> from [10\] to [20\] at (-0.5) should be [5\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/animations/font-size-adjust-interpolation.html.ini b/tests/wpt/metadata/css/css-fonts/animations/font-size-adjust-interpolation.html.ini
index 123c6e59ade..ceb9684ecda 100644
--- a/tests/wpt/metadata/css/css-fonts/animations/font-size-adjust-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/animations/font-size-adjust-interpolation.html.ini
@@ -1,5 +1,592 @@
[font-size-adjust-interpolation.html]
- expected: ERROR
[font-size-adjust interpolation]
expected: FAIL
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (0.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (0.6) should be [0.72\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (1.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (0.3) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (0.3) should be [0.36\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (0.3) should be [0.36\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (0.6) should be [0.72\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (1.5) should be [1.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (-0.3) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (0.6) should be [0.72\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (0.3) should be [0.36\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (0.3) should be [0.36\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (1.5) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (0.5) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (0.5) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (0.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (1.5) should be [1.7\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (1.5) should be [1.8\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (1.5) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (0.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (1.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (0.6) should be [0.8\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (0) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (0.3) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (0.6) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (1.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (-0.3) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (0.6) should be [0.8\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (1.5) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (0.5) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (1.5) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (0.3) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (0.3) should be [1.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (1.5) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (-0.3) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (1.5) should be [1.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (0.6) should be [0.72\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (0.6) should be [0.8\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (0) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (0) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (1.5) should be [1.7\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (0.5) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (0) should be [0.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (0.6) should be [0.8\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (0.3) should be [0.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (0.3) should be [0.5\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0\] to [1.2\] at (1.5) should be [1.8\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (0) should be [0.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [unset\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (0) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (0.3) should be [0.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [none\] to [1.2\] at (0.3) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [0.2\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (0) should be [0.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (1.5) should be [1.8\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (0) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [none\] to [1.2\] at (0.5) should be [1.2\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from neutral to [2\] at (-2) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [none\] to [1.2\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (0.3) should be [2.7\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [unset\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (-0.3) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [none\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [initial\] to [2\] at (0) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (0.3) should be [0.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from neutral to [2\] at (0.6) should be [1.6\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [initial\] to [2\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [unset\] to [2\] at (-2) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [inherit\] to [2\] at (-0.3) should be [3.3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [initial\] to [2\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from [initial\] to [2\] at (1) should be [2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (1.5) should be [2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (1) should be [1.2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [0.2\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [unset\] to [2\] at (0.6) should be [2.4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size-adjust> from neutral to [2\] at (-0.3) should be [0.7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size-adjust> from [inherit\] to [2\] at (1.5) should be [1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0\] to [1.2\] at (1.5) should be [1.8\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size-adjust> from [0\] to [1.2\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size-adjust> from [0.2\] to [1.2\] at (-0.3) should be [0\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-001.html.ini b/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-001.html.ini
index 3cc169ca314..05e643b6fd0 100644
--- a/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-001.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-001.html.ini
@@ -1,5 +1,358 @@
[font-size-interpolation-001.html]
- expected: ERROR
[font-size interpolation]
expected: FAIL
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (-2) should be [8px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (0.6) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from neutral to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [initial\] to [20px\] at (0.3) should be [17.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (0) should be [4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [4px\] to [14px\] at (0) should be [4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [4px\] to [14px\] at (0.6) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [4px\] to [14px\] at (0.6) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from neutral to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [initial\] to [20px\] at (-0.3) should be [14.8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [initial\] to [20px\] at (-2) should be [8px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [initial\] to [20px\] at (0.6) should be [18.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (0.3) should be [17.2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (1.5) should be [22px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [4px\] to [14px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [4px\] to [14px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [initial\] to [20px\] at (0.6) should be [18.4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from neutral to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (0.6) should be [18.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [initial\] to [20px\] at (0.3) should be [17.2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [initial\] to [20px\] at (-0.3) should be [14.8px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [initial\] to [20px\] at (1.5) should be [22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (1.5) should be [22px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [4px\] to [14px\] at (1) should be [14px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [4px\] to [14px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (0.6) should be [18.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (-2) should be [8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [initial\] to [20px\] at (-2) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [inherit\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [inherit\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (0) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (0.3) should be [17.2px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (-0.3) should be [14.8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [initial\] to [20px\] at (-0.3) should be [14.8px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [initial\] to [20px\] at (1.5) should be [22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [initial\] to [20px\] at (0) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [4px\] to [14px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (-2) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [4px\] to [14px\] at (1.5) should be [19px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-002.html.ini b/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-002.html.ini
index c430b0702af..16058b2082a 100644
--- a/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-002.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-002.html.ini
@@ -1,5 +1,73 @@
[font-size-interpolation-002.html]
- expected: ERROR
[font-size interpolation]
expected: FAIL
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [unset\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [unset\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [unset\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-003.html.ini b/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-003.html.ini
index 41cc7a482cb..65a324053ac 100644
--- a/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-003.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/animations/font-size-interpolation-003.html.ini
@@ -1,5 +1,73 @@
[font-size-interpolation-003.html]
- expected: ERROR
[font-size interpolation with zoom]
expected: FAIL
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [10px\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [10px\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [10px\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [10px\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [10px\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [10px\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [10px\] to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [10px\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [10px\] to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [10px\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [10px\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [10px\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-size> from [10px\] to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [10px\] to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-size> from [10px\] to [20px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <font-size> from [10px\] to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-size> from [10px\] to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-interpolation.html.ini b/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-interpolation.html.ini
index e8f6869ab22..5dcbb2558f6 100644
--- a/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-interpolation.html.ini
@@ -1,5 +1,868 @@
[font-variation-settings-interpolation.html]
- expected: ERROR
[font-variation-settings interpolation]
expected: FAIL
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.7) should be ['aaaa' 7, 'bbbb' 17, 'cccc' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.6) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (1) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (-0.5) should be ['aaaa' -15, 'bbbb' 5, 'cccc' 25\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 15, 'bbbb' 25, 'cccc' 35\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from neutral to ["test" 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [unset\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from neutral to ["test" 20\] at (0) should be ['test' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 15, 'bbbb' 25, 'cccc' 35\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.3) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.3) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from neutral to ["test" 20\] at (-0.5) should be ['test' 5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.6) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.5) should be ['aaaa' -5, 'bbbb' 5, 'cccc' 15\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.7) should be ['aaaa' 21, 'bbbb' 17, 'cccc' 13\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from neutral to ["test" 20\] at (1.5) should be ['test' 25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1.5) should be ['aaaa' 45, 'bbbb' 25, 'cccc' 5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.3) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.6) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (1.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (-0.3) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (-0.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.7) should be ['aaaa' 7, 'bbbb' 17, 'cccc' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.6) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (-0.3) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1) should be ['aaaa' 30, 'bbbb' 20, 'cccc' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (0) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1.5) should be ['aaaa' 45, 'bbbb' 25, 'cccc' 5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.7) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.6) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1.5) should be ['aaaa' 45, 'bbbb' 25, 'cccc' 5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (-0.3) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (-0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1) should be ['aaaa' 30, 'bbbb' 20, 'cccc' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.3) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from neutral to ["test" 20\] at (-0.5) should be ['test' 5\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from neutral to ["test" 20\] at (-0.5) should be ['test' 5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [unset\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1) should be ['test' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (-0.5) should be ['aaaa' -15, 'bbbb' 5, 'cccc' 25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1) should be ['test' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.3) should be ['aaaa' 9, 'bbbb' 13, 'cccc' 17\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (1) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.5) should be ['aaaa' -5, 'bbbb' 5, 'cccc' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from neutral to ["test" 20\] at (0.3) should be ['test' 13\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (1) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from neutral to ["test" 20\] at (0.3) should be ['test' 13\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from neutral to ["test" 20\] at (1.5) should be ['test' 25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from neutral to ["test" 20\] at (0.7) should be ['test' 17\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from neutral to ["test" 20\] at (0) should be ['test' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from neutral to ["test" 20\] at (0.7) should be ['test' 17\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.3) should be ['aaaa' 9, 'bbbb' 13, 'cccc' 17\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 30, 'bbbb' 20\] to ['aaaa' 20, 'bbbb' 30\] at (3.40282e+38) should be ['aaaa' -3.40282e+38, 'bbbb' 3.40282e+38\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from neutral to ["test" 20\] at (0) should be ['test' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from neutral to ["test" 20\] at (0.3) should be ['test' 13\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.6) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [unset\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (-0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (1.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.3) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from neutral to ["test" 20\] at (0.7) should be ['test' 17\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 30, 'bbbb' 20\] to ['aaaa' 20, 'bbbb' 30\] at (3.40282e+38) should be ['aaaa' -3.40282e+38, 'bbbb' 3.40282e+38\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.7) should be ['aaaa' 7, 'bbbb' 17, 'cccc' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from neutral to ["test" 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (-0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.7) should be ['aaaa' 21, 'bbbb' 17, 'cccc' 13\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from neutral to ["test" 20\] at (1.5) should be ['test' 25\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (1.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.3) should be ['test' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0) should be ['test' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.6) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from neutral to ["test" 20\] at (0.7) should be ['test' 17\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.6) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [unset\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.7) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.7) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (-0.5) should be ['aaaa' -15, 'bbbb' 5, 'cccc' 25\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0) should be ['test' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.3) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [unset\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from neutral to ["test" 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1) should be ['aaaa' 30, 'bbbb' 20, 'cccc' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (-0.3) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 30, 'bbbb' 20\] to ['aaaa' 20, 'bbbb' 30\] at (3.40282e+38) should be ['aaaa' -3.40282e+38, 'bbbb' 3.40282e+38\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 3, 'bbbb' 13, 'cccc' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 15, 'bbbb' 25, 'cccc' 35\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (0) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (-0.3) should be ['test' 50\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.3) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [unset\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.7) should be ['test' 27\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from neutral to ["test" 20\] at (-0.5) should be ['test' 5\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 30, 'bbbb' 20\] to ['aaaa' 20, 'bbbb' 30\] at (3.40282e+38) should be ['aaaa' -3.40282e+38, 'bbbb' 3.40282e+38\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1.5) should be ['aaaa' 45, 'bbbb' 25, 'cccc' 5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0) should be ['test' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.5) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (1) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.6) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (-0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from neutral to ["test" 20\] at (0.3) should be ['test' 13\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.3) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (-0.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.6) should be ['test' 50\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0.3) should be ['test' 27\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (1) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.6) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.6) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.3) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (1.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from neutral to ["test" 20\] at (1.5) should be ['test' 25\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (-0.5) should be ['aaaa' -15, 'bbbb' 5, 'cccc' 25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [inherit\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.5) should be ['aaaa' -5, 'bbbb' 5, 'cccc' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1.5) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (-0.3) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (-0.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.3) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 3, 'bbbb' 13, 'cccc' 23\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [unset\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [inherit\] to ['test' 20\] at (-0.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [inherit\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.7) should be ['aaaa' 21, 'bbbb' 17, 'cccc' 13\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1.5) should be ['aaaa' 15, 'bbbb' 25, 'cccc' 35\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [unset\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.3) should be ['aaaa' 9, 'bbbb' 13, 'cccc' 17\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.3) should be ['aaaa' 9, 'bbbb' 13, 'cccc' 17\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 3, 'bbbb' 13, 'cccc' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from neutral to ["test" 20\] at (0) should be ['test' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.7) should be ['aaaa' 7, 'bbbb' 17, 'cccc' 27\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (0.3) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0.7) should be ['aaaa' 21, 'bbbb' 17, 'cccc' 13\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (-0.3) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.6) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.6) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (-0.5) should be ['test' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.3) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (0.3) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (1) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (1) should be ['aaaa' 30, 'bbbb' 20, 'cccc' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from neutral to ["test" 20\] at (1) should be ['test' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['dddd' 10, 'eeee' 20, 'ffff' 30\] at (-0.3) should be ['dddd' 10, 'eeee' 20, 'ffff' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.6) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['cccc' 10, 'bbbb' 20, 'aaaa' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0.3) should be ['aaaa' 3, 'bbbb' 13, 'cccc' 23\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from [unset\] to ['test' 20\] at (0.7) should be ['test' 23\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [unset\] to ['test' 20\] at (0) should be ['test' 30\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.6) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from [initial\] to ['test' 50\] at (0.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from [initial\] to ['test' 50\] at (1.5) should be ['test' 50\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1.5) should be ['test' 35\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Animations: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (-0.5) should be ['aaaa' -5, 'bbbb' 5, 'cccc' 15\]]
+ expected: FAIL
+
+ [Web Animations: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (0.6) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (1) should be ['aaaa' 10, 'bbbb' 20, 'cccc' 30\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] to ['aaaa' 0, 'bbbb' 10\] at (1.5) should be ['aaaa' 0, 'bbbb' 10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to [normal\] at (1.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <font-variation-settings> from ['test' 20\] to [normal\] at (0.5) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['aaaa' 0, 'bbbb' 10, 'cccc' 20\] to ['aaaa' 10, 'bbbb' 20, 'cccc' 30\] at (0) should be ['aaaa' 0, 'bbbb' 10, 'cccc' 20\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <font-variation-settings> from ['test' 20\] to ['test' 30\] at (1) should be ['test' 30\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/standard-font-family-19.html.ini b/tests/wpt/metadata/css/css-fonts/standard-font-family-19.html.ini
new file mode 100644
index 00000000000..0a8511c11ed
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/standard-font-family-19.html.ini
@@ -0,0 +1,2 @@
+[standard-font-family-19.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-fonts/standard-font-family-20.html.ini b/tests/wpt/metadata/css/css-fonts/standard-font-family-20.html.ini
new file mode 100644
index 00000000000..03ea791f2a8
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/standard-font-family-20.html.ini
@@ -0,0 +1,2 @@
+[standard-font-family-20.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini b/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini
index c0c7c0bf2f2..21f1c21b7a0 100644
--- a/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-images/animations/object-position-interpolation.html.ini
@@ -1,5 +1,640 @@
[object-position-interpolation.html]
- expected: ERROR
[object-position-interpolation]
expected: FAIL
+ [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (1.5) should be [-50px -100px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.3) should be [65% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (0.5) should be [calc(25% + 25px) calc(50% + 50px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.5) should be [75% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (0.5) should be [calc(10px + 25%) calc(10px + 25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (0.5) should be [50px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [top right\] at (1) should be [100% 0%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (1.5) should be [125% 125%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (0.9) should be [95% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [top right\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 50%\] to [100% 100%\] at (1) should be [100% 100%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [50px 100px\] at (-0.3) should be [calc(65% + -15px) calc(130% + -30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (0) should be [center\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [50px 100px\] at (1.5) should be [calc(-25% + 75px) calc(-50% + 150px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 100%\] to [50px 100px\] at (1) should be [calc(0% + 50px) calc(0% + 100px)\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (-0.3) should be [65% 130%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [initial\] to [20px 20px\] at (1) should be [calc(20px + 0%) calc(20px + 0%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [inherit\] to [20px 20px\] at (0.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [top right\] at (1.5) should be [125% -25%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from neutral to [20px 20px\] at (0) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [top right\] at (-0.3) should be [35% 65%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [100px 200px\] to [0px 0px\] at (-0.3) should be [130px 260px\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [right 0% bottom 50%\] at (2) should be [150% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [center\] to [right 0% bottom 50%\] at (-0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (0) should be [50% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (-0.3) should be [35% 35%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (1.5) should be [-25% -50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (1) should be [100% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from neutral to [20px 20px\] at (0.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [unset\] to [20px 20px\] at (1.5) should be [calc(30px + -25%) calc(30px + -25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [50% 50%\] to [100% 100%\] at (0.5) should be [75% 75%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [100px 200px\] to [0px 0px\] at (0) should be [100px 200px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [50% 100%\] to [0px 0px\] at (0.5) should be [25% 50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [50% 100%\] to [0px 0px\] at (0) should be [50% 100%\]]
+ expected: FAIL
+
+ [Web Animations: property <object-position> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <object-position> from [unset\] to [20px 20px\] at (-0.3) should be [calc(-6px + 65%) calc(-6px + 65%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <object-position> from [center\] to [right 0% bottom 50%\] at (1.5) should be [125% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <object-position> from [center\] to [top right\] at (0.5) should be [75% 25%\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/animations/letter-spacing-interpolation.html.ini b/tests/wpt/metadata/css/css-text/animations/letter-spacing-interpolation.html.ini
index d36bca23c57..e82b2321053 100644
--- a/tests/wpt/metadata/css/css-text/animations/letter-spacing-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-text/animations/letter-spacing-interpolation.html.ini
@@ -1,5 +1,358 @@
[letter-spacing-interpolation.html]
- expected: ERROR
[letter-spacing-interpolation]
expected: FAIL
+ [Web Animations: property <letter-spacing> from [inherit\] to [20px\] at (0) should be [2px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [unset\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [unset\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [inherit\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from neutral to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [unset\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [-10px\] to [10px\] at (0.6) should be [2px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from neutral to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from neutral to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [-10px\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [unset\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [unset\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from neutral to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [-10px\] to [10px\] at (0.3) should be [-4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [unset\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from neutral to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [inherit\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [inherit\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [unset\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from neutral to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [normal\] to [10px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [inherit\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [-10px\] to [10px\] at (-0.3) should be [-16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [-10px\] to [10px\] at (0.3) should be [-4px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from neutral to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [-10px\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [-10px\] to [10px\] at (0.3) should be [-4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [-10px\] to [10px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [inherit\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [-10px\] to [10px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [inherit\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [unset\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [inherit\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from neutral to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [unset\] to [20px\] at (0) should be [2px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from neutral to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from neutral to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [-10px\] to [10px\] at (0.6) should be [2px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [inherit\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [unset\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [-10px\] to [10px\] at (0) should be [-10px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [unset\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [normal\] to [10px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from neutral to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from neutral to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from neutral to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [-10px\] to [10px\] at (0) should be [-10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [initial\] to [20px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [-10px\] to [10px\] at (-0.3) should be [-16px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [unset\] to [20px\] at (0) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [unset\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [-10px\] to [10px\] at (0.6) should be [2px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [inherit\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [unset\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [unset\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [inherit\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [unset\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [-10px\] to [10px\] at (-0.3) should be [-16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from neutral to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [-10px\] to [10px\] at (0.3) should be [-4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [unset\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from neutral to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [-10px\] to [10px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [initial\] to [20px\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [inherit\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from neutral to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [inherit\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [inherit\] to [20px\] at (0) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <letter-spacing> from [-10px\] to [10px\] at (-0.3) should be [-16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [-10px\] to [10px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [inherit\] to [20px\] at (0.3) should be [7.4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [inherit\] to [20px\] at (-0.3) should be [-3.4px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [inherit\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [normal\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [Web Animations: property <letter-spacing> from [unset\] to [20px\] at (1.5) should be [29px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from [-10px\] to [10px\] at (0.6) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <letter-spacing> from neutral to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [inherit\] to [20px\] at (0.6) should be [12.8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <letter-spacing> from [normal\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/animations/text-indent-interpolation.html.ini b/tests/wpt/metadata/css/css-text/animations/text-indent-interpolation.html.ini
index a4ea398608e..9839b1edb93 100644
--- a/tests/wpt/metadata/css/css-text/animations/text-indent-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-text/animations/text-indent-interpolation.html.ini
@@ -1,5 +1,613 @@
[text-indent-interpolation.html]
- expected: ERROR
[text-indent-interpolation]
expected: FAIL
+ [CSS Transitions: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0) should be [0 hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [inherit\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.3) should be [15px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (1.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [unset\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.3) should be [15px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0) should be [0 hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging\] to [50px hanging\] at (0) should be [0 hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [inherit\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.6) should be [30px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.3) should be [15px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [inherit\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (1) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.6) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [inherit\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.6) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [unset\] to [20px\] at (0) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [unset\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [inherit\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (0) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px\] at (1.5) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [unset\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [inherit\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [unset\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [inherit\] to [20px\] at (0) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.3) should be [15px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px\] at (1.5) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [inherit\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [unset\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (1.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging\] to [50px hanging\] at (1.5) should be [75px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [unset\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.3) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [inherit\] to [20px\] at (0) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1.5) should be [75px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [inherit\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging\] to [50px hanging\] at (1.5) should be [75px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from neutral to [40px\] at (-0.3) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px\] at (-0.3) should be [-15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [inherit\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [inherit\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [unset\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.6) should be [30px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (-0.3) should be [-15px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (1.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px\] at (-0.3) should be [-15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (-0.3) should be [-15px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0) should be [0px each-line\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.3) should be [15px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.6) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (1.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px\] at (-0.3) should be [-15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging\] to [50px hanging\] at (-0.3) should be [-15px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [inherit\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.6) should be [30px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px\] at (0.3) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (-0.3) should be [-15px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging\] to [50px hanging\] at (0) should be [0 hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (-0.3) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [unset\] to [20px\] at (0) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [unset\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [unset\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (1) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [inherit\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.6) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.6) should be [30px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (-0.3) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [unset\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px\] at (0.6) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (0) should be [0 hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px\] at (0.3) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0) should be [0 hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.6) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1.5) should be [75px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [unset\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (1) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (1.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [unset\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.3) should be [15px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.6) should be [30px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (-0.3) should be [-15px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px\] at (0.3) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1) should be [50px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1) should be [50px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.6) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [inherit\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (-0.3) should be [-15px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (0) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1) should be [50px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (-0.3) should be [0px each-line\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px\] at (-0.3) should be [-15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1) should be [50px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (0) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (0) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.3) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (-0.3) should be [-15px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (-0.3) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.3) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px\] at (0.6) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [inherit\] to [20px\] at (1.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [inherit\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px\] at (0.3) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [unset\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [inherit\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (0) should be [0 hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0) should be [0px each-line\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.6) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1.5) should be [75px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px\] at (0.6) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.6) should be [30px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (1) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.3) should be [15px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.3) should be [0px each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.3) should be [0px each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (1.5) should be [75px hanging each-line\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.6) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (1.5) should be [75px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (1.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [unset\] to [20px\] at (-0.3) should be [85px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [unset\] to [20px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px\] to [50px\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px each-line hanging\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0px\] to [50px\] at (1.5) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px\] at (1.5) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px\] at (0.6) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging\] to [50px hanging\] at (1.5) should be [75px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (1) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px each-line\] to [50px hanging\] at (1.5) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [unset\] to [20px\] at (0.3) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (-0.3) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px\] to [50px each-line hanging\] at (1.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.3) should be [15px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging\] to [50px hanging\] at (-0.3) should be [-15px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0.6) should be [30px hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px hanging\] to [50px hanging\] at (0.6) should be [30px hanging\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0px each-line\] to [50px hanging\] at (0.3) should be [50px hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px hanging each-line\] to [50px each-line hanging\] at (0) should be [0 hanging each-line\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0px\] to [50px each-line hanging\] at (0.5) should be [50px each-line hanging\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0px each-line\] to [50px hanging\] at (-0.3) should be [0px each-line\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/animations/word-spacing-interpolation.html.ini b/tests/wpt/metadata/css/css-text/animations/word-spacing-interpolation.html.ini
index 0725df56802..105a5295d64 100644
--- a/tests/wpt/metadata/css/css-text/animations/word-spacing-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-text/animations/word-spacing-interpolation.html.ini
@@ -1,5 +1,358 @@
[word-spacing-interpolation.html]
- expected: ERROR
[word-spacing-interpolation]
expected: FAIL
+ [CSS Transitions: property <word-spacing> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [-10px\] to [40px\] at (-0.3) should be [-25px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [-10px\] to [40px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [-10px\] to [40px\] at (0.3) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [-10px\] to [40px\] at (1.5) should be [65px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [-10px\] to [40px\] at (0) should be [-10px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [normal\] to [10px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [-10px\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [unset\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [-10px\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [unset\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [-10px\] to [40px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [-10px\] to [40px\] at (1.5) should be [65px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [normal\] to [10px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [-10px\] to [40px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [-10px\] to [40px\] at (0.6) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [-10px\] to [40px\] at (0.3) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [-10px\] to [40px\] at (0) should be [-10px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [-10px\] to [40px\] at (-0.3) should be [-25px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [-10px\] to [40px\] at (1.5) should be [65px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [-10px\] to [40px\] at (0.3) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [normal\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [normal\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [unset\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [-10px\] to [40px\] at (-0.3) should be [-25px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [normal\] to [10px\] at (-0.3) should be [-3px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [-10px\] to [40px\] at (0.3) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [unset\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <word-spacing> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [-10px\] to [40px\] at (1.5) should be [65px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [normal\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <word-spacing> from [unset\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [normal\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <word-spacing> from [-10px\] to [40px\] at (-0.3) should be [-25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <word-spacing> from [unset\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini
new file mode 100644
index 00000000000..693999d7f9d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini
@@ -0,0 +1,2 @@
+[line-break-normal-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini
new file mode 100644
index 00000000000..bd79bd226f9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini
@@ -0,0 +1,2 @@
+[line-break-strict-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini
new file mode 100644
index 00000000000..f22c4186d50
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini
@@ -0,0 +1,7 @@
+[word-boundary-detection-computed.html]
+ [Property word-boundary-detection value 'normal' computes to 'normal']
+ expected: FAIL
+
+ [Property word-boundary-detection value 'manual' computes to 'manual']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-valid.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-valid.html.ini
new file mode 100644
index 00000000000..c05d7a883cb
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-valid.html.ini
@@ -0,0 +1,7 @@
+[word-boundary-detection-valid.html]
+ [e.style['word-boundary-detection'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [e.style['word-boundary-detection'\] = "manual" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini
new file mode 100644
index 00000000000..f2dea9cf7a2
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini
@@ -0,0 +1,10 @@
+[word-boundary-expansion-computed.html]
+ [Property word-boundary-expansion value 'space' computes to 'space']
+ expected: FAIL
+
+ [Property word-boundary-expansion value 'ideographic-space' computes to 'ideographic-space']
+ expected: FAIL
+
+ [Property word-boundary-expansion value 'none' computes to 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-valid.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-valid.html.ini
new file mode 100644
index 00000000000..c1f25ca839c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-valid.html.ini
@@ -0,0 +1,10 @@
+[word-boundary-expansion-valid.html]
+ [e.style['word-boundary-expansion'\] = "space" should set the property value]
+ expected: FAIL
+
+ [e.style['word-boundary-expansion'\] = "ideographic-space" should set the property value]
+ expected: FAIL
+
+ [e.style['word-boundary-expansion'\] = "none" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
new file mode 100644
index 00000000000..240d1283c3a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-001.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-001.html.ini
new file mode 100644
index 00000000000..201a7f68bc6
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-001.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-002.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-002.html.ini
new file mode 100644
index 00000000000..671edc8c6b6
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-002.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-003.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-003.html.ini
new file mode 100644
index 00000000000..dcc7ea518e3
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-003.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-004.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-004.html.ini
new file mode 100644
index 00000000000..c2ed0704079
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-004.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-005.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-005.html.ini
new file mode 100644
index 00000000000..5c8f8888bf1
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-005.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-006.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-006.html.ini
new file mode 100644
index 00000000000..59990e91eff
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-006.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-006.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-007.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-007.html.ini
new file mode 100644
index 00000000000..e4f9fe57f1c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-007.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-007.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-008.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-008.html.ini
new file mode 100644
index 00000000000..3d3bda613ff
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-008.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-008.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-009.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-009.html.ini
new file mode 100644
index 00000000000..bf153d1a569
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-009.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-009.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-010.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-010.html.ini
new file mode 100644
index 00000000000..bb02af24b3d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-010.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-010.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-011.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-011.html.ini
new file mode 100644
index 00000000000..bacbc5fdf59
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-011.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-011.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-012.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-012.html.ini
new file mode 100644
index 00000000000..00e16d20863
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-012.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-012.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-013.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-013.html.ini
new file mode 100644
index 00000000000..0171725420f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-013.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-013.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-014.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-014.html.ini
new file mode 100644
index 00000000000..705d9e14464
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-014.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-014.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-102.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-102.html.ini
new file mode 100644
index 00000000000..0e40fcb9f09
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-102.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-102.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-103.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-103.html.ini
new file mode 100644
index 00000000000..27899b63155
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-103.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-103.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-104.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-104.html.ini
new file mode 100644
index 00000000000..77f96a47ac0
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-104.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-104.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-105.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-105.html.ini
new file mode 100644
index 00000000000..840044bc006
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-105.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-105.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-107.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-107.html.ini
new file mode 100644
index 00000000000..63d6fcc1168
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-107.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-107.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-108.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-108.html.ini
new file mode 100644
index 00000000000..767d3ca5a00
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-108.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-108.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-109.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-109.html.ini
new file mode 100644
index 00000000000..7fcf6cd2867
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-109.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-109.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-110.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-110.html.ini
new file mode 100644
index 00000000000..a17d0a24611
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-110.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-110.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-112.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-112.html.ini
new file mode 100644
index 00000000000..ee07c319feb
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-112.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-112.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-113.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-113.html.ini
new file mode 100644
index 00000000000..abea305088f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-113.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-113.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-114.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-114.html.ini
new file mode 100644
index 00000000000..da95790bcf8
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-114.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-114.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-115.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-115.html.ini
new file mode 100644
index 00000000000..d85c5512b66
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-115.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-115.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-116.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-116.html.ini
new file mode 100644
index 00000000000..6968d8f652c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-116.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-116.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-117.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-117.html.ini
new file mode 100644
index 00000000000..f62025e8326
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-117.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-117.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-118.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-118.html.ini
new file mode 100644
index 00000000000..7d7e9975994
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-118.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-118.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-119.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-119.html.ini
new file mode 100644
index 00000000000..fab9077f0b5
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-119.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-119.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-120.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-120.html.ini
new file mode 100644
index 00000000000..450539a5df9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-120.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-120.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-121.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-121.html.ini
new file mode 100644
index 00000000000..0337c634dd9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-121.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-121.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-122.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-122.html.ini
new file mode 100644
index 00000000000..ece305eb8a4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-122.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-122.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-123.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-123.html.ini
new file mode 100644
index 00000000000..2ec608aa4fd
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-123.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-123.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-124.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-124.html.ini
new file mode 100644
index 00000000000..199463f5151
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-124.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-124.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-125.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-125.html.ini
new file mode 100644
index 00000000000..0acaeca9615
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-125.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-125.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-126.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-126.html.ini
new file mode 100644
index 00000000000..024b35d55b2
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-126.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-126.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-127.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-127.html.ini
new file mode 100644
index 00000000000..7e43d876903
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-127.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-127.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-128.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-128.html.ini
new file mode 100644
index 00000000000..c517a4e1d54
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-128.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-128.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-129.html.ini b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-129.html.ini
new file mode 100644
index 00000000000..d14e053675b
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-boundary/word-boundary-129.html.ini
@@ -0,0 +1,2 @@
+[word-boundary-129.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/animation/list-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/list-interpolation.html.ini
index 9b671ea64ee..5105b95eec5 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/list-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/list-interpolation.html.ini
@@ -1,5 +1,4 @@
[list-interpolation.html]
- expected: ERROR
[Animation between "scale(2) rotate(0deg) translate(100px)" and "rotate(720deg) scale(2) translate(200px)" at progress 0.25]
expected: FAIL
@@ -90,3 +89,222 @@
[Transform list interpolation]
expected: FAIL
+ [CSS Animations: property <transform> from [none\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(50px) rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [none\] at (0.25) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(720deg) translateX(0px) scaleX(2)\] to [rotate(0deg) scaleX(1)\] at (0.25) should be [rotate(540deg) matrix(1.75, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(0deg) scaleX(1)\] to [rotate(720deg) translateX(0px) scaleX(2)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(-3) scaleY(2)\] to [scaleY(-3) translateX(0px) scaleX(2)\] at (0.25) should be [scale(-2, 0) matrix(1.25, 0, 0, 1.75, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(-3) scaleY(2)\] to [scaleY(-3) translateX(0px) scaleX(2)\] at (0.25) should be [scale(-2, 0) matrix(1.25, 0, 0, 1.75, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(100px) rotate(720deg)\] to [translate(200px)\] at (0.25) should be [translate(125px) rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(0deg) scaleX(1)\] to [rotate(720deg) translateX(0px) scaleX(2)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(-3) translateX(0px)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)\] to [rotate3d(0, 1, 0, -720deg) translateY(200px)\] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(2) rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 250, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(-3) translateX(0px)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(-3) translateX(0px) scaleX(2)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1.75, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(50px) rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(100px) scaleX(3) translate(500px) scale(2)\] to [translateY(200px) scale(5) translateX(100px) scaleY(3)\] at (0.25) should be [translate(75px, 50px) scale(3.5, 2) translate(400px, 0px) scale(1.75, 2.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(2) rotate(0deg)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 100, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotate3d(50, 0, 0, 180deg) translateY(200px)\] at (0.25) should be [rotateX(112.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(200px) rotate(720deg)\] to [none\] at (0.25) should be [translate(150px) rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(200px) rotate(720deg)\] to [none\] at (0.25) should be [translate(150px) rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1.25, 175, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(2) rotate(360deg) translate(100px) matrix(1, 0, 0, 1, 100, 0) skew(0deg)\] to [scale(3) rotate(1080deg) translate(200px) matrix(1, 0, 0, 1, 0, 200) skew(720deg)\] at (0.25) should be [scale(2.25) rotate(540deg) translate(125px) matrix(1, 0, 0, 1, 75, 50) skew(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(100px) rotate(720deg)\] to [translate(200px)\] at (0.25) should be [translate(125px) rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1.25, 175, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1.25, 175, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)\] to [rotate3d(0, 1, 0, -720deg) translateY(200px)\] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(-3) scaleY(2)\] to [scaleY(-3) translateX(0px) scaleX(2)\] at (0.25) should be [scale(-2, 0) matrix(1.25, 0, 0, 1.75, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)\] to [rotate3d(2, 2, 2, 60deg) translateY(200px)\] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(0deg) scaleX(1)\] to [rotate(720deg) translateX(0px) scaleX(2)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotateY(0deg) translateY(200px)\] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleY(-3) translateX(0px)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(100px) scaleX(3) translate(500px) scale(2)\] to [translateY(200px) scale(5) translateX(100px) scaleY(3)\] at (0.25) should be [translate(75px, 50px) scale(3.5, 2) translate(400px, 0px) scale(1.75, 2.25)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotateY(0deg) translateY(200px)\] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(100px)\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(125px) rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotate3d(50, 0, 0, 180deg) translateY(200px)\] at (0.25) should be [rotateX(112.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)\] to [rotate3d(0, 1, 0, -720deg) translateY(200px)\] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(50px) rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotateY(0deg) translateY(200px)\] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotate3d(50, 0, 0, 180deg) translateY(200px)\] at (0.25) should be [rotateX(112.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)\] to [rotate3d(2, 2, 2, 60deg) translateY(200px)\] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(100px) scaleX(3) translate(500px) scale(2)\] to [translateY(200px) scale(5) translateX(100px) scaleY(3)\] at (0.25) should be [translate(75px, 50px) scale(3.5, 2) translate(400px, 0px) scale(1.75, 2.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(720deg) translateX(0px) scaleX(2)\] to [rotate(0deg) scaleX(1)\] at (0.25) should be [rotate(540deg) matrix(1.75, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)\] to [rotate3d(2, 2, 2, 60deg) translateY(200px)\] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1.25, 175, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(720deg) translateX(0px) scaleX(2)\] to [rotate(0deg) scaleX(1)\] at (0.25) should be [rotate(540deg) matrix(1.75, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(2) rotate(360deg) translate(100px) matrix(1, 0, 0, 1, 100, 0) skew(0deg)\] to [scale(3) rotate(1080deg) translate(200px) matrix(1, 0, 0, 1, 0, 200) skew(720deg)\] at (0.25) should be [scale(2.25) rotate(540deg) translate(125px) matrix(1, 0, 0, 1, 75, 50) skew(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotateY(0deg) translateY(200px)\] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(100px) scaleX(3) translate(500px) scale(2)\] to [translateY(200px) scale(5) translateX(100px) scaleY(3)\] at (0.25) should be [translate(75px, 50px) scale(3.5, 2) translate(400px, 0px) scale(1.75, 2.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(2) rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 250, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(2) rotate(360deg) translate(100px) matrix(1, 0, 0, 1, 100, 0) skew(0deg)\] to [scale(3) rotate(1080deg) translate(200px) matrix(1, 0, 0, 1, 0, 200) skew(720deg)\] at (0.25) should be [scale(2.25) rotate(540deg) translate(125px) matrix(1, 0, 0, 1, 75, 50) skew(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(2) rotate(0deg)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 100, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleY(-3) translateX(0px) scaleX(2)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1.75, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(720deg) translateX(0px) scaleX(2)\] to [rotate(0deg) scaleX(1)\] at (0.25) should be [rotate(540deg) matrix(1.75, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(100px)\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(125px) rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(2) rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 250, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(2) rotate(0deg)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 100, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)\] to [rotate3d(0, 1, 0, -720deg) translateY(200px)\] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(0deg) scaleX(1)\] to [rotate(720deg) translateX(0px) scaleX(2)\] at (0.25) should be [rotate(180deg) matrix(1.25, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(2) rotate(0deg)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 100, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(-3) translateX(0px) scaleX(2)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1.75, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(100px) rotate(720deg)\] to [translate(200px)\] at (0.25) should be [translate(125px) rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(90deg) translateX(100px)\] to [rotate3d(50, 0, 0, 180deg) translateY(200px)\] at (0.25) should be [rotateX(112.5deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleY(-3) translateX(0px)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(2) rotate(360deg) translate(100px) matrix(1, 0, 0, 1, 100, 0) skew(0deg)\] to [scale(3) rotate(1080deg) translate(200px) matrix(1, 0, 0, 1, 0, 200) skew(720deg)\] at (0.25) should be [scale(2.25) rotate(540deg) translate(125px) matrix(1, 0, 0, 1, 75, 50) skew(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(200px) rotate(720deg)\] to [none\] at (0.25) should be [translate(150px) rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(100px)\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(125px) rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(100px)\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(125px) rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleY(-3) translateX(0px) scaleX(2)\] to [scaleX(-3) scaleY(2)\] at (0.25) should be [scale(0, -2) matrix(1.75, 0, 0, 1.25, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(-3) scaleY(2)\] to [scaleY(-3) translateX(0px) scaleX(2)\] at (0.25) should be [scale(-2, 0) matrix(1.25, 0, 0, 1.75, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)\] to [rotate3d(2, 2, 2, 60deg) translateY(200px)\] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(200px) rotate(720deg)\] to [none\] at (0.25) should be [translate(150px) rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(100px) rotate(720deg)\] to [translate(200px)\] at (0.25) should be [translate(125px) rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(2) rotate(0deg) translate(100px)\] to [rotate(720deg) scale(2) translate(200px)\] at (0.25) should be [matrix(2, 0, 0, 2, 250, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [translate(200px) rotate(720deg)\] at (0.25) should be [translate(50px) rotate(180deg)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/matrix-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/matrix-interpolation.html.ini
index 062dcee442c..c8817f118a2 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/matrix-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/matrix-interpolation.html.ini
@@ -1,8 +1,19 @@
[matrix-interpolation.html]
- expected: ERROR
[Animation between "rotateY(360deg)" and "rotateX(720deg)" at progress 0.5]
expected: FAIL
[Matrix interpolation]
expected: FAIL
+ [CSS Transitions: property <transform> from [rotateY(360deg)\] to [rotateX(720deg)\] at (0.5) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(360deg)\] to [rotateX(720deg)\] at (0.5) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(360deg)\] to [rotateX(720deg)\] at (0.5) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(360deg)\] to [rotateX(720deg)\] at (0.5) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
index 1193e3dfa5c..af79ecd5f12 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
@@ -1,5 +1,5 @@
[perspective-interpolation.html]
- expected: ERROR
+ expected: TIMEOUT
[ perspective interpolation]
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-origin-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-origin-interpolation.html.ini
index 475a3a37e29..fd5f85a6913 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/perspective-origin-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-origin-interpolation.html.ini
@@ -1,5 +1,325 @@
[perspective-origin-interpolation.html]
- expected: ERROR
[perspective-origin interpolation]
expected: FAIL
+ [Web Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (1) should be [100% 150%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.6) should be [60% 110%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (1) should be [100% 150%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.6) should be [60% 110%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (-0.3) should be [-30% 20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.3) should be [30% 80%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (1.5) should be [150% 200%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (1.5) should be [150% 200%\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (-0.3) should be [-30% 20%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (1.5) should be [150% 200%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.3) should be [30% 80%\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0) should be [0% 50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.3) should be [30% 80%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (-0.3) should be [-30% 20%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.6) should be [60% 110%\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (-0.3) should be [-30% 20%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.6) should be [60% 110%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (1.5) should be [150% 200%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <perspective-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0.3) should be [30% 80%\]]
+ expected: FAIL
+
+ [CSS Animations: property <perspective-origin> from [0% 50%\] to [100% 150%\] at (0) should be [0% 50%\]]
+ expected: FAIL
+
+ [Web Animations: property <perspective-origin> from neutral to [20px 20px\] at (0) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <perspective-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini
index c09d1696d8f..eb5fe0b2b88 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/rotate-interpolation.html.ini
@@ -1,5 +1,4 @@
[rotate-interpolation.html]
- expected: ERROR
[Animation between "100deg" and "180deg" at progress -1]
expected: FAIL
@@ -75,3 +74,882 @@
[rotate interpolation]
expected: FAIL
+ [CSS Transitions: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (2) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (2) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (-1) should be [0.67 -0.06 -0.74 124.97deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.25) should be [0 1 0 50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (2) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [180deg\] at (2) should be [260deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (-1) should be [0 1 0 -10deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.25) should be [0 1 0 50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.125) should be [0.5 -0.57 0.65 50grad\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (1) should be [1 0 0 0deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [inherit\] to [270deg\] at (-1) should be [-90deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [180deg\] at (-1) should be [20deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.75) should be [0.17 0.78 0.61 118.68deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (-1) should be [0.22 -0.55 0.8 300deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.25) should be [0.22 -0.55 0.8 50deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.25) should be [0 1 0 50deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (2) should be [0 1 0 -300deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0) should be [1 0 0 0deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [none\] at (2) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [7 -8 9 400grad\] at (-1) should be [0.5 -0.57 0.65 -400grad\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (0) should be [0.5 -0.57 0.65 0deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from neutral to [30deg\] at (1) should be [30deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0) should be [0 1 0 0deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [inherit\] to [270deg\] at (0) should be [90deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (1) should be [0 1 0 -100deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.75) should be [0.22 -0.55 0.8 -50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (-1) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.75) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [inherit\] to [270deg\] at (0.25) should be [135deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (-1) should be [0 1 0 300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from neutral to [30deg\] at (0.75) should be [25deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [180deg\] at (0.875) should be [170deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (2) should be [-0.52 0.29 0.81 208.96deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [inherit\] to [270deg\] at (0.75) should be [225deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (-1) should be [0.67 -0.06 -0.74 124.97deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [7 -8 9 400grad\] at (-1) should be [0.5 -0.57 0.65 -400grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [-100deg\] at (0.75) should be [-50deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.75) should be [0.22 -0.55 0.8 -50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [180deg\] at (1) should be [180deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.125) should be [0.5 -0.57 0.65 50grad\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [unset\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [-100deg\] at (2) should be [-300deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.125) should be [0.5 -0.57 0.65 50grad\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.75) should be [0.22 -0.55 0.8 -50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [-100deg\] at (0.25) should be [50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [30deg\] at (1) should be [30deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (-1) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [-100deg\] at (0.75) should be [-50deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (-1) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (2) should be [-0.52 0.29 0.81 208.96deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from neutral to [30deg\] at (-1) should be [-10deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [180deg\] at (0.875) should be [170deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0) should be [0.22 -0.55 0.8 100deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [-100deg\] at (0.25) should be [50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.75) should be [0 1 0 7.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from neutral to [30deg\] at (-1) should be [-10deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (2) should be [0 1 0 20deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [180deg\] at (-1) should be [20deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [unset\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.25) should be [0.54 0.8 0.26 94.83deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (2) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from neutral to [30deg\] at (2) should be [50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (-1) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.75) should be [0 1 0 7.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (0) should be [100deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [180deg\] at (0) should be [100deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [none\] at (0.125) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.875) should be [-0.70246 0.70246 0.114452 53.1994deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (1) should be [-0.71 0.71 0 60deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (2) should be [0.22 -0.55 0.8 -300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (-1) should be [0.5 -0.57 0.65 -400grad\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.25) should be [0.54 0.8 0.26 94.83deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [unset\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [180deg\] at (2) should be [260deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.25) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [unset\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0) should be [0.71 0.71 0 90deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.25) should be [0.22 -0.55 0.8 50deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (-1) should be [0 1 0 300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (1) should be [-0.71 0.71 0 60deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.25) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [30deg\] at (0) should be [0deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.75) should be [0 1 0 -50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [inherit\] to [270deg\] at (2) should be [450deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [inherit\] to [270deg\] at (0.25) should be [135deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [-100deg\] at (1) should be [-100deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (-1) should be [0.5 -0.57 0.65 -400grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (2) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (0) should be [0.5 -0.57 0.65 0deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [unset\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (-1) should be [0.22 -0.55 0.8 300deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (-1) should be [0.67 -0.06 -0.74 124.97deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [inherit\] to [270deg\] at (-1) should be [-90deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0) should be [0 1 0 100deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (2) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [180deg\] at (-1) should be [20deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [inherit\] to [270deg\] at (0.75) should be [225deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0) should be [1 0 0 0deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from neutral to [30deg\] at (2) should be [50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.25) should be [0.54 0.8 0.26 94.83deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.75) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (-1) should be [0.447214 -0.447214 0.774597 104.478deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from neutral to [30deg\] at (0.25) should be [15deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (-1) should be [0 1 0 -10deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [-100deg\] at (2) should be [-300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [unset\] to [30deg\] at (1) should be [30deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [-100deg\] at (2) should be [-300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.75) should be [0 1 0 -50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (1) should be [1 0 0 450deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.875) should be [0.5 -0.57 0.65 350grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.25) should be [0.22 -0.55 0.8 50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0) should be [z 45deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [none\] at (2) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [30deg\] at (1) should be [30deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.875) should be [0.5 -0.57 0.65 350grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (1) should be [0 1 0 10deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.75) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [inherit\] to [270deg\] at (0.25) should be [135deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [-100deg\] at (-1) should be [300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [unset\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from neutral to [30deg\] at (0.25) should be [15deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0) should be [0.22 -0.55 0.8 100deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from neutral to [30deg\] at (0.75) should be [25deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.875) should be [0.5 -0.57 0.65 350grad\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (2) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.75) should be [0.17 0.78 0.61 118.68deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from neutral to [30deg\] at (-1) should be [-10deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [none\] at (0.875) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [30deg\] at (0) should be [0deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [-100deg\] at (0.25) should be [50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.75) should be [0 1 0 -50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (-1) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0) should be [z 45deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0) should be [0 1 0 0deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.75) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [none\] at (0.875) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [unset\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.25) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [unset\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [180deg\] at (0.125) should be [110deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (1) should be [0.5 -0.57 0.65 400grad\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.25) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (0.125) should be [-0.136456 0.136456 0.981203 40.6037deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [-100deg\] at (1) should be [-100deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (2) should be [0.22 -0.55 0.8 -300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.75) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [inherit\] to [270deg\] at (0.75) should be [225deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from neutral to [30deg\] at (0.25) should be [15deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.25) should be [0 1 0 2.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [unset\] to [30deg\] at (1) should be [30deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.25) should be [0 1 0 2.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (0.125) should be [110deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [none\] at (-1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [unset\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [inherit\] to [270deg\] at (0.25) should be [135deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (2) should be [-0.52 0.29 0.81 208.96deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.75) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.25) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.125) should be [0.5 -0.57 0.65 50grad\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (2) should be [0 1 0 20deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [unset\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (1) should be [0 1 0 -100deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.25) should be [0.22 -0.55 0.8 50deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [-100deg\] at (0.75) should be [-50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [unset\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (2) should be [0 1 0 -300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [180deg\] at (2) should be [260deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [unset\] to [30deg\] at (0) should be [0deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.75) should be [0 1 0 7.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [inherit\] to [270deg\] at (2) should be [450deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [unset\] to [30deg\] at (0) should be [0deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0) should be [1 0 0 450deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [180deg\] at (0.125) should be [110deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (-1) should be [0 1 0 -10deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [7 -8 9 400grad\] at (2) should be [0.5 -0.57 0.65 800grad\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from neutral to [30deg\] at (0.75) should be [25deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [inherit\] to [270deg\] at (0.75) should be [225deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.25) should be [0 1 0 50deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.25) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [100deg\] to [-100deg\] at (-1) should be [300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [inherit\] to [270deg\] at (-1) should be [-90deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (-1) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [-100deg\] at (-1) should be [300deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [inherit\] to [270deg\] at (1) should be [270deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [inherit\] to [270deg\] at (1) should be [270deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [unset\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (2) should be [0 1 0 20deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0) should be [1 0 0 450deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (-1) should be [0.22 -0.55 0.8 300deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.25) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (-1) should be [0.67 -0.06 -0.74 124.97deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (2) should be [0.22 -0.55 0.8 -300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (-1) should be [0 1 0 300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (2) should be [0.5 -0.57 0.65 800grad\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (2) should be [0.22 -0.55 0.8 -300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (0.875) should be [0.5 -0.57 0.65 350grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (-1) should be [0 1 0 300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (1) should be [0 0.71 0.71 135deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [unset\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (1) should be [0 0.71 0.71 135deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (-1) should be [20deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from neutral to [30deg\] at (-1) should be [-10deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [unset\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from neutral to [30deg\] at (0.25) should be [15deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.75) should be [1 0 0 337.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (1) should be [0.5 -0.57 0.65 400grad\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (-1) should be [0 1 0 -10deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from neutral to [30deg\] at (0.75) should be [25deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [180deg\] at (0.875) should be [170deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (1) should be [1 0 0 450deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (1) should be [1 0 0 0deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [180deg\] at (0.125) should be [110deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from neutral to [30deg\] at (0) should be [10deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [-100deg\] at (0.25) should be [50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (0.75) should be [0.22 -0.55 0.8 -50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from neutral to [30deg\] at (1) should be [30deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (2) should be [0 1 0 20deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (2) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [unset\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [-100deg\] at (0) should be [100deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (1) should be [0 1 0 10deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (-1) should be [1 0 0 -450deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (2) should be [0 1 0 -300deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [-100deg\] at (2) should be [-300deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from neutral to [30deg\] at (2) should be [50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [none\] to [none\] at (0.125) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0.75) should be [0 1 0 -50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [none\] to [7 -8 9 400grad\] at (2) should be [0.5 -0.57 0.65 800grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0) should be [0.71 0.71 0 90deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [30deg\] at (-1) should be [-30deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (1) should be [1 0 0 0deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.25) should be [0 1 0 2.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [100deg\] to [-100deg\] at (-1) should be [300deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (0.75) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (2) should be [0 1 0 -300deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (2) should be [-0.52 0.29 0.81 208.96deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (0.875) should be [170deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [none\] at (-1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (-1) should be [0.22 -0.55 0.8 300deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [30deg\] at (0.25) should be [7.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [0 1 0 100deg\] to [0 1 0 -100deg\] at (0) should be [0 1 0 100deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (1) should be [180deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (1) should be [0.22 -0.55 0.8 -100deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.75) should be [0.17 0.78 0.61 118.68deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [-100deg\] at (0.75) should be [-50deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.25) should be [0.54 0.8 0.26 94.83deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [inherit\] to [270deg\] at (0) should be [90deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [100deg\] to [-100deg\] at (0) should be [100deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [100deg\] to [180deg\] at (2) should be [260deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [unset\] to [30deg\] at (2) should be [60deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [none\] to [30deg\] at (0.75) should be [22.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [inherit\] to [270deg\] at (-1) should be [-90deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [inherit\] to [270deg\] at (2) should be [450deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from neutral to [30deg\] at (2) should be [50deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.75) should be [0 1 0 7.5deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [1 0 0 0deg\] to [0 1 0 10deg\] at (0.25) should be [0 1 0 2.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [45deg\] to [-1 1 0 60deg\] at (2) should be [-0.637897 0.637897 -0.431479 124.975deg\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <rotate> from [inherit\] to [270deg\] at (2) should be [450deg\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 1 0 90deg\] to [0 1 1 135deg\] at (0.75) should be [0.17 0.78 0.61 118.68deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [0 1 0 0deg\] to [1 0 0 450deg\] at (0.25) should be [1 0 0 112.5deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [none\] to [7 -8 9 400grad\] at (2) should be [0.5 -0.57 0.65 800grad\]]
+ expected: FAIL
+
+ [Web Animations: property <rotate> from [1 -2.5 3.64 100deg\] to [1 -2.5 3.64 -100deg\] at (1) should be [0.22 -0.55 0.8 -100deg\]]
+ expected: FAIL
+
+ [CSS Animations: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (-1) should be [1 0 0 900deg\]]
+ expected: FAIL
+
+ [CSS Transitions: property <rotate> from [1 0 0 450deg\] to [0 1 0 0deg\] at (1) should be [1 0 0 0deg\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini
index c4daaea26d0..d25ccb121c8 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/scale-interpolation.html.ini
@@ -1,5 +1,4 @@
[scale-interpolation.html]
- expected: ERROR
[Animation between "2 30 400" and "10 110 1200" at progress -1]
expected: FAIL
@@ -93,3 +92,876 @@
[scale interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <scale> from [26 17 9\] to [2 1\] at (0.875) should be [5 3 2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 30 400\] to [10 110 1200\] at (2) should be [18 190 2000\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [none\] to [4 3 2\] at (2) should be [7 5 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [26 17 9\] to [2 1\] at (-1) should be [50 33 17\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0.25) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (1) should be [2 0.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [initial\] at (0) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5 1\] to [1\] at (-1) should be [-21 9\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [1\] to [10 -5 0\] at (0.25) should be [3.25 -0.5 0.75\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [initial\] at (0.25) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from neutral to [1.5 1\] at (0.75) should be [1.4 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [initial\] at (0.75) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0.75) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (1) should be [10 110 1200\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [1\] to [10 -5 0\] at (0.75) should be [7.75 -3.5 0.25\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [initial\] at (0.75) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [26 17 9\] to [2 1\] at (2) should be [-22 -15 -7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [1\] to [10 -5 0\] at (2) should be [19 -11 -1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [unset\] to [1.5 1\] at (-1) should be [0.5 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [26 17 9\] to [2 1\] at (1) should be [2 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [1\] to [10 -5 0\] at (-1) should be [-8 7 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [none\] at (-1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from neutral to [1.5 1\] at (2) should be [1.9 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5 1\] to [1\] at (0.75) should be [-1.75 2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5\] to [10 -5\] at (2) should be [30 -15\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [initial\] at (0) should be [2 0.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [1\] to [10 -5 0\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [none\] to [4 3 2\] at (0.125) should be [1.375 1.25 1.125\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [inherit\] at (0.25) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [1\] to [10 -5 0\] at (1) should be [10 -5 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5\] to [10 -5\] at (2) should be [30 -15\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [4 3 2\] at (2) should be [7 5 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (-1) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 30 400\] to [10 110 1200\] at (-1) should be [-6 -50 -400\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5 1\] to [1\] at (-1) should be [-21 9\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (0) should be [2 30 400\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [inherit\] at (2) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [none\] at (0.875) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (2) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (0.25) should be [-5 2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [inherit\] at (1) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [inherit\] at (0.75) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [initial\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [initial\] at (-1) should be [3 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5 1\] to [1\] at (2) should be [12 -3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (-1) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5 1\] to [1\] at (2) should be [12 -3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 30 400\] to [10 110 1200\] at (0.125) should be [3 40 500\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5\] to [10 -5\] at (0.75) should be [5 -2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (0) should be [2 30 400\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [initial\] at (0.25) should be [1.75 0.6251\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (1) should be [10 -5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [unset\] to [1.5 1\] at (2) should be [2 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [none\] to [4 3 2\] at (-1) should be [-2 -1 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (0.875) should be [5 3 2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [inherit\] at (-1) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [none\] at (-1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [2 0.5 1\] at (2) should be [3 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5\] to [10 -5\] at (0.75) should be [5 -2.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [initial\] at (0.75) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [4 3 2\] at (1) should be [4 3 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (2) should be [18 190 2000\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [26 17 9\] to [2 1\] at (0.125) should be [23 15 8\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [unset\] to [1.5 1\] at (0.75) should be [1.375 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [unset\] to [1.5 1\] at (0.25) should be [1.125 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (0) should be [-10 5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5 1\] to [1\] at (0.25) should be [-7.25 4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [initial\] at (-1) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [26 17 9\] to [2 1\] at (-1) should be [50 33 17\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (2) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [none\] at (0.125) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [2 0.5 1\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [inherit\] at (2) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [1\] to [10 -5 0\] at (2) should be [19 -11 -1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5\] to [10 -5\] at (0.25) should be [-5 2.5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [2 0.5 1\] at (2) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [2 0.5 1\] at (2) should be [3 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [1\] to [10 -5 0\] at (1) should be [10 -5 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [inherit\] at (0.75) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5\] to [10 -5\] at (0.75) should be [5 -2.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from neutral to [1.5 1\] at (2) should be [1.9 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [inherit\] at (1) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from neutral to [1.5 1\] at (0.75) should be [1.4 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (-1) should be [-6 -50 -400\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [2 0.5 1\] at (0.25) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from neutral to [1.5 1\] at (0.25) should be [1.2 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [1\] to [10 -5 0\] at (0.25) should be [3.25 -0.5 0.75\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [none\] to [4 3 2\] at (0.875) should be [3.625 2.75 1.875\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [initial\] at (0.75) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5 1\] to [1\] at (0) should be [-10 5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [2 0.5 1\] at (-1) should be [0 1.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [initial\] at (0.25) should be [1.75 0.6251\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5 1\] to [1\] at (2) should be [12 -3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (0.125) should be [23 15 8\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [initial\] at (-1) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 30 400\] to [10 110 1200\] at (0.125) should be [3 40 500\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (1) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5 1\] to [1\] at (2) should be [12 -3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5 1\] to [1\] at (0) should be [-10 5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [initial\] at (0.25) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [4 3 2\] at (0.875) should be [3.625 2.75 1.875\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (0.125) should be [3 40 500\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (0) should be [26 17 9\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [unset\] to [1.5 1\] at (0.25) should be [1.125 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0) should be [2 0.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (0.75) should be [5 -2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (2) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [26 17 9\] to [2 1\] at (0.875) should be [5 3 2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [unset\] to [1.5 1\] at (2) should be [2 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5\] to [10 -5\] at (0.25) should be [-5 2.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (1) should be [2 0.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5\] to [10 -5\] at (2) should be [30 -15\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5 1\] to [1\] at (-1) should be [-21 9\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5 1\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (-1) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5 1\] to [1\] at (0.75) should be [-1.75 2\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [initial\] at (2) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [1\] to [10 -5 0\] at (0.75) should be [7.75 -3.5 0.25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [none\] to [4 3 2\] at (2) should be [7 5 3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [2 0.5 1\] at (0.75) should be [1.75 0.625\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 30 400\] to [10 110 1200\] at (0.875) should be [9 100 1100\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [1\] to [10 -5 0\] at (-1) should be [-8 7 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [initial\] at (0.75) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (2) should be [-22 -15 -7\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (1) should be [10 110 1200\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [none\] to [4 3 2\] at (0.125) should be [1.375 1.25 1.125\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [inherit\] at (0.75) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [2 0.5 1\] at (2) should be [3 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [2 0.5 1\] at (0.25) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [initial\] at (-1) should be [3 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [26 17 9\] to [2 1\] at (-1) should be [50 33 17\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [unset\] to [1.5 1\] at (0.75) should be [1.375 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [4 3 2\] at (1) should be [4 3 2\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5 1\] to [1\] at (0.25) should be [-7.25 4\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [unset\] to [1.5 1\] at (2) should be [2 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [initial\] at (-1) should be [3 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [initial\] at (0.75) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [unset\] to [1.5 1\] at (0.25) should be [1.125 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from neutral to [1.5 1\] at (1) should be [1.5 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (1) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [unset\] to [1.5 1\] at (-1) should be [0.5 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0.75) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [4 3 2\] at (-1) should be [-2 -1 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [initial\] at (0.75) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [1\] to [10 -5 0\] at (2) should be [19 -11 -1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [initial\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [26 17 9\] to [2 1\] at (0.875) should be [5 3 2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [inherit\] at (0.25) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [initial\] at (0.25) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (-1) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from neutral to [1.5 1\] at (0.75) should be [1.4 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [initial\] at (2) should be [0 1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5 1\] to [1\] at (0.25) should be [-7.25 4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [unset\] to [1.5 1\] at (-1) should be [0.5 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from neutral to [1.5 1\] at (2) should be [1.9 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [2 0.5 1\] at (-1) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 0.5 1\] to [initial\] at (-1) should be [3 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [initial\] at (0) should be [0.5 1 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (-1) should be [-30 15\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [4 3 2\] at (2) should be [7 5 3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [1\] to [10 -5 0\] at (-1) should be [-8 7 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [2 0.5 1\] at (2) should be [3 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0.75) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [inherit\] at (2) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [4 3 2\] at (0.875) should be [3.625 2.75 1.875\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [inherit\] at (0.75) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from neutral to [1.5 1\] at (0) should be [1.1 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [2 0.5 1\] at (0.25) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (0.125) should be [3 40 500\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from neutral to [1.5 1\] at (0.75) should be [1.4 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5\] to [10 -5\] at (2) should be [30 -15\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [2 0.5 1\] at (-1) should be [0 1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from neutral to [1.5 1\] at (-1) should be [0.7 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [4 3 2\] at (0.125) should be [1.375 1.25 1.125\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [initial\] at (2) should be [0 1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [unset\] to [1.5 1\] at (-1) should be [0.5 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [1\] to [10 -5 0\] at (0.25) should be [3.25 -0.5 0.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [2 0.5 1\] at (1) should be [2 0.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [4 3 2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0) should be [2 0.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from neutral to [1.5 1\] at (2) should be [1.9 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [initial\] at (1) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from neutral to [1.5 1\] at (0.25) should be [1.2 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [initial\] at (-1) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [none\] at (2) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [2 0.5 1\] at (0.75) should be [1.75 0.625\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [4 3 2\] at (0.125) should be [1.375 1.25 1.125\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [unset\] to [1.5 1\] at (0.25) should be [1.125 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [inherit\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (0.875) should be [9 100 1100\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [2 0.5 1\] at (0.25) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [inherit\] at (0.25) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [inherit\] at (-1) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [-10 5\] to [10 -5\] at (-1) should be [-30 15\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [unset\] to [1.5 1\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [unset\] to [1.5 1\] at (1) should be [1.5 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [inherit\] at (0.25) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from neutral to [1.5 1\] at (0.25) should be [1.2 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [unset\] to [1.5 1\] at (0.75) should be [1.375 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [initial\] at (2) should be [0 1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [initial\] at (-1) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [initial\] at (0.25) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [2 0.5 1\] at (2) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0.25) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [1\] to [10 -5 0\] at (0.75) should be [7.75 -3.5 0.25\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0.25) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [1\] to [10 -5 0\] at (0.25) should be [3.25 -0.5 0.75\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [inherit\] at (0.75) should be [0.625 1 1.75\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [26 17 9\] to [2 1\] at (2) should be [-22 -15 -7\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [inherit\] to [2 0.5 1\] at (0.75) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [initial\] at (0.25) should be [1.75 0.6251\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [initial\] at (2) should be [0 1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [inherit\] at (0.25) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [unset\] to [1.5 1\] at (2) should be [2 1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [none\] at (0.125) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [inherit\] to [initial\] at (2) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 30 400\] to [10 110 1200\] at (0.875) should be [9 100 1100\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [inherit\] at (-1) should be [3.5 0 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [inherit\] at (0.25) should be [0.875 1 1.25\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [initial\] at (2) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 0.5 1\] to [initial\] at (0) should be [2 0.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [26 17 9\] to [2 1\] at (0.125) should be [23 15 8\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [inherit\] at (2) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5\] to [10 -5\] at (1) should be [10 -5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (0.875) should be [9 100 1100\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [unset\] to [1.5 1\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [inherit\] at (-1) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from neutral to [1.5 1\] at (-1) should be [0.7 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5 1\] to [1\] at (0.75) should be [-1.75 2\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (-1) should be [-6 -50 -400\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5 1\] to [1\] at (0.25) should be [-7.25 4\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5\] to [10 -5\] at (0) should be [-10 5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [inherit\] at (2) should be [0 1 3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5 1\] to [1\] at (0.75) should be [-1.75 2\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (1) should be [2 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5\] to [10 -5\] at (0.25) should be [-5 2.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [-10 5\] to [10 -5\] at (-1) should be [-30 15\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [2 0.5 1\] at (-1) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5 1\] to [1\] at (-1) should be [-21 9\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [26 17 9\] to [2 1\] at (0.125) should be [23 15 8\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [4 3 2\] at (-1) should be [-2 -1 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [1\] to [10 -5 0\] at (2) should be [19 -11 -1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [26 17 9\] to [2 1\] at (-1) should be [50 33 17\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from neutral to [1.5 1\] at (1) should be [1.5 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [initial\] at (0.25) should be [1.75 0.6251\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [none\] at (2) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [none\] to [4 3 2\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [26 17 9\] to [2 1\] at (0) should be [26 17 9\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [inherit\] at (0.25) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [2 0.5 1\] at (-1) should be [0 1.5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [2 0.5 1\] at (0.25) should be [0.875 0.875 1.75\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [2 0.5 1\] at (0.75) should be [1.75 0.625\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [2 0.5 1\] at (1) should be [2 0.5\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [initial\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from neutral to [1.5 1\] at (0.25) should be [1.2 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [inherit\] to [2 0.5 1\] at (0.75) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [2 0.5 1\] at (0.75) should be [1.75 0.625\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [-10 5\] to [10 -5\] at (-1) should be [-30 15\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [inherit\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [none\] to [none\] at (0.875) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [26 17 9\] to [2 1\] at (2) should be [-22 -15 -7\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [none\] to [4 3 2\] at (0.875) should be [3.625 2.75 1.875\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [2 30 400\] to [10 110 1200\] at (-1) should be [-6 -50 -400\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from neutral to [1.5 1\] at (-1) should be [0.7 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [inherit\] at (-1) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from neutral to [1.5 1\] at (-1) should be [0.7 1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [initial\] at (2) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [inherit\] to [2 0.5 1\] at (0.75) should be [1.625 0.625 1.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [unset\] to [1.5 1\] at (0.75) should be [1.375 1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [1\] to [10 -5 0\] at (0) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [2 0.5 1\] at (0) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [1\] to [10 -5 0\] at (0.75) should be [7.75 -3.5 0.25\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 30 400\] to [10 110 1200\] at (2) should be [18 190 2000\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [2 0.5 1\] to [initial\] at (0.75) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 0.5 1\] to [inherit\] at (2) should be [-1 1.5 3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [initial\] to [inherit\] at (2) should be [0 1 3\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [1\] to [10 -5 0\] at (-1) should be [-8 7 2\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [initial\] to [2 0.5 1\] at (-1) should be [0 1.5\]]
+ expected: FAIL
+
+ [Web Animations: property <scale> from [-10 5 1\] to [1\] at (1) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [2 0.5 1\] at (0.25) should be [1.25 0.875\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [initial\] to [inherit\] at (-1) should be [1.5 1 0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [none\] to [4 3 2\] at (-1) should be [-2 -1 0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <scale> from [2 30 400\] to [10 110 1200\] at (2) should be [18 190 2000\]]
+ expected: FAIL
+
+ [CSS Animations: property <scale> from [unset\] to [1.5 1\] at (1) should be [1.5 1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <scale> from [initial\] to [inherit\] at (0.75) should be [0.625 1 1.75\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini
index 4ea34ca69cd..4dc473fa7ac 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-001.html.ini
@@ -1,5 +1,1084 @@
[transform-interpolation-001.html]
- expected: ERROR
[transform interpolation]
expected: FAIL
+ [Web Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.25) should be [skewX(12.5rad) perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (2) should be [skewX(30rad) perspective(600px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0) should be [rotate3d(1, 1, 0, 90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0) should be [scaleZ(1) perspective(400px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0) should be [rotate3d(1, 1, 0, 90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.25) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (-1) should be [rotate3d(7, 8, 9, -60deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.75) should be [perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (2) should be [perspective(600px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (2) should be [skewX(30rad) perspective(600px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (2) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (-1) should be [skewX(0rad) perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (1) should be [rotate3d(0, 1, 0, 450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.25) should be [scaleZ(1.25) perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(90deg)\] to [none\] at (0.75) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.25) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.75) should be [rotate3d(7, 8, 9, 220deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (2) should be [scaleZ(3) perspective(600px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (2) should be [scaleZ(3) perspective(600px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(90deg)\] to [none\] at (0) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(90deg)\] at (0.25) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0) should be [skewX(10rad) perspective(400px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(90deg)\] at (0.75) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (-1) should be [rotateX(-700deg) rotateY(-800deg) rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.75) should be [rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.25) should be [scaleZ(1.25) perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(90deg)\] to [none\] at (-1) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (2) should be [skewX(30rad) perspective(600px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0) should be [rotate3d(0, 1, 0, 0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (2) should be [rotateY(1600deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0) should be [rotate3d(0, 1, 0, 0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (1) should be [rotate3d(7, 8, 9, 450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (1) should be [perspective(500px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (2) should be [rotate3d(7, 8, 9, 900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.25) should be [rotate3d(7, 8, 9, 140deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0) should be [rotate3d(7, 8, 9, 0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (2) should be [rotate3d(7, 8, 9, 900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(90deg)\] to [none\] at (-1) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.25) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (1) should be [skewX(20rad) perspective(500px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (1) should be [perspective(500px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0) should be [rotate3d(0, 1, 0, 0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (-1) should be [rotateX(-700deg) rotateY(-800deg) rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (2) should be [scaleZ(3) perspective(600px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (-1) should be [rotateX(-700deg) rotateY(-800deg) rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (1) should be [rotate3d(0, 1, 0, 450deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (1) should be [skewX(20rad) perspective(500px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (1) should be [rotate3d(0, 1, 1, 180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.25) should be [rotateX(175deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.75) should be [rotateY(600deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(90deg)\] to [none\] at (1) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.25) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(90deg)\] at (0.25) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (1) should be [rotateX(700deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (1) should be [rotateZ(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (2) should be [rotate(630deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.25) should be [rotate(105deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0) should be [rotate3d(7, 8, 9, 100deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (-1) should be [rotate3d(7, 8, 9, -60deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (1) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.75) should be [rotateY(600deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(90deg)\] to [none\] at (2) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (-1) should be [perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.25) should be [skewX(12.5rad) perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (2) should be [perspective(600px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0) should be [scaleZ(1) perspective(400px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(90deg)\] at (0.75) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(90deg)\] at (-1) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (-1) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (2) should be [scaleZ(3) perspective(600px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.75) should be [rotateX(525deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (1) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.75) should be [rotateX(525deg) rotateY(600deg) rotateZ(675deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (2) should be [rotate(630deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (1) should be [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (1) should be [rotate3d(7, 8, 9, 450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0) should be [rotate3d(7, 8, 9, 100deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.75) should be [rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (1) should be [rotate3d(7, 8, 9, 260deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0) should be [rotate3d(7, 8, 9, 0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (-1) should be [scaleZ(0) perspective(300px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0) should be [rotateZ(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (-1) should be [rotateY(-800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(90deg)\] to [none\] at (0.25) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (2) should be [rotateX(1400deg) rotateY(1600deg) rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0) should be [rotateX(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(90deg)\] at (2) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (2) should be [rotateY(1600deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.25) should be [rotateZ(225deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.25) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (2) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (-1) should be [rotateY(-800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.25) should be [scaleZ(1.25) perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(90deg)\] at (0.75) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (1) should be [rotate3d(0, 1, 1, 180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.25) should be [rotate3d(7, 8, 9, 140deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (2) should be [rotateX(1400deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (-1) should be [rotateX(-700deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.75) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(90deg)\] at (0) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (2) should be [rotate3d(7, 8, 9, 420deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (2) should be [rotateX(1400deg) rotateY(1600deg) rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (-1) should be [rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (-1) should be [rotateX(-700deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0) should be [rotate3d(7, 8, 9, 0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (2) should be [rotate3d(7, 8, 9, 900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (1) should be [rotate3d(0, 1, 1, 180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (1) should be [scaleZ(2) perspective(500px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (1) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.25) should be [rotate3d(7, 8, 9, 140deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (-1) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.75) should be [rotate3d(7, 8, 9, 220deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.25) should be [rotateX(175deg) rotateY(200deg) rotateZ(225deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (1) should be [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (2) should be [rotateX(1400deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (2) should be [rotateY(1600deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (2) should be [rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.25) should be [skewX(12.5rad) perspective(425px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0) should be [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(90deg)\] to [none\] at (2) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (2) should be [rotate(630deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(90deg)\] at (1) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (2) should be [rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.25) should be [rotateX(175deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (-1) should be [rotate(-270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(90deg)\] at (2) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.75) should be [scaleZ(1.75) perspective(475px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.75) should be [rotateX(525deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (2) should be [skewX(30rad) perspective(600px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(90deg)\] at (0) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.75) should be [rotate3d(7, 8, 9, 220deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(90deg)\] at (-1) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(90deg)\] to [none\] at (0.75) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.75) should be [rotateY(600deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(90deg)\] to [none\] at (-1) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0) should be [rotate3d(1, 1, 0, 90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(90deg)\] to [none\] at (2) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(90deg)\] at (0.25) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0) should be [rotate3d(7, 8, 9, 100deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (2) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (1) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (1) should be [rotate3d(0, 1, 0, 450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (2) should be [rotateX(1400deg) rotateY(1600deg) rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (-1) should be [rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(90deg)\] to [none\] at (0.25) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (2) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (-1) should be [rotate(-270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (2) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (-1) should be [skewX(0rad) perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0) should be [rotateZ(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0) should be [perspective(400px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.75) should be [rotateY(600deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.75) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (1) should be [rotateY(800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.75) should be [skewX(17.5rad) perspective(475px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (1) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.75) should be [scaleZ(1.75) perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (-1) should be [rotate3d(7, 8, 9, -450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (-1) should be [rotate3d(7, 8, 9, -450deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (-1) should be [rotate(-270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.25) should be [perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (1) should be [rotate3d(7, 8, 9, 450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (-1) should be [skewX(0rad) perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.75) should be [rotate(255deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (-1) should be [rotateX(-700deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (1) should be [rotateZ(900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.25) should be [rotateY(200deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (-1) should be [scaleZ(0) perspective(300px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.75) should be [skewX(17.5rad) perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(90deg)\] to [none\] at (0) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (2) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.25) should be [rotate3d(7, 8, 9, 140deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (2) should be [rotateY(1600deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(90deg)\] at (2) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.75) should be [rotateX(525deg) rotateY(600deg) rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (1) should be [rotate3d(0, 1, 1, 180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (-1) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0) should be [rotate3d(1, 1, 0, 90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.25) should be [rotateX(175deg) rotateY(200deg) rotateZ(225deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0) should be [rotateX(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (1) should be [rotate3d(7, 8, 9, 260deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (-1) should be [rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.25) should be [rotateZ(225deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (-1) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.75) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.75) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.75) should be [rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(90deg)\] to [none\] at (0.75) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.75) should be [perspective(475px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (-1) should be [perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.25) should be [rotateX(175deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (1) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (1) should be [rotate3d(0, 1, 0, 450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (-1) should be [rotate3d(7, 8, 9, -60deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0) should be [rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (-1) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0.75) should be [rotate3d(7, 8, 9, 220deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (2) should be [rotate3d(7, 8, 9, 420deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.25) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (1) should be [rotateX(700deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.25) should be [scaleZ(1.25) perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.25) should be [rotate(105deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (-1) should be [rotate(-270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (-1) should be [perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.75) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (0) should be [rotate3d(7, 8, 9, 100deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.25) should be [rotateY(200deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.75) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (2) should be [perspective(600px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.25) should be [rotateZ(225deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.25) should be [rotateX(175deg) rotateY(200deg) rotateZ(225deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (2) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.75) should be [rotateX(525deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (1) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.75) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.75) should be [perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(90deg)\] to [none\] at (0.75) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(90deg)\] at (-1) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (-1) should be [rotate3d(7, 8, 9, -60deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (-1) should be [perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(90deg)\] to [none\] at (1) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (-1) should be [scaleZ(0) perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.25) should be [rotateY(200deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.75) should be [scaleZ(1.75) perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.75) should be [rotate(255deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(90deg)\] at (0.75) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.25) should be [perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (2) should be [rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (1) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (1) should be [scaleZ(2) perspective(500px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.25) should be [rotateY(675deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (-1) should be [rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.75) should be [rotate(255deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (-1) should be [rotateX(-700deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.25) should be [rotateX(175deg) rotateY(200deg) rotateZ(225deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (1) should be [rotate(330deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (-1) should be [scaleZ(0) perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (-1) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(90deg)\] to [none\] at (0.25) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (2) should be [rotate3d(7, 8, 9, 900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(90deg)\] at (-1) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (-1) should be [rotateY(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0) should be [rotateY(900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (-1) should be [skewX(0rad) perspective(300px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.25) should be [perspective(425px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (1) should be [rotate3d(7, 8, 9, 260deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (2) should be [rotateX(1400deg) rotateY(1600deg) rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.75) should be [rotateX(525deg) rotateY(600deg) rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (2) should be [rotate3d(7, 8, 9, 420deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0) should be [rotate3d(7, 8, 9, 0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (-1) should be [rotateX(-700deg) rotateY(-800deg) rotateZ(-900deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0.75) should be [rotateX(525deg) rotateY(600deg) rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (2) should be [rotate3d(7, 8, 9, 420deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.75) should be [perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.25) should be [rotateZ(225deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(90deg)\] to [none\] at (-1) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (2) should be [rotateX(1400deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.25) should be [skewX(12.5rad) perspective(425px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0) should be [skewX(10rad) perspective(400px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (2) should be [rotate(630deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.25) should be [rotate(105deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.75) should be [rotate(255deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (-1) should be [rotateY(-800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(90deg)\] at (2) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0) should be [rotate(30deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (-1) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0.25) should be [perspective(425px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateY(900deg)\] at (0.25) should be [rotateY(225deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.75) should be [skewX(17.5rad) perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\] to [rotateX(700deg) rotateY(800deg) rotateZ(900deg)\] at (0) should be [rotateX(0deg) rotateY(0deg) rotateZ(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(90deg)\] at (1) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0.25) should be [rotateY(200deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.75) should be [rotateX(525deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (2) should be [rotateZ(1800deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (-1) should be [rotate3d(0, 1, 0, -450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateZ(0deg)\] to [rotateZ(900deg)\] at (0.75) should be [rotateZ(675deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (1) should be [rotate(330deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0) should be [rotate3d(0, 1, 0, 0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (2) should be [rotateX(1400deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (0) should be [perspective(400px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (-1) should be [rotateY(-800deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)\] to [skewX(20rad) perspective(500px)\] at (0.75) should be [skewX(17.5rad) perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateX(0deg)\] to [rotateX(700deg)\] at (0.25) should be [rotateX(175deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(90deg)\] to [none\] at (2) should be [rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(90deg)\] at (0.25) should be [rotate(22.5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(30deg)\] to [rotate(330deg)\] at (0.25) should be [rotate(105deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (1) should be [rotateY(800deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (-1) should be [rotate3d(7, 8, 9, -450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (1) should be [rotate3d(7, 8, 9, 450deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 1, 0, 450deg)\] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotateY(0deg)\] to [rotateY(800deg)\] at (0) should be [rotateY(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(0, 1, 0, 0deg)\] to [rotate3d(0, 2, 0, 450deg)\] at (2) should be [rotate3d(0, 1, 0, 900deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (2) should be [rotateY(-900deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(90deg)\] to [none\] at (0.25) should be [rotate(67.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)\] to [rotate3d(7, 8, 9, 260deg)\] at (1) should be [rotate3d(7, 8, 9, 260deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [perspective(400px)\] to [perspective(500px)\] at (2) should be [perspective(600px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1) perspective(400px)\] to [scaleZ(2) perspective(500px)\] at (0.75) should be [scaleZ(1.75) perspective(475px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)\] to [rotate3d(7, 8, 9, 450deg)\] at (-1) should be [rotate3d(7, 8, 9, -450deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)\] to [rotate3d(0, 1, 1, 180deg)\] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotateY(900deg)\] to [rotateZ(0deg)\] at (0.75) should be [rotateY(225deg)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini
index ab072437844..d896b54ed12 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-002.html.ini
@@ -1,5 +1,556 @@
[transform-interpolation-002.html]
- expected: ERROR
[transform interpolation]
expected: FAIL
+ [CSS Transitions: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.75) should be [scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.25) should be [scaleY(6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (2) should be [scale(2, -1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0) should be [scale3d(2, 3, 5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (2) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.75) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (1) should be [scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (2) should be [scaleX(30) scaleY(1.5) scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (1) should be [scale3d(2, 3, 5)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.25) should be [scaleX(12.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (1) should be [scale(20, 9)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (-1) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.25) should be [scaleX(12.5) scaleY(0.625) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (1) should be [scale(1, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (2) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (-1) should be [scaleX(0) scaleY(0) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.75) should be [scale(17.5, 8)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (-1) should be [scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (-1) should be [scaleX(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.75) should be [scale3d(17.5, 0.875, 1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.25) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.25) should be [scale(0.25, 0.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (2) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (2) should be [scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0) should be [scale3d(2, 3, 5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (-1) should be [scaleX(0) scaleY(0) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (2) should be [scale(2, -1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.25) should be [scale(0.25, 0.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0) should be [scaleX(10) scaleY(0.5) scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.25) should be [scale(12.5, 6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (2) should be [scale3d(30, 1.5, 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.25) should be [scale3d(12.5, 0.625, 1.25)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (-1) should be [scale3d(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.75) should be [scale(17.5, 8)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.75) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0) should be [scaleX(10)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.75) should be [scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (1) should be [scale3d(20, 1, 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (2) should be [scale3d(30, 1.5, 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0) should be [scaleX(10) scaleY(0.5) scaleZ(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.25) should be [scaleY(6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (-1) should be [scale(-1, 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.25) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (-1) should be [scale3d(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0) should be [scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0) should be [scaleY(5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.25) should be [scaleX(12.5) scaleY(0.625) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (-1) should be [scaleY(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (2) should be [scale(30, 13)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.75) should be [scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (2) should be [scale(30, 13)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.25) should be [scale3d(12.5, 0.625, 1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.75) should be [scaleX(17.5) scaleY(0.875) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.75) should be [scaleY(8)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (2) should be [scale3d(30, 1.5, 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.75) should be [scale3d(17.5, 0.875, 1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (2) should be [scaleX(30)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (-1) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (-1) should be [scaleZ(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (2) should be [scaleX(30)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.75) should be [scale(0.75, 0.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (-1) should be [scaleX(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0) should be [scaleY(5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.25) should be [scaleX(12.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.75) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.75) should be [scaleX(17.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.75) should be [scale(0.75, 0.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (-1) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (-1) should be [scaleY(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.25) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.25) should be [scaleY(6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (-1) should be [scale3d(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0) should be [scale3d(10, 0.5, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0) should be [scale(10, 5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.75) should be [scale3d(17.5, 0.875, 1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (1) should be [scale3d(1, 1, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (2) should be [scale(30, 13)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.25) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0) should be [scale3d(10, 0.5, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (2) should be [scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (1) should be [scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (2) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (1) should be [scaleX(20) scaleY(1) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (-1) should be [scale(-1, 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (2) should be [scale(30, 13)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (1) should be [scaleX(20)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.75) should be [scaleX(17.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.75) should be [scale3d(17.5, 0.875, 1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (2) should be [scaleX(30) scaleY(1.5) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (1) should be [scaleX(20) scaleY(1) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.75) should be [scaleX(17.5) scaleY(0.875) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.75) should be [scaleY(8)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0) should be [scale(10, 5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (2) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.75) should be [scaleX(17.5) scaleY(0.875) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (1) should be [scaleX(20)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (2) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.25) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (2) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.25) should be [scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (-1) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (-1) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.75) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (-1) should be [scaleZ(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (-1) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.75) should be [scaleX(17.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (-1) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (-1) should be [scaleY(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (-1) should be [scaleX(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (2) should be [scaleX(30)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (1) should be [scale(1, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.25) should be [scale(0.25, 0.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (2) should be [scaleX(30) scaleY(1.5) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (1) should be [scaleY(9)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.25) should be [scale(12.5, 6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.25) should be [scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (2) should be [scale3d(30, 1.5, 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0) should be [scale3d(1, 1, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (-1) should be [scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (-1) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.25) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (1) should be [scale3d(1, 1, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.25) should be [scaleX(12.5) scaleY(0.625) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.75) should be [scaleY(8)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (2) should be [scaleX(30) scaleY(1.5) scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.25) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (-1) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (-1) should be [scale3d(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.75) should be [scale(0.75, 0.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (-1) should be [scaleX(0) scaleY(0) scaleZ(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0) should be [scale(0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.25) should be [scale3d(12.5, 0.625, 1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (1) should be [scale(1, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.75) should be [scaleX(17.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.25) should be [scaleX(12.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.25) should be [scaleX(12.5) scaleY(0.625) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (2) should be [scale(2, -1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.25) should be [scale(0.25, 0.75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (2) should be [scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (-1) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.75) should be [scale(17.5, 8)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (-1) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.75) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.75) should be [scale(17.5, 8)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0) should be [scaleX(10)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (2) should be [scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (1) should be [scaleY(9)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.75) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0.75) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.25) should be [scale3d(1.75, 2.5, 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.75) should be [scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (1) should be [scale3d(20, 1, 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (-1) should be [scaleX(0) scaleY(0) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (-1) should be [scaleY(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (2) should be [scaleY(13)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(10, 0.5, 1)\] to [scale3d(20, 1, 2)\] at (0.25) should be [scale3d(12.5, 0.625, 1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (2) should be [scale(2, -1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (2) should be [scaleY(13)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (-1) should be [scale(-1, 2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.25) should be [scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0) should be [scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (0.75) should be [scale(0.75, 0.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (0.25) should be [scaleX(12.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.25) should be [scale(12.5, 6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (-1) should be [scale3d(3, 5, 9)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.25) should be [scaleY(6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (-1) should be [scale(-1, 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (1) should be [scale3d(2, 3, 5)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (0.25) should be [scale(12.5, 6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(1)\] to [scaleZ(2)\] at (0.25) should be [scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (2) should be [scaleY(13)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (0.75) should be [scale3d(1.25, 1.5, 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (-1) should be [scaleX(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(0)\] to [scaleY(0)\] at (1) should be [scale(1, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [scale3d(2, 3, 5)\] at (0) should be [scale3d(1, 1, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale(10, 5)\] to [scale(20, 9)\] at (1) should be [scale(20, 9)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scale3d(2, 3, 5)\] to [none\] at (2) should be [scale3d(0, -1, -3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (2) should be [scaleY(13)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleY(5)\] to [scaleY(9)\] at (0.75) should be [scaleY(8)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleX(10) scaleY(0.5) scaleZ(1)\] to [scaleX(20) scaleY(1) scaleZ(2)\] at (0.75) should be [scaleX(17.5) scaleY(0.875) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleX(10)\] to [scaleX(20)\] at (2) should be [scaleX(30)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini
index eeeb89a8175..5664f064c47 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-003.html.ini
@@ -1,5 +1,442 @@
[transform-interpolation-003.html]
- expected: ERROR
[transform interpolation]
expected: FAIL
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (2) should be [skewX(30rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0) should be [skewX(10rad) scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.75) should be [skewY(17.5rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.75) should be [skewX(17.5rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.25) should be [scaleZ(3.25) matrix3d(1, 0, 0, 0, 0.389352, 1, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.75) should be [scaleZ(3.75) matrix3d(1, 0, 0, 0, 1.16806, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (1) should be [translateY(90%) scaleZ(2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (2) should be [skewX(30rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.25) should be [skewY(12.5rad)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.75) should be [scaleZ(3.75) matrix3d(1, 0, 0, 0, 1.16806, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (2) should be [skewX(30rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0) should be [translateY(70%) scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.25) should be [skewY(12.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.75) should be [scaleZ(3.75) matrix3d(1, 0, 0, 0, 1.16806, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.75) should be [scaleZ(3.75) matrix3d(1, 0, 0, 0, 1.16806, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0) should be [translateY(70%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (2) should be [skewY(30rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0) should be [skewX(10rad) scaleZ(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.75) should be [skewY(17.5rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.25) should be [skewX(12.5rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (1) should be [scaleZ(4) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.25) should be [skewX(12.5rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (1) should be [skewX(20rad) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (2) should be [skewY(30rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (1) should be [scaleZ(4) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (2) should be [skewX(30rad)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (2) should be [skewY(30rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (1) should be [scaleZ(4) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0) should be [translateY(70%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (1) should be [skewY(20rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (2) should be [scaleZ(5) matrix3d(1, 0, 0, 0, 3.11482, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0) should be [scaleZ(3) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (-1) should be [skewX(0rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (2) should be [scaleZ(5) matrix3d(1, 0, 0, 0, 3.11482, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (1) should be [translateY(90%) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0) should be [translateY(70%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.25) should be [scaleZ(3.25) matrix3d(1, 0, 0, 0, 0.389352, 1, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (-1) should be [scaleZ(2) matrix3d(1, 0, 0, 0, -1.55741, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.25) should be [scaleZ(3.25) matrix3d(1, 0, 0, 0, 0.389352, 1, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (-1) should be [scaleZ(2) matrix3d(1, 0, 0, 0, -1.55741, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.25) should be [skewY(12.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (1) should be [skewX(20rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0) should be [skewY(10rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0) should be [skewX(10rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (-1) should be [skewY(0rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0) should be [scaleZ(3) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.75) should be [skewY(17.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.75) should be [skewX(17.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (2) should be [scaleZ(5) matrix3d(1, 0, 0, 0, 3.11482, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (-1) should be [skewX(0rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (2) should be [skewX(30rad) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (1) should be [translateY(90%) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0) should be [skewY(10rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (2) should be [skewY(30rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.75) should be [skewY(17.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (1) should be [scaleZ(4) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (-1) should be [skewY(0rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (2) should be [scaleZ(5) matrix3d(1, 0, 0, 0, 3.11482, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0) should be [scaleZ(3) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0) should be [skewX(10rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0) should be [skewX(10rad) scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.75) should be [skewX(17.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (1) should be [skewX(20rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0) should be [translateY(70%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (-1) should be [skewX(0rad) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0) should be [skewX(10rad) scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.75) should be [skewX(17.5rad)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (1) should be [skewX(20rad) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (-1) should be [scaleZ(2) matrix3d(1, 0, 0, 0, -1.55741, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (1) should be [translateY(90%) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0) should be [scaleZ(3) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (0.25) should be [scaleZ(3.25) matrix3d(1, 0, 0, 0, 0.389352, 1, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (0.75) should be [skewX(17.5rad) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) scaleZ(1)\] to [skewX(20rad) scaleZ(2)\] at (1) should be [skewX(20rad) scaleZ(2)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (0.25) should be [skewY(12.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (-1) should be [skewY(0rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (-1) should be [skewX(0rad)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (-1) should be [translateY(50%) scaleZ(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (-1) should be [skewY(0rad)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0.75) should be [translateY(85%) scaleZ(1.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.25) should be [skewX(12.5rad)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (1) should be [skewX(20rad) scaleZ(2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (0.25) should be [skewX(12.5rad)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad) scaleZ(2)\] at (0.25) should be [skewX(12.5rad) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad)\] to [skewX(20rad)\] at (-1) should be [skewX(0rad)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (2) should be [translateY(110%) scaleZ(3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%) scaleZ(2)\] at (0.25) should be [translateY(75%) scaleZ(1.25)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%) scaleZ(1)\] to [translateY(90%) scaleZ(2)\] at (0) should be [translateY(70%) scaleZ(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [scaleZ(3) perspective(400px)\] to [scaleZ(4) skewX(1rad) perspective(500px)\] at (-1) should be [scaleZ(2) matrix3d(1, 0, 0, 0, -1.55741, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewY(10rad)\] to [skewY(20rad)\] at (1) should be [skewY(20rad)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini
index 477238cc89d..a0f428bb0a8 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-004.html.ini
@@ -1,5 +1,784 @@
[transform-interpolation-004.html]
- expected: ERROR
[transform interpolation]
expected: FAIL
+ [Web Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (1) should be [translate3d(13px, 90%, 3em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (1) should be [translate(13px, 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.25) should be [translate3d(7px, -6px, 11px) skewX(1.25rad) matrix3d(1, 0, 0, 0, 0, 1.25, 0, 0, 0, 0, 1, -0.001875, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (-1) should be [translateX(11px) translateY(50%) translateZ(1em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.75) should be [translateX(12.75px) translateY(85%) translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (-1) should be [translateY(50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.75) should be [translate3d(12.75px, 85%, 2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.75) should be [skewX(17.5rad) translateY(85%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.75) should be [translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.25) should be [skewX(12.5rad) translateY(75%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.75) should be [translateY(85%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.25) should be [translate3d(12.25px, 75%, 2.25em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (-1) should be [translate3d(12px, 4px, 16px) skewX(0rad) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.005, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0) should be [translate(12px, 70%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.75) should be [translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (-1) should be [translate3d(12px, 4px, 16px) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 200, 300, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (-1) should be [translate3d(12px, 4px, 16px) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.75) should be [translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (2) should be [translateX(14px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0) should be [matrix3d(1, 0, 0, 0, 1.5574077246549023, 1, 0, 0, -0.02, 0.01, 0.97, -0.0025, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.25) should be [translateX(12.25px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0) should be [translateY(70%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0) should be [translateX(12px) translateY(70%) translateZ(2em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.75) should be [translate(12.75px, 85%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.25) should be [translate(12.25px, 75%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (2) should be [translate(14px, 110%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (2) should be [matrix3d(1, 0, 0, 0, -11.227342763749263, 3, 0, 0, 0.021237113402061854, -0.010618556701030927, 1.03, -0.0014653608247422677, -8, 4, -12, 0.9861443298969074)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.25) should be [translateY(75%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 400, 600, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (-1) should be [translateZ(1em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.25) should be [translateY(75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0) should be [skewX(10rad) translateY(70%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.25) should be [translate3d(7px, -6px, 11px) skewX(1.25rad) matrix3d(1, 0, 0, 0, 0, 1.25, 0, 0, 0, 0, 1, -0.001875, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0) should be [translate3d(8px, -4px, 12px) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.75) should be [translate(12.75px, 85%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0) should be [translateX(12px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.75) should be [translateX(12.75px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.75) should be [translateY(85%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (2) should be [translate3d(0px, -20px, 4px) matrix3d(1, 0, 0, 0, -4.67222, 3, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 1.1186572632293585, 1.25, 0, 0, -0.0151159793814433, 0.00755798969072165, 0.9775, -0.002378247422680413, 6, -3, 9, 1.0012989690721648)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 1.1186572632293585, 1.25, 0, 0, -0.0151159793814433, 0.00755798969072165, 0.9775, -0.002378247422680413, 6, -3, 9, 1.0012989690721648)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (2) should be [translate3d(0px, -20px, 4px) skewX(3rad) matrix3d(1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -0.7525665307288518, 1.75, 0, 0, -0.005115979381443298, 0.002557989690721649, 0.9924999999999999, -0.002128247422680412, 2, -1, 3, 1.001298969072165)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.25) should be [translateX(12.25px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (-1) should be [translate3d(12px, 4px, 16px) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (1) should be [translate3d(13px, 90%, 3em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (-1) should be [translate3d(11px, 50%, 1em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (2) should be [translate3d(14px, 110%, 4em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 400, 600, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (1) should be [matrix(1, 0, 0, 1, 0, 0) \]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.25) should be [translate3d(7px, -6px, 11px) skewX(1.25rad) matrix3d(1, 0, 0, 0, 0, 1.25, 0, 0, 0, 0, 1, -0.001875, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (-1) should be [skewX(0rad) translateY(50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (2) should be [matrix3d(1, 0, 0, 0, -11.227342763749263, 3, 0, 0, 0.021237113402061854, -0.010618556701030927, 1.03, -0.0014653608247422677, -8, 4, -12, 0.9861443298969074)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 0, 0, 0, -0.03876288659793814, 0.01938144329896907, 0.94, -0.0029653608247422686, 16, -8, 24, 0.986144329896907)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (2) should be [translate3d(14px, 110%, 4em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.25) should be [translateX(12.25px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.75) should be [translate3d(5px, -10px, 9px) skewX(1.75rad) matrix3d(1, 0, 0, 0, 0, 1.75, 0, 0, 0, 0, 1, -0.000625, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0.621795827675797, 1, 0, 0, 0, 0, 1, 0, 2, -1, 3, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 75, 150, 225, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 0, 0, 0, -0.03876288659793814, 0.01938144329896907, 0.94, -0.0029653608247422686, 16, -8, 24, 0.986144329896907)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0) should be [matrix(1, 0, 1.5574077246549023, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.75) should be [translateX(12.75px) translateY(85%) translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (2) should be [matrix3d(1, 0, 0, 0, -11.227342763749263, 3, 0, 0, 0.021237113402061854, -0.010618556701030927, 1.03, -0.0014653608247422677, -8, 4, -12, 0.9861443298969074)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.25) should be [translateX(12.25px) translateY(75%) translateZ(2.25em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0) should be [translateZ(2em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.25) should be [translateY(75%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (2) should be [translateX(14px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (2) should be [translateX(14px) translateY(110%) translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (2) should be [translateX(14px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 0, 0, 0, -0.03876288659793814, 0.01938144329896907, 0.94, -0.0029653608247422686, 16, -8, 24, 0.986144329896907)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (1) should be [translate3d(4px, -12px, 8px) matrix3d(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.75) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 25, 50, 75, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0) should be [matrix(1, 0, 1.5574077246549023, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 1, 0, 0, 0, 0, 1, 0, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (-1) should be [translate3d(11px, 50%, 1em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (-1) should be [translate(11px, 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (2) should be [translate3d(0px, -20px, 4px) matrix3d(1, 0, 0, 0, -4.67222, 3, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0) should be [matrix(1, 0, 1.5574077246549023, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.25) should be [translateY(75%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0) should be [translate3d(8px, -4px, 12px) skewX(1rad) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.75) should be [translate(12.75px, 85%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (2) should be [translate(14px, 110%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (1) should be [translateX(13px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -1.2494279662824135, 1, 0, 0, 0, 0, 1, 0, 6, -3, 9, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.25) should be [skewX(12.5rad) translateY(75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (2) should be [matrix3d(1, 0, 0, 0, -5.9274874511779405, 1, 0, 0, 0, 0, 1, 0, 16, -8, 24, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.25) should be [translate3d(12.25px, 75%, 2.25em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (-1) should be [translateX(11px) translateY(50%) translateZ(1em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (2) should be [translate3d(0px, -20px, 4px) skewX(3rad) matrix3d(1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.75) should be [translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (1) should be [matrix(1, 0, 0, 1, 0, 0) \]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (2) should be [translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 200, 300, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0.621795827675797, 1, 0, 0, 0, 0, 1, 0, 2, -1, 3, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (-1) should be [translate3d(12px, 4px, 16px) skewX(0rad) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.005, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (-1) should be [translateZ(1em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (-1) should be [translate3d(11px, 50%, 1em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (-1) should be [translate(11px, 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.25) should be [translateX(12.25px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (2) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -100, -200, -300, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.25) should be [translate3d(12.25px, 75%, 2.25em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (2) should be [translateX(14px) translateY(110%) translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (2) should be [skewX(30rad) translateY(110%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 400, 600, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.25) should be [translateX(12.25px) translateY(75%) translateZ(2.25em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (-1) should be [translateY(50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (-1) should be [skewX(0rad) translateY(50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0) should be [matrix(1, 0, 1.5574077246549023, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (-1) should be [translate3d(11px, 50%, 1em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.75) should be [translate3d(5px, -10px, 9px) matrix3d(1, 0, 0, 0, 0.681366, 1.75, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.25) should be [translateZ(2.25em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (2) should be [translateY(110%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -1.2494279662824135, 1, 0, 0, 0, 0, 1, 0, 6, -3, 9, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (2) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -100, -200, -300, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 75, 150, 225, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0) should be [translateX(12px) translateY(70%) translateZ(2em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (1) should be [translate(13px, 90%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (-1) should be [matrix3d(1, 0, 0, 0, 5.2998553125713235, 1, 0, 0, 0, 0, 1, 0, -8, 4, -12, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0) should be [translate3d(8px, -4px, 12px) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (2) should be [translateY(110%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (1) should be [skewX(20rad) translateY(90%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (1) should be [matrix(1, 0, 0, 1, 0, 0) \]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (-1) should be [translateZ(1em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.25) should be [translateZ(2.25em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.75) should be [skewX(17.5rad) translateY(85%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0) should be [matrix3d(1, 0, 0, 0, 1.5574077246549023, 1, 0, 0, -0.02, 0.01, 0.97, -0.0025, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (2) should be [translate3d(14px, 110%, 4em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (-1) should be [skewX(0rad) translateY(50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (1) should be [translateX(13px) translateY(90%) translateZ(3em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (2) should be [translate3d(0px, -20px, 4px) skewX(3rad) matrix3d(1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.25) should be [translateX(12.25px) translateY(75%) translateZ(2.25em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 200, 300, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (1) should be [translate3d(4px, -12px, 8px) skewX(2rad) matrix(1, 0, 0, 2, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (2) should be [matrix3d(1, 0, 0, 0, -5.9274874511779405, 1, 0, 0, 0, 0, 1, 0, 16, -8, 24, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.75) should be [translate3d(5px, -10px, 9px) skewX(1.75rad) matrix3d(1, 0, 0, 0, 0, 1.75, 0, 0, 0, 0, 1, -0.000625, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 1.1186572632293585, 1.25, 0, 0, -0.0151159793814433, 0.00755798969072165, 0.9775, -0.002378247422680413, 6, -3, 9, 1.0012989690721648)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (-1) should be [translate(11px, 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0.621795827675797, 1, 0, 0, 0, 0, 1, 0, 2, -1, 3, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (2) should be [translate(14px, 110%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (2) should be [translate3d(0px, -20px, 4px) matrix3d(1, 0, 0, 0, -4.67222, 3, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (-1) should be [translate3d(12px, 4px, 16px) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0) should be [skewX(10rad) translateY(70%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0) should be [translateZ(2em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (2) should be [translateY(110%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -0.7525665307288518, 1.75, 0, 0, -0.005115979381443298, 0.002557989690721649, 0.9924999999999999, -0.002128247422680412, 2, -1, 3, 1.001298969072165)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (1) should be [translateX(13px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0) should be [translate3d(12px, 70%, 2em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.25) should be [translate(12.25px, 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (2) should be [translateX(14px) translateY(110%) translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (2) should be [translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 1, 0, 0, 0, 0, 1, 0, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.75) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 25, 50, 75, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 1, 0, 0, 0, 0, 1, 0, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (1) should be [translate3d(4px, -12px, 8px) matrix3d(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (2) should be [translateX(14px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (-1) should be [translate(11px, 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.25) should be [translate3d(7px, -6px, 11px) matrix3d(1, 0, 0, 0, 1.46007, 1.25, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.75) should be [translateX(12.75px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.75) should be [skewX(17.5rad) translateY(85%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0) should be [translate3d(8px, -4px, 12px) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (-1) should be [matrix3d(1, 0, 0, 0, 5.2998553125713235, 1, 0, 0, 0, 0, 1, 0, -8, 4, -12, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -0.7525665307288518, 1.75, 0, 0, -0.005115979381443298, 0.002557989690721649, 0.9924999999999999, -0.002128247422680412, 2, -1, 3, 1.001298969072165)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.25) should be [skewX(12.5rad) translateY(75%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.75) should be [translate3d(5px, -10px, 9px) matrix3d(1, 0, 0, 0, 0.681366, 1.75, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (2) should be [translate3d(14px, 110%, 4em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.25) should be [translate3d(7px, -6px, 11px) matrix3d(1, 0, 0, 0, 1.46007, 1.25, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.25) should be [skewX(12.5rad) translateY(75%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 75, 150, 225, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.25) should be [translateZ(2.25em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (2) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -100, -200, -300, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.75) should be [translate3d(5px, -10px, 9px) matrix3d(1, 0, 0, 0, 0.681366, 1.75, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (-1) should be [translateY(50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.75) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 25, 50, 75, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (2) should be [matrix3d(1, 0, 0, 0, -11.227342763749263, 3, 0, 0, 0.021237113402061854, -0.010618556701030927, 1.03, -0.0014653608247422677, -8, 4, -12, 0.9861443298969074)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (1) should be [translateZ(3em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (1) should be [matrix(1, 0, 0, 1, 0, 0) \]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.25) should be [translate3d(7px, -6px, 11px) matrix3d(1, 0, 0, 0, 1.46007, 1.25, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0) should be [translate3d(8px, -4px, 12px) skewX(1rad) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (2) should be [translate(14px, 110%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.75) should be [translateX(12.75px) translateY(85%) translateZ(2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (-1) should be [translateY(50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (2) should be [matrix3d(1, 0, 0, 0, -5.9274874511779405, 1, 0, 0, 0, 0, 1, 0, 16, -8, 24, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 1, 0, 0, 0, 0, 1, 0, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.75) should be [translate3d(5px, -10px, 9px) skewX(1.75rad) matrix3d(1, 0, 0, 0, 0, 1.75, 0, 0, 0, 0, 1, -0.000625, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0) should be [translate(12px, 70%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0) should be [translate3d(8px, -4px, 12px) matrix3d(1, 0, 0, 0, 1.55741, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.75) should be [translate3d(5px, -10px, 9px) matrix3d(1, 0, 0, 0, 0.681366, 1.75, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.75) should be [translate3d(12.75px, 85%, 2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (2) should be [translateX(14px) translateY(110%) translateZ(4em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (1) should be [translateY(90%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.75) should be [translate(12.75px, 85%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (2) should be [translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0) should be [translateX(12px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.75) should be [translate3d(12.75px, 85%, 2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 1.1186572632293585, 1.25, 0, 0, -0.0151159793814433, 0.00755798969072165, 0.9775, -0.002378247422680413, 6, -3, 9, 1.0012989690721648)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (-1) should be [translateX(11px) translateY(50%) translateZ(1em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (1) should be [translate3d(4px, -12px, 8px) skewX(2rad) matrix(1, 0, 0, 2, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0) should be [matrix3d(1, 0, 0, 0, 1.5574077246549023, 1, 0, 0, -0.02, 0.01, 0.97, -0.0025, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (-1) should be [translateX(11px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0) should be [translate3d(8px, -4px, 12px) skewX(1rad) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 200, 400, 600, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (2) should be [skewX(30rad) translateY(110%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (-1) should be [skewX(0rad) translateY(50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (1) should be [translateZ(3em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -1.2494279662824135, 1, 0, 0, 0, 0, 1, 0, 6, -3, 9, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (-1) should be [translate3d(12px, 4px, 16px) skewX(0rad) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.005, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -1.2494279662824135, 1, 0, 0, 0, 0, 1, 0, 6, -3, 9, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (-1) should be [translateX(11px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (1) should be [translate3d(4px, -12px, 8px) skewX(2rad) matrix(1, 0, 0, 2, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (2) should be [skewX(30rad) translateY(110%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.75) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 25, 50, 75, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (-1) should be [translateX(11px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (2) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -100, -200, -300, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.75) should be [translateX(12.75px) translateY(85%) translateZ(2.75em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.75) should be [translateY(85%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.75) should be [translate3d(12.75px, 85%, 2.75em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0.621795827675797, 1, 0, 0, 0, 0, 1, 0, 2, -1, 3, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (1) should be [translate3d(4px, -12px, 8px) skewX(2rad) matrix(1, 0, 0, 2, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (2) should be [skewX(30rad) translateY(110%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (0.75) should be [skewX(17.5rad) translateY(85%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (0.25) should be [translate3d(7px, -6px, 11px) matrix3d(1, 0, 0, 0, 1.46007, 1.25, 0, 0, 0, 0, 1, -0.002375, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (2) should be [translate3d(0px, -20px, 4px) skewX(3rad) matrix3d(1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (2) should be [translate3d(0px, -20px, 4px) matrix3d(1, 0, 0, 0, -4.67222, 3, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0) should be [translate3d(12px, 70%, 2em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0.75) should be [translateY(85%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (-1) should be [translate3d(12px, 4px, 16px) skewX(0rad) matrix3d(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.005, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.25) should be [translate(12.25px, 75%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (2) should be [matrix3d(1, 0, 0, 0, -5.9274874511779405, 1, 0, 0, 0, 0, 1, 0, 16, -8, 24, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (-1) should be [matrix3d(1, 0, 0, 0, 5.2998553125713235, 1, 0, 0, 0, 0, 1, 0, -8, 4, -12, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.75) should be [translateX(12.75px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0) should be [matrix3d(1, 0, 0, 0, 1.5574077246549023, 1, 0, 0, -0.02, 0.01, 0.97, -0.0025, 8, -4, 12, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (1) should be [translate3d(4px, -12px, 8px) matrix3d(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0) should be [translate3d(8px, -4px, 12px) skewX(1rad) matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (2) should be [translateY(110%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0.25) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 75, 150, 225, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (0.75) should be [matrix3d(1, 0, 0, 0, -0.7525665307288518, 1.75, 0, 0, -0.005115979381443298, 0.002557989690721649, 0.9924999999999999, -0.002128247422680412, 2, -1, 3, 1.001298969072165)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (-1) should be [matrix3d(1, 0, 0, 0, 0, 0, 0, 0, -0.03876288659793814, 0.01938144329896907, 0.94, -0.0029653608247422686, 16, -8, 24, 0.986144329896907)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) scaleY(2) perspective(500px)\] at (1) should be [translate3d(4px, -12px, 8px) matrix3d(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (0) should be [translateY(70%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate(12px, 70%)\] to [translate(13px, 90%)\] at (0.25) should be [translate(12.25px, 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.25) should be [translate3d(7px, -6px, 11px) skewX(1.25rad) matrix3d(1, 0, 0, 0, 0, 1.25, 0, 0, 0, 0, 1, -0.001875, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (0.25) should be [translateX(12.25px) translateY(75%) translateZ(2.25em)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateY(70%)\] to [translateY(90%)\] at (1) should be [translateY(90%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (-1) should be [translateX(11px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (1) should be [translateX(13px) translateY(90%) translateZ(3em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [translate3d(4px, -12px, 8px) skewX(2rad) scaleY(2)\] at (0.75) should be [translate3d(5px, -10px, 9px) skewX(1.75rad) matrix3d(1, 0, 0, 0, 0, 1.75, 0, 0, 0, 0, 1, -0.000625, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3D(100px, 200px, 300px)\] to [none\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 100, 200, 300, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (0.25) should be [translateZ(2.25em)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (2) should be [translateZ(4em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translate3d(8px, -4px, 12px) skewX(1rad) perspective(400px)\] to [scaleY(2) skewX(2rad) perspective(500px)\] at (1) should be [matrix3d(1, 0, 0, 0, -2.185039863261519, 2, 0, 0, 0, 0, 1, -0.002, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px) translateY(70%) translateZ(2em)\] to [translateX(13px) translateY(90%) translateZ(3em)\] at (-1) should be [translateX(11px) translateY(50%) translateZ(1em)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [translateZ(2em)\] to [translateZ(3em)\] at (-1) should be [translateZ(1em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translateX(12px)\] to [translateX(13px)\] at (0.75) should be [translateX(12.75px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [skewX(1rad)\] to [translate3d(8px, -4px, 12px) skewX(2rad)\] at (-1) should be [matrix3d(1, 0, 0, 0, 5.2998553125713235, 1, 0, 0, 0, 0, 1, 0, -8, 4, -12, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [translate3d(12px, 70%, 2em)\] to [translate3d(13px, 90%, 3em)\] at (0.25) should be [translate3d(12.25px, 75%, 2.25em)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [skewX(10rad) translateY(70%)\] to [skewX(20rad) translateY(90%)\] at (1) should be [skewX(20rad) translateY(90%)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini
index 74b4381cf8c..b99aad4b362 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-005.html.ini
@@ -1,5 +1,904 @@
[transform-interpolation-005.html]
- expected: ERROR
[transform interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.25) should be [matrix(2.5, 0, 0, 4, 0, -4.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(180deg)\] at (0.75) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.3333333333333333) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.75) should be [matrix(5.5, 0, 1.31, 1.75, 4.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (2) should be [matrix(13, 0, 6, 3, 12, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(180deg)\] to [none\] at (0.25) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (1) should be [matrix(7, 0, 2, 2, 6, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(360deg)\] at (2) should be [rotate(720deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (-1) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(360deg)\] at (2) should be [rotate(720deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (1) should be [matrix(1, 0, 0, 1, 0, -6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.25) should be [matrix3d(2.441256919175, 0.0, 0.0, 0.0, 0.0, 2.571299218825, 0.0, 0.0, 0.0, 0.0, 2.6947530634, 0.0, 20.35889062555, 20.561444082325, 20.800684839349998, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (2) should be [matrix3d(3.0761619932999995, 0.0, 0.0, 0.0, 0.0, 2.3221331858, 0.0, 0.0, 0.0, 0.0, 2.9442666928000003, 0.0, 20.5331850252, 19.7952290231, 20.002012795600002, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(180deg)\] to [none\] at (-1) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (2) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (2) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.5) should be [matrix(4, 0, 2, 4, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0) should be [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.5) should be [matrix(2, 0, 0, 3, 0, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(180deg)\] at (0) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.3333333333333333) should be [matrix(3, 0, 1.6667, 5, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(360deg)\] at (-1) should be [rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(360deg)\] at (0.75) should be [rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.5) should be [matrix(2, 0, 0, 3, 0, -3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (2) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(180deg)\] at (-1) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (-1) should be [matrix(5, 0, 0, 9, 0, -12)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.25) should be [matrix(2.5, 0, 0, 4, 0, -4.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(180deg)\] to [none\] at (-1) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.3333333333333333) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0) should be [matrix(1, 0, 0, 1, 0, -6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(180deg)\] to [none\] at (0.75) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (-1) should be [matrix(5, 0, 0, 9, 0, -12)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(180deg)\] at (1) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(360deg)\] at (1) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (1) should be [matrix(7, 0, 1, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (-1) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(360deg)\] at (0.75) should be [rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(180deg)\] at (1) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0) should be [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.25) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.25) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (2) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (1) should be [matrix(0, 7, -1, 0, 6, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (-1) should be [matrix3d(1.9877532948000005, 0.0, 0.0, 0.0, 0.0, 2.7492749567000003, 0.0, 0.0, 0.0, 0.0, 2.5165290423999997, 0.0, 20.2343946258, 21.1087405532, 21.371164870599998, 1.0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(360deg)\] at (2) should be [rotate(720deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (1) should be [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (1) should be [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.25) should be [matrix(2.5, 0, 0.31, 1.25, 1.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (-1) should be [matrix3d(-0.6299594065765657, -0.10825090106268696, -0.20133311671001855, 5.485724217214554, 6.358051978686152, 0.16496896269344588, 1.5760051143537075, -54.21568355620423, 0.7106057459805782, -1.1596356050622005, -0.11495342545397585, -4.913752963990824, -1.03125, -1.125, 3.5625, -5.901513951904114)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.3333333333333333) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (1) should be [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0) should be [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.75) should be [matrix3d(2.622658368925, 0.0, 0.0, 0.0, 0.0, 2.500108923675, 0.0, 0.0, 0.0, 0.0, 2.7660426718, 0.0, 20.408689025450002, 20.342525493975, 20.572492826850002, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (1) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.6666666666666666) should be [matrix(5, 0, 2, 3, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (-1) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (2) should be [matrix(13, 0, -10, -5, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.75) should be [matrix(1.5, 0, 0, 2, 0, -1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (2) should be [matrix(-1, 0, 0, -3, 0, 6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (-1) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.25) should be [matrix3d(0.9041890962319094, 0.3522701519297133, -0.15240204298176957, -0.1428256720529315, -0.7579798772527586, 0.6803606288839232, -0.05133336076757235, 0.37904689530895724, -0.1957679784745485, 0.38554138029509327, 0.8226186974340638, 0.3370288143441876, -0.296875, -0.015625, 0.328125, 0.5930529142680923)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (-1) should be [matrix(-5, 0, -13, 13, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(180deg)\] to [none\] at (0.25) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (-1) should be [matrix(-5, 0, -13, 13, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0) should be [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (2) should be [matrix(-1, 0, 0, -3, 0, 6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.75) should be [matrix(1.5, 0, 0, 2, 0, -1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.25) should be [matrix3d(0.7912976716694541, -0.4517927901159618, -0.6868745974719376, 1.2522201536338506, 0.7952183069582651, 0.06340410955800829, -0.7956629784232128, 2.2561737435012983, 0.345639443327071, -0.8934490945546473, 0.830131443385676, 1.2606901484983566, -1.0078125, 0.75, -0.703125, 2.4888661932358946)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0) should be [matrix(1, 0, 0, 7, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (-1) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (2) should be [matrix3d(-1.1789992641434441, -0.7109729379601547, -0.4455746537954199, -21.703089533128907, -0.11137581475421703, -0.08822983871000473, -0.05695380894007451, -2.22667264132605, -3.1443917136741506, 1.8952588096345078, 2.426615889772007, -21.697523130750138, -1.5, 2.0625, -3.1875, -5.901513951904121)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (2) should be [matrix(13, 0, -10, -5, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.5) should be [matrix(2, 0, 0, 3, 0, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (1) should be [matrix(7, 0, 2, 2, 6, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (2) should be [matrix(13, 0, -10, -5, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.6666666666666666) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(360deg)\] at (2) should be [rotate(720deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (-1) should be [matrix3d(-0.0000000000000002377810622383943, -1.0671050586638147, -0.08972656766237302, 1.3740432449326199, 0.98484601036295, -2.653201092395309, 0.6753819540610847, 3.6127240080250744, -2.7988839807429846, -1.2090004194153336, -0.5183744226115445, -0.7936088631686278, 1.1875, 0.0625, -1.3125, 5.340768914473683)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (2) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (2) should be [matrix3d(-0.5844534449366048, -0.42278005999296053, -0.4650580659922564, -0.6817595809063256, 0.9156938760088464, 0.3851647027225889, 0.9244443507516923, 0.7218225020358241, -0.0803568793574344, 0.1719974850210706, -0.49676609633513097, -0.25968177786904373, -2.375, -0.125, 2.625, 5.340768914473685)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(180deg)\] at (0.25) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.3333333333333333) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (2) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (2) should be [matrix3d(0.39048513570444376, 0.14780794797065988, 0.6963068100217401, -4.857907861239344, -2.967682789284791, 0.6004978769584385, -3.5472376016872444, 26.675324787979896, -2.5953724498995308, 1.6280843851961373, 0.8163834310586356, 9.001735256585825, 1.34375, -1, 0.9375, -14.881239394516227)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(360deg)\] at (0.25) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.75) should be [matrix(5.5, 0, 1.31, 1.75, 4.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.5) should be [matrix(4, 0, 0.75, 1.5, 3, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (2) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.25) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (-1) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(180deg)\] at (0.25) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(180deg)\] at (2) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.75) should be [matrix3d(2.622658368925, 0.0, 0.0, 0.0, 0.0, 2.500108923675, 0.0, 0.0, 0.0, 0.0, 2.7660426718, 0.0, 20.408689025450002, 20.342525493975, 20.572492826850002, 1.0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.75) should be [matrix3d(0.35007413226026135, 0.7254385504141292, -0.4977009150941454, 0.09582061929004702, -1.1027525038949482, -0.5884810398827429, 0.4516829688651701, 0.5447944343861767, -0.68717798815684, 0.2657772247405681, 0.5465690479810023, 1.0836207863885503, -0.890625, -0.046875, 0.984375, 0.5930529142680927)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.75) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(360deg)\] at (0) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (-1) should be [matrix(-5, 0, 0, 0, -6, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (-1) should be [matrix3d(-0.6299594065765657, -0.10825090106268696, -0.20133311671001855, 5.485724217214554, 6.358051978686152, 0.16496896269344588, 1.5760051143537075, -54.21568355620423, 0.7106057459805782, -1.1596356050622005, -0.11495342545397585, -4.913752963990824, -1.03125, -1.125, 3.5625, -5.901513951904114)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (-1) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.25) should be [matrix3d(0.9041890962319094, 0.3522701519297133, -0.15240204298176957, -0.1428256720529315, -0.7579798772527586, 0.6803606288839232, -0.05133336076757235, 0.37904689530895724, -0.1957679784745485, 0.38554138029509327, 0.8226186974340638, 0.3370288143441876, -0.296875, -0.015625, 0.328125, 0.5930529142680923)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.75) should be [matrix3d(0.6861191524977764, -0.18025672746204927, -0.8710297237546482, 0.6072134247444672, 0.2819931018922366, 0.27778974607679663, -0.6540128246146626, 0.5063632314069845, 0.5509562084361049, -0.3215202993119732, 0.5459062603735321, 2.8697154005492105, -1.3046875, 0.734375, -0.375, 1.6470169329910096)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.6666666666666666) should be [matrix(5, 0, 2, 3, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (-1) should be [matrix(5, 0, 0, 9, 0, -12)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0) should be [matrix(1, 0, 0, 1, 0, -6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(360deg)\] at (-1) should be [rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0) should be [matrix(0, 7, -1, 0, 6, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(180deg)\] to [none\] at (0.75) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (-1) should be [matrix3d(-0.0000000000000002377810622383943, -1.0671050586638147, -0.08972656766237302, 1.3740432449326199, 0.98484601036295, -2.653201092395309, 0.6753819540610847, 3.6127240080250744, -2.7988839807429846, -1.2090004194153336, -0.5183744226115445, -0.7936088631686278, 1.1875, 0.0625, -1.3125, 5.340768914473683)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0) should be [matrix(1, 0, 0, 7, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (-1) should be [matrix3d(-0.6413028394192518, -1.0702420910513302, -0.5807595966791961, -18.02447171345163, 0.8211815704840004, 1.0980679097347057, 0.9399408862655454, 22.460730852026064, 0.28421009261178104, -0.5408346238741739, 0.5194791363698213, 3.075163035391172, -2.6875, 2, -1.875, -14.881239394516232)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (-1) should be [matrix3d(-0.6413028394192518, -1.0702420910513302, -0.5807595966791961, -18.02447171345163, 0.8211815704840004, 1.0980679097347057, 0.9399408862655454, 22.460730852026064, 0.28421009261178104, -0.5408346238741739, 0.5194791363698213, 3.075163035391172, -2.6875, 2, -1.875, -14.881239394516232)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (-1) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.25) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (-1) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0) should be [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (2) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (2) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(180deg)\] to [none\] at (0.75) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(180deg)\] at (2) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.3333333333333333) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.6666666666666666) should be [matrix(5, 0, 2, 3, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(180deg)\] to [none\] at (2) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(180deg)\] to [none\] at (1) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.25) should be [matrix3d(0.7912976716694541, -0.4517927901159618, -0.6868745974719376, 1.2522201536338506, 0.7952183069582651, 0.06340410955800829, -0.7956629784232128, 2.2561737435012983, 0.345639443327071, -0.8934490945546473, 0.830131443385676, 1.2606901484983566, -1.0078125, 0.75, -0.703125, 2.4888661932358946)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (1) should be [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (-1) should be [matrix(-5, 0, -13, 13, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(180deg)\] to [none\] at (-1) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (-1) should be [matrix(-5, 0, 0, 0, -6, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (2) should be [matrix3d(-0.5844534449366048, -0.42278005999296053, -0.4650580659922564, -0.6817595809063256, 0.9156938760088464, 0.3851647027225889, 0.9244443507516923, 0.7218225020358241, -0.0803568793574344, 0.1719974850210706, -0.49676609633513097, -0.25968177786904373, -2.375, -0.125, 2.625, 5.340768914473685)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.5) should be [matrix(4, 0, 0.75, 1.5, 3, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.25) should be [matrix3d(0.33652832679595723, 0.55254445148386, -0.7544724447833296, 0.22700224951774267, -0.69720168363685, -0.036373245768780864, 0.28149188169180933, -0.2845156818045006, -0.24737156018941048, 0.31207160370190334, 0.4564821058052897, 0.9220853089096839, -1.2265625, 0.203125, 0.75, 1.647016932991011)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(360deg)\] at (0.25) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.25) should be [matrix3d(2.441256919175, 0.0, 0.0, 0.0, 0.0, 2.571299218825, 0.0, 0.0, 0.0, 0.0, 2.6947530634, 0.0, 20.35889062555, 20.561444082325, 20.800684839349998, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.25) should be [matrix(2.5, 0, 0, 4, 0, -4.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.6666666666666666) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (2) should be [matrix3d(-1.1789992641434441, -0.7109729379601547, -0.4455746537954199, -21.703089533128907, -0.11137581475421703, -0.08822983871000473, -0.05695380894007451, -2.22667264132605, -3.1443917136741506, 1.8952588096345078, 2.426615889772007, -21.697523130750138, -1.5, 2.0625, -3.1875, -5.901513951904121)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (-1) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (2) should be [matrix3d(-1.1789992641434441, -0.7109729379601547, -0.4455746537954199, -21.703089533128907, -0.11137581475421703, -0.08822983871000473, -0.05695380894007451, -2.22667264132605, -3.1443917136741506, 1.8952588096345078, 2.426615889772007, -21.697523130750138, -1.5, 2.0625, -3.1875, -5.901513951904121)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.25) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.25) should be [matrix(2.5, 0, 0, 4, 0, -4.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.6666666666666666) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.25) should be [matrix(2.5, 0, 0.31, 1.25, 1.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.25) should be [matrix3d(0.7912976716694541, -0.4517927901159618, -0.6868745974719376, 1.2522201536338506, 0.7952183069582651, 0.06340410955800829, -0.7956629784232128, 2.2561737435012983, 0.345639443327071, -0.8934490945546473, 0.830131443385676, 1.2606901484983566, -1.0078125, 0.75, -0.703125, 2.4888661932358946)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (-1) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (2) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (1) should be [matrix(0, 7, -1, 0, 6, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (2) should be [matrix3d(0.39048513570444376, 0.14780794797065988, 0.6963068100217401, -4.857907861239344, -2.967682789284791, 0.6004978769584385, -3.5472376016872444, 26.675324787979896, -2.5953724498995308, 1.6280843851961373, 0.8163834310586356, 9.001735256585825, 1.34375, -1, 0.9375, -14.881239394516227)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (-1) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (1) should be [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(180deg)\] at (-1) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.75) should be [matrix(1.5, 0, 0, 2, 0, -1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(180deg)\] at (0) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (1) should be [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (2) should be [matrix3d(-1.1789992641434441, -0.7109729379601547, -0.4455746537954199, -21.703089533128907, -0.11137581475421703, -0.08822983871000473, -0.05695380894007451, -2.22667264132605, -3.1443917136741506, 1.8952588096345078, 2.426615889772007, -21.697523130750138, -1.5, 2.0625, -3.1875, -5.901513951904121)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [rotate(180deg)\] to [none\] at (2) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (2) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(180deg)\] to [none\] at (0.25) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.75) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (2) should be [matrix3d(-0.5844534449366048, -0.42278005999296053, -0.4650580659922564, -0.6817595809063256, 0.9156938760088464, 0.3851647027225889, 0.9244443507516923, 0.7218225020358241, -0.0803568793574344, 0.1719974850210706, -0.49676609633513097, -0.25968177786904373, -2.375, -0.125, 2.625, 5.340768914473685)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0) should be [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.25) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.75) should be [matrix3d(2.622658368925, 0.0, 0.0, 0.0, 0.0, 2.500108923675, 0.0, 0.0, 0.0, 0.0, 2.7660426718, 0.0, 20.408689025450002, 20.342525493975, 20.572492826850002, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.25) should be [matrix3d(0.33652832679595723, 0.55254445148386, -0.7544724447833296, 0.22700224951774267, -0.69720168363685, -0.036373245768780864, 0.28149188169180933, -0.2845156818045006, -0.24737156018941048, 0.31207160370190334, 0.4564821058052897, 0.9220853089096839, -1.2265625, 0.203125, 0.75, 1.647016932991011)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0) should be [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.6666666666666666) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.5) should be [matrix(4, 0, 0.75, 1.5, 3, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (1) should be [matrix(1, 0, 0, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.75) should be [matrix3d(0.6861191524977764, -0.18025672746204927, -0.8710297237546482, 0.6072134247444672, 0.2819931018922366, 0.27778974607679663, -0.6540128246146626, 0.5063632314069845, 0.5509562084361049, -0.3215202993119732, 0.5459062603735321, 2.8697154005492105, -1.3046875, 0.734375, -0.375, 1.6470169329910096)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.6666666666666666) should be [matrix(5, 0, 2, 3, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0) should be [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (2) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.75) should be [matrix3d(1.0093457700315165, -0.12746048375025829, -0.24746788943106088, 1.3202120308857304, 0.6128364656690982, 0.7600694601651116, -0.22233359857303325, 1.4081483224940277, 0.21669805381113447, -0.3786082265932788, 0.908354523914928, 0.6747509193960347, -0.3359375, 0.25, -0.234375, 2.4888661932358964)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (2) should be [matrix(-1, 0, 0, -3, 0, 6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [rotate(180deg)\] to [none\] at (0) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (-1) should be [matrix3d(-1.2484405096414273, 0, -2.727892280477045, 0, 0, 5, 0, 0, 6.365081987779772, 0, -2.9130278558299967, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.6666666666666666) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (-1) should be [matrix(-5, 0, 0, 0, -6, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(360deg)\] at (0) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (2) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.75) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.6666666666666666) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (2) should be [matrix(13, 0, -10, -5, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(180deg)\] at (0.25) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (2) should be [matrix3d(3.0761619932999995, 0.0, 0.0, 0.0, 0.0, 2.3221331858, 0.0, 0.0, 0.0, 0.0, 2.9442666928000003, 0.0, 20.5331850252, 19.7952290231, 20.002012795600002, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (-1) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(180deg)\] at (-1) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.6666666666666666) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.25) should be [matrix3d(2.441256919175, 0.0, 0.0, 0.0, 0.0, 2.571299218825, 0.0, 0.0, 0.0, 0.0, 2.6947530634, 0.0, 20.35889062555, 20.561444082325, 20.800684839349998, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (2) should be [matrix3d(0.39048513570444376, 0.14780794797065988, 0.6963068100217401, -4.857907861239344, -2.967682789284791, 0.6004978769584385, -3.5472376016872444, 26.675324787979896, -2.5953724498995308, 1.6280843851961373, 0.8163834310586356, 9.001735256585825, 1.34375, -1, 0.9375, -14.881239394516227)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(180deg)\] at (0.75) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (1) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(360deg)\] at (0.25) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (-1) should be [matrix3d(1.9877532948000005, 0.0, 0.0, 0.0, 0.0, 2.7492749567000003, 0.0, 0.0, 0.0, 0.0, 2.5165290423999997, 0.0, 20.2343946258, 21.1087405532, 21.371164870599998, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.75) should be [matrix3d(0.35007413226026135, 0.7254385504141292, -0.4977009150941454, 0.09582061929004702, -1.1027525038949482, -0.5884810398827429, 0.4516829688651701, 0.5447944343861767, -0.68717798815684, 0.2657772247405681, 0.5465690479810023, 1.0836207863885503, -0.890625, -0.046875, 0.984375, 0.5930529142680927)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(180deg)\] at (0.75) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.3333333333333333) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (-1) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (1) should be [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (-1) should be [matrix3d(-0.6413028394192518, -1.0702420910513302, -0.5807595966791961, -18.02447171345163, 0.8211815704840004, 1.0980679097347057, 0.9399408862655454, 22.460730852026064, 0.28421009261178104, -0.5408346238741739, 0.5194791363698213, 3.075163035391172, -2.6875, 2, -1.875, -14.881239394516232)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (2) should be [matrix(13, 0, 6, 3, 12, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(360deg)\] at (0.75) should be [rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0) should be [matrix(3, 0, 0, 5, 0, -6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(180deg)\] to [none\] at (2) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.75) should be [matrix3d(0.6861191524977764, -0.18025672746204927, -0.8710297237546482, 0.6072134247444672, 0.2819931018922366, 0.27778974607679663, -0.6540128246146626, 0.5063632314069845, 0.5509562084361049, -0.3215202993119732, 0.5459062603735321, 2.8697154005492105, -1.3046875, 0.734375, -0.375, 1.6470169329910096)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (-1) should be [matrix3d(1.9877532948000005, 0.0, 0.0, 0.0, 0.0, 2.7492749567000003, 0.0, 0.0, 0.0, 0.0, 2.5165290423999997, 0.0, 20.2343946258, 21.1087405532, 21.371164870599998, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (-1) should be [matrix3d(1.9877532948000005, 0.0, 0.0, 0.0, 0.0, 2.7492749567000003, 0.0, 0.0, 0.0, 0.0, 2.5165290423999997, 0.0, 20.2343946258, 21.1087405532, 21.371164870599998, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (1) should be [matrix(7, 0, 1, 1, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.75) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.75) should be [matrix3d(0.35007413226026135, 0.7254385504141292, -0.4977009150941454, 0.09582061929004702, -1.1027525038949482, -0.5884810398827429, 0.4516829688651701, 0.5447944343861767, -0.68717798815684, 0.2657772247405681, 0.5465690479810023, 1.0836207863885503, -0.890625, -0.046875, 0.984375, 0.5930529142680927)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(180deg)\] at (0.25) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.75) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(360deg)\] at (1) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(180deg)\] to [none\] at (-1) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(360deg)\] at (0.75) should be [rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(360deg)\] at (-1) should be [rotate(-360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(180deg)\] to [none\] at (0) should be [rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.25) should be [matrix(2.5, 0, 0.31, 1.25, 1.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.75) should be [matrix3d(1.0093457700315165, -0.12746048375025829, -0.24746788943106088, 1.3202120308857304, 0.6128364656690982, 0.7600694601651116, -0.22233359857303325, 1.4081483224940277, 0.21669805381113447, -0.3786082265932788, 0.908354523914928, 0.6747509193960347, -0.3359375, 0.25, -0.234375, 2.4888661932358964)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.5) should be [matrix(2, 0, 0, 3, 0, -3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (-1) should be [matrix(-5, 0, -13, 13, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0.75) should be [matrix(1.5, 0, 0, 2, 0, -1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (-1) should be [matrix3d(-0.6299594065765657, -0.10825090106268696, -0.20133311671001855, 5.485724217214554, 6.358051978686152, 0.16496896269344588, 1.5760051143537075, -54.21568355620423, 0.7106057459805782, -1.1596356050622005, -0.11495342545397585, -4.913752963990824, -1.03125, -1.125, 3.5625, -5.901513951904114)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (-1) should be [matrix(-5, 0, 0, 0, -6, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.75) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (2) should be [matrix(13, 0, 6, 3, 12, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.75) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.25) should be [matrix3d(0.7912976716694541, -0.4517927901159618, -0.6868745974719376, 1.2522201536338506, 0.7952183069582651, 0.06340410955800829, -0.7956629784232128, 2.2561737435012983, 0.345639443327071, -0.8934490945546473, 0.830131443385676, 1.2606901484983566, -1.0078125, 0.75, -0.703125, 2.4888661932358946)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (2) should be [matrix3d(3.0761619932999995, 0.0, 0.0, 0.0, 0.0, 2.3221331858, 0.0, 0.0, 0.0, 0.0, 2.9442666928000003, 0.0, 20.5331850252, 19.7952290231, 20.002012795600002, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (2) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [rotate(180deg)\] at (2) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (1) should be [matrix(1, 0, 0, 1, 0, -6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.25) should be [matrix3d(2.441256919175, 0.0, 0.0, 0.0, 0.0, 2.571299218825, 0.0, 0.0, 0.0, 0.0, 2.6947530634, 0.0, 20.35889062555, 20.561444082325, 20.800684839349998, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.25) should be [matrix3d(0.9041890962319094, 0.3522701519297133, -0.15240204298176957, -0.1428256720529315, -0.7579798772527586, 0.6803606288839232, -0.05133336076757235, 0.37904689530895724, -0.1957679784745485, 0.38554138029509327, 0.8226186974340638, 0.3370288143441876, -0.296875, -0.015625, 0.328125, 0.5930529142680923)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(180deg)\] at (0.75) should be [rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (-1) should be [matrix(0, 5, 1, 0, -6, -12)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.75) should be [matrix(5.5, 0, 1.31, 1.75, 4.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.25) should be [matrix3d(0.33652832679595723, 0.55254445148386, -0.7544724447833296, 0.22700224951774267, -0.69720168363685, -0.036373245768780864, 0.28149188169180933, -0.2845156818045006, -0.24737156018941048, 0.31207160370190334, 0.4564821058052897, 0.9220853089096839, -1.2265625, 0.203125, 0.75, 1.647016932991011)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [rotate(180deg)\] at (2) should be [rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.6666666666666666) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (2) should be [matrix3d(0.39048513570444376, 0.14780794797065988, 0.6963068100217401, -4.857907861239344, -2.967682789284791, 0.6004978769584385, -3.5472376016872444, 26.675324787979896, -2.5953724498995308, 1.6280843851961373, 0.8163834310586356, 9.001735256585825, 1.34375, -1, 0.9375, -14.881239394516227)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.75) should be [matrix3d(0.35007413226026135, 0.7254385504141292, -0.4977009150941454, 0.09582061929004702, -1.1027525038949482, -0.5884810398827429, 0.4516829688651701, 0.5447944343861767, -0.68717798815684, 0.2657772247405681, 0.5465690479810023, 1.0836207863885503, -0.890625, -0.046875, 0.984375, 0.5930529142680927)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.25) should be [matrix3d(0.33652832679595723, 0.55254445148386, -0.7544724447833296, 0.22700224951774267, -0.69720168363685, -0.036373245768780864, 0.28149188169180933, -0.2845156818045006, -0.24737156018941048, 0.31207160370190334, 0.4564821058052897, 0.9220853089096839, -1.2265625, 0.203125, 0.75, 1.647016932991011)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.75) should be [matrix3d(1.0093457700315165, -0.12746048375025829, -0.24746788943106088, 1.3202120308857304, 0.6128364656690982, 0.7600694601651116, -0.22233359857303325, 1.4081483224940277, 0.21669805381113447, -0.3786082265932788, 0.908354523914928, 0.6747509193960347, -0.3359375, 0.25, -0.234375, 2.4888661932358964)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (-1) should be [matrix(5, 0, 0, 9, 0, -12)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.5) should be [matrix(4, 0, 2, 4, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (0) should be [matrix(3, 0, 0, 5, 0, -6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (-1) should be [matrix3d(-0.0000000000000002377810622383943, -1.0671050586638147, -0.08972656766237302, 1.3740432449326199, 0.98484601036295, -2.653201092395309, 0.6753819540610847, 3.6127240080250744, -2.7988839807429846, -1.2090004194153336, -0.5183744226115445, -0.7936088631686278, 1.1875, 0.0625, -1.3125, 5.340768914473683)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (2) should be [matrix(-13, 0, 0, -1, 12, 6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.3333333333333333) should be [matrix(2.5000000000000004, 4.330127018922193, -0.8660254037844386, 0.5000000000000001, 4, -2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (-1) should be [matrix3d(-0.6299594065765657, -0.10825090106268696, -0.20133311671001855, 5.485724217214554, 6.358051978686152, 0.16496896269344588, 1.5760051143537075, -54.21568355620423, 0.7106057459805782, -1.1596356050622005, -0.11495342545397585, -4.913752963990824, -1.03125, -1.125, 3.5625, -5.901513951904114)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [rotate(360deg)\] at (0.25) should be [rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.3333333333333333) should be [matrix(3, 0, 1.6667, 5, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (2) should be [matrix(13, 0, 6, 3, 12, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.75) should be [matrix(5.5, 0, 1.31, 1.75, 4.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0.25) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(180deg)\] to [none\] at (1) should be [rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.3333333333333333) should be [matrix(3, 0, 1.6667, 5, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0.5) should be [matrix(2.8284271247461903, 2.82842712474619, -0.7071067811865475, 0.7071067811865476, 3, -3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (2) should be [matrix3d(3.0761619932999995, 0.0, 0.0, 0.0, 0.0, 2.3221331858, 0.0, 0.0, 0.0, 0.0, 2.9442666928000003, 0.0, 20.5331850252, 19.7952290231, 20.002012795600002, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(360deg)\] at (-1) should be [rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (0.25) should be [matrix3d(0.9041890962319094, 0.3522701519297133, -0.15240204298176957, -0.1428256720529315, -0.7579798772527586, 0.6803606288839232, -0.05133336076757235, 0.37904689530895724, -0.1957679784745485, 0.38554138029509327, 0.8226186974340638, 0.3370288143441876, -0.296875, -0.015625, 0.328125, 0.5930529142680923)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (2) should be [matrix3d(-0.5844534449366048, -0.42278005999296053, -0.4650580659922564, -0.6817595809063256, 0.9156938760088464, 0.3851647027225889, 0.9244443507516923, 0.7218225020358241, -0.0803568793574344, 0.1719974850210706, -0.49676609633513097, -0.25968177786904373, -2.375, -0.125, 2.625, 5.340768914473685)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.5) should be [matrix(4, 0, 2, 4, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (0.75) should be [matrix3d(1.0093457700315165, -0.12746048375025829, -0.24746788943106088, 1.3202120308857304, 0.6128364656690982, 0.7600694601651116, -0.22233359857303325, 1.4081483224940277, 0.21669805381113447, -0.3786082265932788, 0.908354523914928, 0.6747509193960347, -0.3359375, 0.25, -0.234375, 2.4888661932358964)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.75) should be [matrix3d(1.211140527138306, 0, -0.30925494906815365, 0, 0, 1.5, 0, 0, 0.43295692869541513, 0, 1.6955967379936283, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.25) should be [matrix(2.5, 0, 0.31, 1.25, 1.5, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.5) should be [matrix(4, 0, 2, 4, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [rotate(180deg)\] at (-1) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(1, 0, 0, 7, 0, 0)\] to [matrix(7, 0, 1, 1, 0, 0)\] at (0.3333333333333333) should be [matrix(3, 0, 1.6667, 5, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (2) should be [matrix3d(0, 0, 0, 0, 0, -1, 0, 0, 1.682941969615793, 0, -1.0806046117362795, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] to [none\] at (0.25) should be [matrix3d(1.2804555205291865, 0, -1.1928678300408346, 0, 0, 2.5, 0, 0, 2.215325970075836, 0, 2.377988823839918, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [none\] to [matrix3d(1.0806046117362795, 0, -1.682941969615793, 0, 0, 3, 0, 0, 3.365883939231586, 0, 2.161209223472559, 0, 0, 0, 0, 1)\] at (0) should be [matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] at (-1) should be [matrix3d(-0.0000000000000002377810622383943, -1.0671050586638147, -0.08972656766237302, 1.3740432449326199, 0.98484601036295, -2.653201092395309, 0.6753819540610847, 3.6127240080250744, -2.7988839807429846, -1.2090004194153336, -0.5183744226115445, -0.7936088631686278, 1.1875, 0.0625, -1.3125, 5.340768914473683)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(0, 0.6875, -0.625, 0.3125, -0.6666666666666665, -1, 0.8333333333333334, 0.125, -0.6666666666666665, 0, 0.5, 1.0625, -1.1875, -0.0625, 1.3125, 1)\] to [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] at (0.75) should be [matrix3d(0.6861191524977764, -0.18025672746204927, -0.8710297237546482, 0.6072134247444672, 0.2819931018922366, 0.27778974607679663, -0.6540128246146626, 0.5063632314069845, 0.5509562084361049, -0.3215202993119732, 0.5459062603735321, 2.8697154005492105, -1.3046875, 0.734375, -0.375, 1.6470169329910096)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix3d(0.571428571428571, -0.625, -0.8333333333333346, -0.66666666666669, 0.5, -0.1875, -0.8125, 0.3125, 0.34375, -1, 0.8333333333333327, 1.34375, -1.34375, 1, -0.9375, 1)\] to [none\] at (-1) should be [matrix3d(-0.6413028394192518, -1.0702420910513302, -0.5807595966791961, -18.02447171345163, 0.8211815704840004, 1.0980679097347057, 0.9399408862655454, 22.460730852026064, 0.28421009261178104, -0.5408346238741739, 0.5194791363698213, 3.075163035391172, -2.6875, 2, -1.875, -14.881239394516232)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [none\] to [matrix(7, 0, 2, 2, 6, 0)\] at (0.5) should be [matrix(4, 0, 0.75, 1.5, 3, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (1) should be [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix(1, 0, 0, 1, 0, -6)\] to [matrix(0, 7, -1, 0, 6, 0)\] at (0.3333333333333333) should be [matrix(2.598076211353316, 1.4999999999999998, -0.49999999999999994, 0.8660254037844387, 2, -4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [matrix3d(2.3505561943, 0.0, 0.0, 0.0, 0.0, 2.6068943664, 0.0, 0.0, 0.0, 0.0, 2.6591082592, 0.0, 20.3339914256, 20.6709033765, 20.9147808456, 1.0)\] to [matrix3d(2.7133590938, 0.0, 0.0, 0.0, 0.0, 2.4645137761, 0.0, 0.0, 0.0, 0.0, 2.801687476, 0.0, 20.4335882254, 20.2330661998, 20.4583968206, 1.0)\] at (0.75) should be [matrix3d(2.622658368925, 0.0, 0.0, 0.0, 0.0, 2.500108923675, 0.0, 0.0, 0.0, 0.0, 2.7660426718, 0.0, 20.408689025450002, 20.342525493975, 20.572492826850002, 1.0)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(180deg)\] to [none\] at (2) should be [rotate(-180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [matrix(0, 7, -1, 0, 6, 0)\] to [matrix(1, 0, 0, 1, 0, -6)\] at (0) should be [matrix(0, 7, -1, 0, 6, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [matrix(3, 0, 0, 5, 0, -6)\] to [none\] at (2) should be [matrix(-1, 0, 0, -3, 0, 6)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [rotate(180deg)\] to [none\] at (0.75) should be [rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [rotate(180deg)\] to [none\] at (0.25) should be [rotate(135deg)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini
index bc7061336f3..0e2282f22af 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-interpolation-006.html.ini
@@ -1,5 +1,238 @@
[transform-interpolation-006.html]
- expected: ERROR
[transform interpolation]
expected: FAIL
+ [CSS Transitions: property <transform> from [inherit\] to [translate(20px)\] at (0.75) should be [translate(22.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from neutral to [translate(20px)\] at (0.75) should be [translate(17.5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [unset\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [initial\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [initial\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [initial\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [unset\] to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [inherit\] to [translate(20px)\] at (-1) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [inherit\] to [translate(20px)\] at (0.25) should be [translate(27.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [unset\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [unset\] to [translate(20px)\] at (0) should be [translate(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [unset\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from neutral to [translate(20px)\] at (2) should be [translate(30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from neutral to [translate(20px)\] at (-1) should be [translate(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from neutral to [translate(20px)\] at (0.25) should be [translate(12.5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from neutral to [translate(20px)\] at (0.25) should be [translate(12.5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [unset\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [inherit\] to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from neutral to [translate(20px)\] at (-1) should be [translate(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [unset\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from neutral to [translate(20px)\] at (0.75) should be [translate(17.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [initial\] to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [unset\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [inherit\] to [translate(20px)\] at (2) should be [translate(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from neutral to [translate(20px)\] at (2) should be [translate(30px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [initial\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [inherit\] to [translate(20px)\] at (0.25) should be [translate(27.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [inherit\] to [translate(20px)\] at (0.75) should be [translate(22.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [unset\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [inherit\] to [translate(20px)\] at (-1) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [unset\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [initial\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [initial\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [unset\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [initial\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [unset\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from neutral to [translate(20px)\] at (0) should be [translate(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [inherit\] to [translate(20px)\] at (0.25) should be [translate(27.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [initial\] to [translate(20px)\] at (0) should be [translate(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [unset\] to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [initial\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [unset\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [initial\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [initial\] to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from neutral to [translate(20px)\] at (0.25) should be [translate(12.5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from neutral to [translate(20px)\] at (0.75) should be [translate(17.5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [inherit\] to [translate(20px)\] at (0.75) should be [translate(22.5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from neutral to [translate(20px)\] at (2) should be [translate(30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [inherit\] to [translate(20px)\] at (0) should be [translate(30px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [initial\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [inherit\] to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [unset\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [inherit\] to [translate(20px)\] at (0) should be [translate(30px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [unset\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [unset\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from neutral to [translate(20px)\] at (0.75) should be [translate(17.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [unset\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [unset\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [unset\] to [translate(20px)\] at (0) should be [translate(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [inherit\] to [translate(20px)\] at (2) should be [translate(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from neutral to [translate(20px)\] at (-1) should be [translate(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [inherit\] to [translate(20px)\] at (0.25) should be [translate(27.5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from neutral to [translate(20px)\] at (2) should be [translate(30px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [inherit\] to [translate(20px)\] at (-1) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from neutral to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [initial\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from neutral to [translate(20px)\] at (-1) should be [translate(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [initial\] to [translate(20px)\] at (0.25) should be [translate(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [inherit\] to [translate(20px)\] at (-1) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from neutral to [translate(20px)\] at (0.25) should be [translate(12.5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [initial\] to [translate(20px)\] at (0.75) should be [translate(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from neutral to [translate(20px)\] at (1) should be [translate(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [initial\] to [translate(20px)\] at (0) should be [translate(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform> from [inherit\] to [translate(20px)\] at (2) should be [translate(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [initial\] to [translate(20px)\] at (-1) should be [translate(-20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform> from [inherit\] to [translate(20px)\] at (0.75) should be [translate(22.5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <transform> from [initial\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform> from [initial\] to [translate(20px)\] at (2) should be [translate(40px)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini
index 6c8104cccca..9f27223c186 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/transform-origin-interpolation.html.ini
@@ -1,5 +1,469 @@
[transform-origin-interpolation.html]
- expected: ERROR
[transform-origin interpolation]
expected: FAIL
+ [CSS Transitions: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.6) should be [60% 110% 2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [center center\] to [0% 100px\] at (1) should be [0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [center center\] to [0% 100px\] at (1.5) should be [-12.5px 137.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [center center\] to [0% 100px\] at (1) should be [0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.6) should be [60% 110% 2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [top left\] to [bottom right\] at (-0.3) should be [-15px -15px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0) should be [0% 50% 5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [center center\] to [0% 100px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [top left\] to [bottom right\] at (0.6) should be [30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [top left\] to [bottom right\] at (1) should be [50px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [center center\] to [0% 100px\] at (0.6) should be [10px 70px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from neutral to [20px 20px\] at (0) should be [10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [center center\] to [0% 100px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (1.5) should be [150% 200% -2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [center center\] to [0% 100px\] at (-0.3) should be [32.5px 2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [top left\] to [bottom right\] at (1) should be [50px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [top left\] to [bottom right\] at (1.5) should be [75px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [center center\] to [0% 100px\] at (0.6) should be [10px 70px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [center center\] to [0% 100px\] at (0.3) should be [17.5px 47.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [center center\] to [0% 100px\] at (1) should be [0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [top left\] to [bottom right\] at (-0.3) should be [-15px -15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.3) should be [30% 80% 3.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [top left\] to [bottom right\] at (1.5) should be [75px 75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [center center\] to [0% 100px\] at (0.3) should be [17.5px 47.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (1) should be [100% 150% 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.6) should be [60% 110% 2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [top left\] to [bottom right\] at (0) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [center center\] to [0% 100px\] at (0.3) should be [17.5px 47.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [top left\] to [bottom right\] at (0.6) should be [30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0) should be [0% 50% 5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [inherit\] to [20px 20px\] at (0.3) should be [27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [top left\] to [bottom right\] at (0.3) should be [15px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (0) should be [30px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [center center\] to [0% 100px\] at (1.5) should be [-12.5px 137.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [center center\] to [0% 100px\] at (-0.3) should be [32.5px 2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [center center\] to [0% 100px\] at (0.6) should be [10px 70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [top left\] to [bottom right\] at (0.3) should be [15px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (-0.3) should be [-30% 20% 6.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [inherit\] to [20px 20px\] at (1.5) should be [15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [center center\] to [0% 100px\] at (1.5) should be [-12.5px 137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [top left\] to [bottom right\] at (-0.3) should be [-15px -15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from neutral to [20px 20px\] at (1.5) should be [25px 15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [top left\] to [bottom right\] at (0.6) should be [30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (-0.3) should be [-30% 20% 6.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (1.5) should be [150% 200% -2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [center center\] to [0% 100px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [center center\] to [0% 100px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (-0.3) should be [33px 7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [top left\] to [bottom right\] at (0) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (-0.3) should be [-30% 20% 6.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [top left\] to [bottom right\] at (-0.3) should be [-15px -15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (-0.3) should be [-30% 20% 6.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [center center\] to [0% 100px\] at (-0.3) should be [32.5px 2.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [top left\] to [bottom right\] at (1) should be [50px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [unset\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [top left\] to [bottom right\] at (1.5) should be [75px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [top left\] to [bottom right\] at (0.6) should be [30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [top left\] to [bottom right\] at (0) should be [0px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [initial\] to [20px 20px\] at (1.5) should be [17.5px 17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from neutral to [20px 20px\] at (-0.3) should be [7px 33px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (1.5) should be [150% 200% -2.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [top left\] to [bottom right\] at (1) should be [50px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from neutral to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [center center\] to [0% 100px\] at (0.6) should be [10px 70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [center center\] to [0% 100px\] at (0.3) should be [17.5px 47.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.3) should be [30% 80% 3.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [top left\] to [bottom right\] at (0) should be [0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [unset\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [top left\] to [bottom right\] at (0.3) should be [15px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [center center\] to [0% 100px\] at (1) should be [0px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.3) should be [30% 80% 3.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [initial\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [unset\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [unset\] to [20px 20px\] at (0) should be [25px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [initial\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [unset\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [center center\] to [0% 100px\] at (1.5) should be [-12.5px 137.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.6) should be [60% 110% 2px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (1) should be [100% 150% 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [inherit\] to [20px 20px\] at (0.6) should be [24px 16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (0.3) should be [30% 80% 3.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [top left\] to [bottom right\] at (1.5) should be [75px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [top left\] to [bottom right\] at (0.3) should be [15px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [center center\] to [0% 100px\] at (-0.3) should be [32.5px 2.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <transform-origin> from [0% 50% 5px\] to [100% 150% 0px\] at (1.5) should be [150% 200% -2.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from neutral to [20px 20px\] at (0.6) should be [16px 24px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [initial\] to [20px 20px\] at (0.6) should be [22px 22px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from neutral to [20px 20px\] at (0.3) should be [13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <transform-origin> from [initial\] to [20px 20px\] at (0.3) should be [23.5px 23.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <transform-origin> from [initial\] to [20px 20px\] at (-0.3) should be [26.5px 26.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <transform-origin> from [unset\] to [20px 20px\] at (1) should be [20px 20px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini
index bffca51359d..8987874f01c 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/translate-interpolation.html.ini
@@ -1,5 +1,4 @@
[translate-interpolation.html]
- expected: ERROR
[Animation between "220px 240px 260px" and "300px 400px 500px" at progress -1]
expected: FAIL
@@ -75,3 +74,1002 @@
[translate interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px\] to [100px 50px\] at (2) should be [300px 150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [200px 100px 200px\] at (-1) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px\] to [100px\] at (0.25) should be [-50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [inherit\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (0.75) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100%\] to [100%\] at (2) should be [300%\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [initial\] at (0) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [initial\] at (-1) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 200px\] to [inherit\] at (0.75) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100%\] to [100%\] at (-1) should be [-300%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [initial\] at (2) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 400px\] to [initial\] at (-1) should be [400px 200px 800px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (2) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (0.75) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from neutral to [20px\] at (2) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [unset\] to [20px\] at (0.25) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [200px 100px 200px\] at (0.25) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px\] to [100px\] at (0.25) should be [-50px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [none\] at (0.875) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0.25) should be [150px 75px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (0.25) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [inherit\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [unset\] to [20px\] at (0.75) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0) should be [200px 100px 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [unset\] to [20px\] at (2) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [initial\] at (0) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100%\] to [100%\] at (0) should be [-100%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (0.25) should be [-50px -25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (0.75) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (1) should be [240% 160%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px\] to [100px\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [initial\] at (0.75) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [0px\] to [-100px -50px 100px\] at (2) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (2) should be [-200px -100px -400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (-1) should be [-300px -150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100%\] to [100%\] at (0.75) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [unset\] to [20px\] at (0.75) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [inherit\] at (0.75) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [inherit\] at (0.25) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px\] to [100px\] at (-1) should be [-300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px\] to [100px 50px\] at (-1) should be [-300px -150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [200px 100px 200px\] at (1) should be [200px 100px 200px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (2) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [8px 80% 800px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [inherit\] at (0.25) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [8px 80% 800px\] at (-1) should be [-8px -80% -800px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.125) should be [230px 260px 290px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px\] to [100px\] at (-1) should be [-300px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100%\] to [100%\] at (0.75) should be [50%\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (0.75) should be [50px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (2) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [inherit\] at (-1) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [480px 400px 320px\] to [240% 160%\] at (2) should be [calc(480% - 480px) calc(320% - 400px) -320px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [unset\] to [20px\] at (-1) should be [-20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [200px 100px 200px\] at (-1) should be [-200px -100px -200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 200px\] to [inherit\] at (0.25) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (0) should be [-100px -50px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 400px\] to [initial\] at (-1) should be [400px 200px 800px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [none\] at (-1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from neutral to [20px\] at (2) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 400px\] to [initial\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [8px 80% 800px\] at (2) should be [16px 160% 1600px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [unset\] to [20px\] at (2) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [initial\] at (-1) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 200px\] to [inherit\] at (-1) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (-1) should be [calc(960px - 240%) calc(800px - 160%) 640px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [none\] at (0.125) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100%\] to [100%\] at (0.25) should be [-50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [unset\] to [20px\] at (2) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [8px 80% 800px\] at (0.125) should be [1px 10% 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0.75) should be [50px 25px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (0.25) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [inherit\] at (-1) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (1) should be [200px 100px 200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100%\] to [100%\] at (0.75) should be [50%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 200px\] to [inherit\] at (2) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [8px 80% 800px\] at (1) should be [8px 80% 800px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100%\] to [100%\] at (-1) should be [-300%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (1) should be [-100px -50px 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px\] to [100px\] at (0) should be [-100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [0px\] to [-100px -50px 100px\] at (-1) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0) should be [220px 240px 260px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (-1) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [8px 80% 800px\] at (1) should be [8px 80% 800px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [200px 100px 200px\] at (2) should be [400px 200px 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [unset\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px 100px\] to [0px\] at (2) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (-1) should be [140px 80px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (1) should be [240% 160%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [480px 400px 320px\] to [240% 160%\] at (2) should be [calc(480% - 480px) calc(320% - 400px) -320px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (0.75) should be [50px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (-1) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [200px 100px 200px\] at (-1) should be [-200px -100px -200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 400px\] to [initial\] at (-1) should be [400px 200px 800px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0) should be [200px 100px 400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [0px\] to [-100px -50px 100px\] at (-1) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [unset\] to [20px\] at (0.25) should be [5px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0.25) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (2) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [unset\] to [20px\] at (0.25) should be [5px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px\] to [100px\] at (2) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (2) should be [calc(480% - 480px) calc(320% - 400px) -320px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.875) should be [calc(210% + 60px) calc(140% + 50px) 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (-1) should be [calc(960px - 240%) calc(800px - 160%) 640px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (-1) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px\] to [100px 50px\] at (0.75) should be [50px 25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0) should be [200px 100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [unset\] to [20px\] at (2) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px\] to [100px\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [none\] to [8px 80% 800px\] at (-1) should be [-8px -80% -800px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (1) should be [200px 100px 200px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (-1) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [initial\] at (2) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [200px 100px 200px\] at (2) should be [400px 200px 400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [initial\] at (2) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [unset\] to [20px\] at (-1) should be [-20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (1) should be [100px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (-1) should be [400px 200px 800px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from neutral to [20px\] at (0.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.875) should be [calc(210% + 60px) calc(140% + 50px) 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [none\] at (0.125) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0) should be [200px 100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100%\] to [100%\] at (2) should be [300%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0) should be [220px 240px 260px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 200px\] to [inherit\] at (0.75) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [none\] at (0.875) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [200px 100px 200px\] at (0.75) should be [150px 75px 150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (-1) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [200px 100px 200px\] at (2) should be [400px 200px 400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100%\] to [100%\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [initial\] at (0.75) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [none\] at (-1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from neutral to [20px\] at (2) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px\] to [100px 50px\] at (2) should be [300px 150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.125) should be [230px 260px 290px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0.75) should be [50px 25px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [unset\] to [20px\] at (0.25) should be [5px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (0) should be [-100px -50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [8px 80% 800px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [initial\] at (-1) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (0.75) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.875) should be [290px 380px 470px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px\] to [100px 50px\] at (0.25) should be [-50px -25px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [8px 80% 800px\] at (2) should be [16px 160% 1600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [200px 100px 200px\] at (-1) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.125) should be [230px 260px 290px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [initial\] at (0.25) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [0px\] to [-100px -50px 100px\] at (0.25) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100%\] to [100%\] at (0.25) should be [-50%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [0px\] to [-100px -50px 100px\] at (0.25) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [inherit\] at (0.75) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100%\] to [100%\] at (2) should be [300%\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from neutral to [20px\] at (0.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0) should be [480px 400px 320px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (0) should be [-100px -50px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 200px\] to [inherit\] at (2) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [8px 80% 800px\] at (0.875) should be [7px 70% 700px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [initial\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px\] to [100px\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (2) should be [380px 560px 740px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100%\] to [100%\] at (0.25) should be [-50%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from neutral to [20px\] at (2) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px\] to [100px\] at (2) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from neutral to [20px\] at (0.25) should be [12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (0.25) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (2) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [initial\] at (-1) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (0.75) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [200px 100px 200px\] at (2) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100%\] to [100%\] at (0.75) should be [50%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [200px 100px 200px\] at (1) should be [200px 100px 200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (0) should be [-100px -50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [200px 100px 200px\] at (0.75) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (2) should be [380px 560px 740px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.875) should be [290px 380px 470px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [initial\] at (0.75) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (2) should be [300px 150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from neutral to [20px\] at (0.75) should be [17.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [initial\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (2) should be [calc(480% - 480px) calc(320% - 400px) -320px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (2) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px 100px\] to [0px\] at (0.75) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [inherit\] at (0.25) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px\] to [100px\] at (2) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.875) should be [290px 380px 470px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [480px 400px 320px\] to [240% 160%\] at (-1) should be [calc(960px - 240%) calc(800px - 160%) 640px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px\] to [100px\] at (0.25) should be [-50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [unset\] to [20px\] at (-1) should be [-20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from neutral to [20px\] at (-1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (-1) should be [140px 80px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [inherit\] at (2) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [200px 100px 200px\] at (0.75) should be [150px 75px 150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px\] to [100px\] at (-1) should be [-300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [unset\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [200px 100px 200px\] at (0.25) should be [50px 25px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (2) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (1) should be [300px 400px 500px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0) should be [480px 400px 320px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [0px\] to [-100px -50px 100px\] at (0.75) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from neutral to [20px\] at (0.75) should be [17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (0.25) should be [-50px -25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (-1) should be [-300px -150px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (1) should be [100px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px -50px 100px\] to [0px\] at (0.75) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 400px\] to [initial\] at (0.75) should be [50px 25px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.875) should be [calc(210% + 60px) calc(140% + 50px) 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.125) should be [calc(420px + 30%) calc(350px + 20%) 280px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px 100px\] to [0px\] at (-1) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [inherit\] at (2) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 400px\] to [initial\] at (0.25) should be [150px 75px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (2) should be [380px 560px 740px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px -50px\] to [100px 50px\] at (2) should be [300px 150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0.75) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [8px 80% 800px\] at (0.125) should be [1px 10% 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100px\] to [100px\] at (0) should be [-100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (2) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [inherit\] at (1) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.875) should be [calc(210% + 60px) calc(140% + 50px) 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [200px 100px 200px\] at (-1) should be [-200px -100px -200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 200px\] to [inherit\] at (-1) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.125) should be [calc(420px + 30%) calc(350px + 20%) 280px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (-1) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [none\] to [8px 80% 800px\] at (0.875) should be [7px 70% 700px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [unset\] to [20px\] at (0.75) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [none\] to [8px 80% 800px\] at (2) should be [16px 160% 1600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [inherit\] to [200px 100px 200px\] at (2) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (0.25) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [200px 100px 200px\] at (0.25) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [initial\] at (0.25) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [inherit\] to [200px 100px 200px\] at (0.75) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [8px 80% 800px\] at (0.875) should be [7px 70% 700px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px\] to [100px 50px\] at (0.75) should be [50px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (0.25) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px 100px\] to [0px\] at (2) should be [100px 50px -100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [200px 100px 200px\] at (0.25) should be [50px 25px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [200px 100px 200px\] at (0.25) should be [50px 25px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [200px 100px 200px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100%\] to [100%\] at (2) should be [300%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [none\] to [8px 80% 800px\] at (0.125) should be [1px 10% 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [200px 100px 200px\] at (0.25) should be [50px 25px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px\] to [100px 50px\] at (-1) should be [-300px -150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [none\] to [8px 80% 800px\] at (0.875) should be [7px 70% 700px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [inherit\] at (1) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [inherit\] at (-1) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0.75) should be [125px 175px 275px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px\] to [100px\] at (0.25) should be [-50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.125) should be [calc(420px + 30%) calc(350px + 20%) 280px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [8px 80% 800px\] at (-1) should be [-8px -80% -800px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [0px\] to [-100px -50px 100px\] at (0.75) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (0) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [200px 100px 200px\] at (2) should be [400px 200px 400px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0) should be [480px 400px 320px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 400px\] to [initial\] at (2) should be [-200px -100px -400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [none\] to [8px 80% 800px\] at (0.125) should be [1px 10% 100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100%\] to [100%\] at (0) should be [-100%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100%\] to [100%\] at (1) should be [100%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [none\] at (2) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 400px\] to [initial\] at (0.25) should be [150px 75px 300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0) should be [480px 400px 320px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px\] to [100px\] at (2) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (0.25) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [-100%\] to [100%\] at (-1) should be [-300%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px 100px\] to [0px\] at (-1) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 200px\] to [inherit\] at (0.25) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (1) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (1) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [-100px\] to [100px\] at (-1) should be [-300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (0.25) should be [175px 125px 225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [inherit\] at (0.75) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [inherit\] at (2) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [200px 100px 200px\] at (-1) should be [-200px -100px -200px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 400px\] to [initial\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.875) should be [290px 380px 470px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [initial\] at (2) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100%\] to [100%\] at (-1) should be [-300%\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [initial\] at (0.25) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [200px 100px 200px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [unset\] to [20px\] at (-1) should be [-20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (-1) should be [140px 80px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px\] to [100px\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (-1) should be [0px 300px 400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [200px 100px 200px\] at (0.75) should be [150px 75px 150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [initial\] to [200px 100px 200px\] at (0.75) should be [150px 75px 150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [200px 100px 400px\] to [initial\] at (0.75) should be [50px 25px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [200px 100px 400px\] to [initial\] at (2) should be [-200px -100px -400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [480px 400px 320px\] to [240% 160%\] at (-1) should be [calc(960px - 240%) calc(800px - 160%) 640px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px\] to [100px 50px\] at (0.25) should be [-50px -25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [0px\] to [-100px -50px 100px\] at (1) should be [-100px -50px 100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100%\] to [100%\] at (0.25) should be [-50%\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [initial\] at (0.75) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [initial\] to [inherit\] at (0.25) should be [25px 50px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [none\] to [8px 80% 800px\] at (2) should be [16px 160% 1600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from neutral to [20px\] at (0.75) should be [17.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (2) should be [380px 560px 740px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [0px\] to [-100px -50px 100px\] at (2) should be [-200px -100px 200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [none\] to [8px 80% 800px\] at (-1) should be [-8px -80% -800px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 400px\] to [initial\] at (2) should be [-200px -100px -400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [inherit\] to [200px 100px 200px\] at (0) should be [100px 200px 300px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [200px 100px 200px\] to [inherit\] at (-1) should be [300px 0px 100px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (1) should be [300px 400px 500px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [200px 100px 400px\] to [initial\] at (0.25) should be [150px 75px 300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [none\] at (2) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from neutral to [20px\] at (0.75) should be [17.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [none\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [inherit\] at (-1) should be [-100px -200px -300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px 100px\] to [0px\] at (0.25) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [-100px -50px 100px\] to [0px\] at (0.75) should be [-25px -12.5px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [inherit\] to [initial\] at (0.25) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [unset\] to [20px\] at (0.75) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from [-100px -50px 100px\] to [0px\] at (0.25) should be [-75px -37.5px 75px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [initial\] to [inherit\] at (0.75) should be [75px 150px 225px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (0.125) should be [230px 260px 290px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <translate> from neutral to [20px\] at (0.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [initial\] to [inherit\] at (2) should be [200px 400px 600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <translate> from [480px 400px 320px\] to [240% 160%\] at (0.125) should be [calc(420px + 30%) calc(350px + 20%) 280px\]]
+ expected: FAIL
+
+ [Web Animations: property <translate> from [none\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <translate> from [220px 240px 260px\] to [300px 400px 500px\] at (-1) should be [140px 80px 20px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/parsing/scale-parsing-valid.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/scale-parsing-valid.html.ini
deleted file mode 100644
index 14663c5a719..00000000000
--- a/tests/wpt/metadata/css/css-transforms/parsing/scale-parsing-valid.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[scale-parsing-valid.html]
- [e.style['scale'\] = "100 200 1" should set the property value]
- expected: FAIL
-
- [e.style['scale'\] = "100 100 1" should set the property value]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini
index 9bfdefbcc40..2e5706ee01d 100644
--- a/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini
@@ -8,12 +8,3 @@
[e.style['translate'\] = "100px calc(10px - 10%)" should set the property value]
expected: FAIL
- [e.style['translate'\] = "100px 200px 0px" should set the property value]
- expected: FAIL
-
- [e.style['translate'\] = "100px 0px 0px" should set the property value]
- expected: FAIL
-
- [e.style['translate'\] = "1px 2px 0" should set the property value]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini b/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini
index 1e38244ddb7..18475bc0495 100644
--- a/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/animations/text-shadow-interpolation.html.ini
@@ -1,5 +1,355 @@
[text-shadow-interpolation.html]
- expected: ERROR
[text-shadow interpolation]
expected: FAIL
+ [CSS Transitions: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0) should be [rgb(255, 165, 0) 30px 10px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0) should be [rgb(0, 0, 0) 15px 10px 5px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0) should be [rgb(0, 0, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (1) should be [rgb(0, 128, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0) should be [rgb(255, 165, 0) 10px 30px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0) should be [rgb(255, 165, 0) 30px 10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0) should be [rgb(0, 0, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0) should be [rgb(255, 165, 0) 30px 10px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0) should be [rgb(255, 165, 0) 30px 10px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px\] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px\] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [black 10px 10px 10px\] to [currentColor 10px 10px 10px\] at (1) should be [rgb(0, 128, 0) 10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (1) should be [rgb(0, 128, 0) 20px 20px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [initial\] to [green 20px 20px 20px\] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (1) should be [rgb(255, 165, 0) -15px -10px 25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-shadow> from [black 15px 10px 5px\] to [orange -15px -10px 25px\] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-shadow> from [unset\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-shadow> from [inherit\] to [green 20px 20px 20px\] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/animations/vertical-align-interpolation.html.ini b/tests/wpt/metadata/css/css-transitions/animations/vertical-align-interpolation.html.ini
index 2a09131aa8e..d5c9dc4982f 100644
--- a/tests/wpt/metadata/css/css-transitions/animations/vertical-align-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/animations/vertical-align-interpolation.html.ini
@@ -1,2 +1,349 @@
[vertical-align-interpolation.html]
- expected: ERROR
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (1) should be [40%\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from neutral to [40px\] at (-0.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [40px\] to [40%\] at (-0.5) should be [calc(60px - 20%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [inherit\] to [40px\] at (-0.5) should be [130px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (0.5) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (0) should be [super\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [40px\] to [40%\] at (1) should be [calc(0px + 40%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [inherit\] to [40px\] at (-0.5) should be [130px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (1.5) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from neutral to [40px\] at (-0.5) should be [-5px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [40px\] to [40%\] at (0) should be [calc(40px + 0%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [inherit\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [40px\] to [40%\] at (1.5) should be [calc(-20px + 60%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (0.6) should be [40%\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from neutral to [40px\] at (-0.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (0.3) should be [super\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [0px\] to [100px\] at (-0.5) should be [-50px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [inherit\] to [40px\] at (0.6) should be [64px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [inherit\] to [40px\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (0.5) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [40px\] to [40%\] at (0) should be [calc(40px + 0%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (1.5) should be [40%\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [40px\] to [40%\] at (-0.5) should be [calc(60px - 20%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from neutral to [40px\] at (-0.5) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (-0.3) should be [super\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (0.5) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (1.5) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [inherit\] to [40px\] at (0.3) should be [82px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (0.5) should be [40%\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (-0.3) should be [super\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [0px\] to [100px\] at (-0.5) should be [-50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [40px\] to [40%\] at (0.3) should be [calc(28px + 12%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [inherit\] to [40px\] at (-0.5) should be [130px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [40px\] to [40%\] at (-0.5) should be [calc(60px - 20%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [inherit\] to [40px\] at (0.3) should be [82px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [inherit\] to [40px\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [40px\] to [40%\] at (1.5) should be [calc(-20px + 60%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (1.5) should be [40%\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [40px\] to [40%\] at (1) should be [calc(0px + 40%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (0.3) should be [super\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from neutral to [40px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [0px\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from neutral to [40px\] at (0.3) should be [19px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [inherit\] to [40px\] at (1.5) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [40px\] to [40%\] at (-0.5) should be [calc(60px - 20%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (0.5) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [inherit\] to [40px\] at (1.5) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [inherit\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [0px\] to [100px\] at (-0.5) should be [-50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (0.6) should be [40%\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from neutral to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [inherit\] to [40px\] at (0.6) should be [64px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from neutral to [40px\] at (0.6) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [0px\] to [100px\] at (1.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (1.5) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [0px\] to [100px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [inherit\] to [40px\] at (0.6) should be [64px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [initial\] to [40px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [40px\] to [40%\] at (0.3) should be [calc(28px + 12%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [inherit\] to [40px\] at (0.3) should be [82px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [inherit\] to [40px\] at (-0.5) should be [130px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [0px\] to [100px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <vertical-align> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [40px\] to [40%\] at (0.3) should be [calc(28px + 12%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [inherit\] to [40px\] at (1.5) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (0) should be [super\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [initial\] to [40px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [40px\] to [40%\] at (1.5) should be [calc(-20px + 60%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [super\] to [40%\] at (1) should be [40%\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [0px\] to [100px\] at (0.6) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [40px\] to [40%\] at (0.3) should be [calc(28px + 12%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [super\] to [40%\] at (0.5) should be [40%\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (0.6) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [40px\] to [40%\] at (1.5) should be [calc(-20px + 60%)\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [unset\] to [40px\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [0px\] to [100px\] at (-0.5) should be [-50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [inherit\] to [40px\] at (0.6) should be [64px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (1.5) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from neutral to [40px\] at (1.5) should be [55px\]]
+ expected: FAIL
+
+ [Web Animations: property <vertical-align> from [unset\] to [40px\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <vertical-align> from [inherit\] to [40px\] at (0.3) should be [82px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <vertical-align> from [0px\] to [100px\] at (0.3) should be [30px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/animations/z-index-interpolation.html.ini b/tests/wpt/metadata/css/css-transitions/animations/z-index-interpolation.html.ini
index 99337227f8d..ab1e0cc76f1 100644
--- a/tests/wpt/metadata/css/css-transitions/animations/z-index-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/animations/z-index-interpolation.html.ini
@@ -1,2 +1,421 @@
[z-index-interpolation.html]
- expected: ERROR
+ [CSS Animations: property <z-index> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from neutral to [5\] at (-0.3) should be [-4\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from neutral to [5\] at (1.5) should be [9\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [2\] to [4\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (1.5) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-2\] to [-4\] at (0.6) should be [-3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from neutral to [5\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from neutral to [5\] at (-0.3) should be [-4\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-5\] to [5\] at (0) should be [-5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [inherit\] to [5\] at (-0.3) should be [18\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from neutral to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [2\] to [4\] at (0) should be [2\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [2\] to [4\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from neutral to [5\] at (1.5) should be [9\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-5\] to [5\] at (1.5) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [inherit\] to [5\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [2\] to [4\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (0.6) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (0.5) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from neutral to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-2\] to [-4\] at (0.3) should be [-3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-2\] to [-4\] at (-0.3) should be [-1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-5\] to [5\] at (0.6) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-5\] to [5\] at (0.3) should be [-2\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-2\] to [-4\] at (-0.3) should be [-1\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [inherit\] to [5\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-2\] to [-4\] at (-0.3) should be [-1\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [2\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (1.5) should be [-5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [inherit\] to [5\] at (0.3) should be [12\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (0) should be [-2\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [inherit\] to [5\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (1) should be [-4\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (0.3) should be [-3\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-5\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from neutral to [5\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [inherit\] to [5\] at (0.6) should be [9\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-2\] to [-4\] at (1.5) should be [-5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from neutral to [5\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [2\] to [4\] at (0) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [inherit\] to [5\] at (-0.3) should be [18\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from neutral to [5\] at (0.6) should be [2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [inherit\] to [5\] at (0) should be [15\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (1) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-5\] to [5\] at (0.6) should be [1\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-5\] to [5\] at (1.5) should be [10\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from neutral to [5\] at (1.5) should be [9\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [2\] to [4\] at (1) should be [4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from neutral to [5\] at (1.5) should be [9\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [inherit\] to [5\] at (0.3) should be [12\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [inherit\] to [5\] at (0.6) should be [9\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-5\] to [5\] at (-0.3) should be [-8\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-5\] to [5\] at (1.5) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from neutral to [5\] at (0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (1.5) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [inherit\] to [5\] at (0.3) should be [12\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (0.6) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-5\] to [5\] at (0.6) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-2\] to [-4\] at (0.3) should be [-3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-2\] to [-4\] at (0.6) should be [-3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-2\] to [-4\] at (1.5) should be [-5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-5\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-5\] to [5\] at (-0.3) should be [-8\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from neutral to [5\] at (-0.3) should be [-4\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-5\] to [5\] at (0.3) should be [-2\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (0.6) should be [-3\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (-0.3) should be [-1\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-5\] to [5\] at (-0.3) should be [-8\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [2\] to [4\] at (1.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [inherit\] to [5\] at (1.5) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-2\] to [-4\] at (1.5) should be [-5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [2\] to [4\] at (0.3) should be [3\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [-2\] to [-4\] at (0.3) should be [-3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from neutral to [5\] at (0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-5\] to [5\] at (0.6) should be [1\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-2\] to [-4\] at (0.1) should be [-2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-5\] to [5\] at (1.5) should be [10\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-5\] to [5\] at (0.3) should be [-2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [-5\] to [5\] at (0) should be [-5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from neutral to [5\] at (0) should be [-2\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [inherit\] to [5\] at (0) should be [15\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (-0.3) should be [unset\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (0.6) should be [5\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [unset\] to [5\] at (0.3) should be [unset\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [inherit\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [inherit\] to [5\] at (-0.3) should be [18\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (0.6) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-2\] to [-4\] at (1) should be [-4\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [-5\] to [5\] at (-0.3) should be [-8\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (0.5) should be [10\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (0.5) should be [5\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [inherit\] to [5\] at (0.6) should be [9\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from neutral to [5\] at (0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [2\] to [4\] at (0.6) should be [3\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (0.6) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [inherit\] to [5\] at (1) should be [5\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [unset\] to [5\] at (0) should be [unset\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from neutral to [5\] at (-0.3) should be [-4\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [2\] to [4\] at (-0.3) should be [1\]]
+ expected: FAIL
+
+ [CSS Transitions: property <z-index> from [-2\] to [-4\] at (0.6) should be [-3\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from neutral to [5\] at (0.3) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [initial\] to [5\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [inherit\] to [5\] at (0.6) should be [9\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [auto\] to [10\] at (1) should be [10\]]
+ expected: FAIL
+
+ [Web Animations: property <z-index> from [initial\] to [5\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [inherit\] to [5\] at (0.3) should be [12\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <z-index> from [inherit\] to [5\] at (-0.3) should be [18\]]
+ expected: FAIL
+
+ [CSS Animations: property <z-index> from [auto\] to [10\] at (0.6) should be [10\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/animation/caret-color-interpolation.html.ini b/tests/wpt/metadata/css/css-ui/animation/caret-color-interpolation.html.ini
index 8920c4dacee..53cf77de076 100644
--- a/tests/wpt/metadata/css/css-ui/animation/caret-color-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-ui/animation/caret-color-interpolation.html.ini
@@ -1,5 +1,532 @@
[caret-color-interpolation.html]
- expected: ERROR
[caret-color interpolation]
expected: FAIL
+ [CSS Transitions: property <caret-color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [black\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [currentColor\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [currentColor\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [inherit\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [currentColor\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (0) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [currentColor\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [currentColor\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (-0.3) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [inherit\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [currentColor\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [currentColor\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [black\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (-0.3) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [black\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [currentColor\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from neutral to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [currentColor\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [currentColor\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [currentColor\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [black\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [currentColor\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [currentColor\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [currentColor\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from neutral to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [currentColor\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (0) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [black\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from neutral to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from neutral to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [currentColor\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [inherit\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [auto\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (0.3) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [currentColor\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [black\] to [orange\] at (0.3) should be [rgb(77, 50, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from neutral to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from neutral to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from neutral to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (0.6) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (0) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [initial\] to [green\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [black\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [black\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [currentColor\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (1.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [currentColor\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [initial\] to [green\] at (0.3) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from neutral to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (-0.3) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [black\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [inherit\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [black\] to [orange\] at (1.5) should be [rgb(255, 248, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from neutral to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [black\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (0.5) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (-0.3) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [auto\] to [green\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [auto\] to [green\] at (0) should be [green\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [currentColor\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [black\] to [orange\] at (1) should be [rgb(255, 165, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [inherit\] to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [black\] to [orange\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [currentColor\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from neutral to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [initial\] to [green\] at (1) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [currentColor\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [auto\] to [green\] at (0.3) should be [green\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [currentColor\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [inherit\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [black\] to [orange\] at (0.6) should be [rgb(153, 99, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [inherit\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [inherit\] to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <caret-color> from [inherit\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [black\] to [orange\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [initial\] to [green\] at (0.3) should be [green\]]
+ expected: FAIL
+
+ [Web Animations: property <caret-color> from [currentColor\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <caret-color> from neutral to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <caret-color> from [inherit\] to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/animation/outline-color-interpolation.html.ini b/tests/wpt/metadata/css/css-ui/animation/outline-color-interpolation.html.ini
index cbd9d0788c0..36faf0382ca 100644
--- a/tests/wpt/metadata/css/css-ui/animation/outline-color-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-ui/animation/outline-color-interpolation.html.ini
@@ -1,5 +1,268 @@
[outline-color-interpolation.html]
- expected: ERROR
[outline-color interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <outline-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [initial\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [inherit\] to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [inherit\] to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [inherit\] to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [inherit\] to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [initial\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [inherit\] to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [initial\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [inherit\] to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [initial\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [unset\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [unset\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [inherit\] to [green\] at (0.3) should be [rgb(179, 217, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [inherit\] to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [initial\] to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [inherit\] to [green\] at (0) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [initial\] to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [unset\] to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from neutral to [green\] at (0) should be [rgb(0, 0, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [unset\] to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [inherit\] to [green\] at (0.6) should be [rgb(102, 179, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 65, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/animation/outline-offset-interpolation.html.ini b/tests/wpt/metadata/css/css-ui/animation/outline-offset-interpolation.html.ini
index 12a28490f5d..8112b075a92 100644
--- a/tests/wpt/metadata/css/css-ui/animation/outline-offset-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-ui/animation/outline-offset-interpolation.html.ini
@@ -1,5 +1,298 @@
[outline-offset-interpolation.html]
- expected: ERROR
[outline-offset interpolation]
expected: FAIL
+ [Web Animations: property <outline-offset> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [-5px\] to [5px\] at (0) should be [-5px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [unset\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [initial\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [-5px\] to [5px\] at (1) should be [5px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [-5px\] to [5px\] at (1) should be [5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [unset\] to [20px\] at (1.5) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [-5px\] to [5px\] at (1.5) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [unset\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [unset\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [initial\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [initial\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [initial\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [-5px\] to [5px\] at (0.6) should be [1px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [-5px\] to [5px\] at (0) should be [-5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [unset\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [unset\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [unset\] to [20px\] at (0.6) should be [12px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [initial\] to [20px\] at (-0.3) should be [-6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [-5px\] to [5px\] at (-0.3) should be [-8px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-offset> from [-5px\] to [5px\] at (0.3) should be [-2px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-offset> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-offset> from [unset\] to [20px\] at (0.3) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-offset> from [unset\] to [20px\] at (0) should be [0px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini b/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini
index c996d09746e..4c2f4dc5aca 100644
--- a/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-ui/animation/outline-width-interpolation.html.ini
@@ -1,5 +1,364 @@
[outline-width-interpolation.html]
- expected: ERROR
[outline-width interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <outline-width> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [0px\] to [10px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from neutral to [20px\] at (0) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [initial\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [unset\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [initial\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [unset\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [unset\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [unset\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [unset\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [initial\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from neutral to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [0px\] to [10px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (1) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [unset\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [0px\] to [10px\] at (1) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [unset\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [initial\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [initial\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [unset\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [inherit\] to [20px\] at (-0.3) should be [33px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (0) should be [5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [unset\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [inherit\] to [20px\] at (0.6) should be [24px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [initial\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [thick\] to [15px\] at (1.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (-2) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (0) should be [5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [initial\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (1) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [0px\] to [10px\] at (0.6) should be [6px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [unset\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [0px\] to [10px\] at (1.5) should be [15px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [initial\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [inherit\] to [20px\] at (0) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [0px\] to [10px\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from neutral to [20px\] at (0.6) should be [16px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (-0.3) should be [2px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [thick\] to [15px\] at (0.6) should be [11px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [0px\] to [10px\] at (0.3) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [unset\] to [20px\] at (0.6) should be [13px\]]
+ expected: FAIL
+
+ [Web Animations: property <outline-width> from [thick\] to [15px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [inherit\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from neutral to [20px\] at (1.5) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [initial\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [initial\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (1) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from neutral to [20px\] at (0.3) should be [13px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [initial\] to [20px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <outline-width> from [inherit\] to [20px\] at (0.3) should be [27px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [0px\] to [10px\] at (-0.3) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <outline-width> from [initial\] to [20px\] at (0) should be [3px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [unset\] to [20px\] at (0.3) should be [8px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from neutral to [20px\] at (-0.3) should be [7px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <outline-width> from [unset\] to [20px\] at (1.5) should be [28px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/animations/calc-interpolation.html.ini b/tests/wpt/metadata/css/css-values/animations/calc-interpolation.html.ini
new file mode 100644
index 00000000000..57ac6ff7227
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/animations/calc-interpolation.html.ini
@@ -0,0 +1,298 @@
+[calc-interpolation.html]
+ [CSS Transitions with transition: all: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [calc(((50% - 25px) * 0.5) + ((100% - 10px) * 0.5))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0%\] to [100px\] at (0.5) should be [calc(0% + 50px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (1) should be [calc(0% + 100px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0em\] to [100px\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0%\] to [100px\] at (0.25) should be [calc(0% + 25px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0em\] to [100px\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (0.25) should be [calc(0% + 25px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0em\] to [100px\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (0) should be [0em\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [-10px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (0.5) should be [calc(0% + 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0) should be [calc(50% - 25px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0em\] to [100px\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0) should be [calc(50% - 25px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1) should be [calc(100% - 10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (1.25) should be [calc(0% + 125px)\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [calc(((50% - 25px) * 0.75) + ((100% - 10px) * 0.25))\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [calc(((50% - 25px) * -0.25) + ((100% - 10px) * 1.25))\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [calc(((50% - 25px) * -0.25) + ((100% - 10px) * 1.25))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1) should be [40px\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (-0.25) should be [calc(0% + -25px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [calc(((50% - 25px) * 0.25) + ((100% - 10px) * 0.75))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [calc(((50% - 25px) * 1.25) + ((100% - 10px) * -0.25))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [calc(((50% - 25px) * 1.25) + ((100% - 10px) * -0.25))\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [calc(((50% - 25px) * 0.75) + ((100% - 10px) * 0.25))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0%\] to [100px\] at (-0.25) should be [calc(0% + -25px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (-0.25) should be [-25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (0) should be [0%\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [30px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (0.25) should be [calc(0% + 25px)\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [calc(((50% - 25px) * -0.25) + ((100% - 10px) * 1.25))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0%\] to [100px\] at (1.25) should be [calc(0% + 125px)\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0em\] to [100px\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [calc(((50% - 25px) * 1.25) + ((100% - 10px) * -0.25))\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0%\] to [100px\] at (-0.25) should be [calc(0% + -25px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0%\] to [100px\] at (0.25) should be [calc(0% + 25px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (0.75) should be [calc(0% + 75px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (1.25) should be [calc(0% + 125px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0em\] to [100px\] at (-0.25) should be [-25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0%\] to [100px\] at (0.75) should be [calc(0% + 75px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [calc(((50% - 25px) * 0.25) + ((100% - 10px) * 0.75))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0em\] to [100px\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [calc(((50% - 25px) * 0.5) + ((100% - 10px) * 0.5))\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (0.5) should be [calc(0% + 50px)\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [calc(((50% - 25px) * 0.75) + ((100% - 10px) * 0.25))\]]
+ expected: FAIL
+
+ [Web Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [-10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0em\] to [100px\] at (-0.25) should be [-25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [calc(((50% - 25px) * 0.25) + ((100% - 10px) * 0.75))\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [calc(((50% - 25px) * 0.5) + ((100% - 10px) * 0.5))\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0em\] to [100px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [calc(((50% - 25px) * 1.25) + ((100% - 10px) * -0.25))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0em\] to [100px\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0em\] to [100px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1) should be [calc(100% - 10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [-10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0em\] to [100px\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <text-indent> from [0%\] to [100px\] at (-0.25) should be [calc(0% + -25px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (0.75) should be [calc(0% + 75px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (-0.25) should be [-10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.5) should be [calc(((50% - 25px) * 0.5) + ((100% - 10px) * 0.5))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0em\] to [100px\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [calc(((50% - 25px) * 0.75) + ((100% - 10px) * 0.25))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (1.25) should be [calc(((50% - 25px) * -0.25) + ((100% - 10px) * 1.25))\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0em\] to [100px\] at (-0.25) should be [-25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0em\] to [100px\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0%\] to [100px\] at (1) should be [calc(0% + 100px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0em\] to [100px\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.75) should be [calc(((50% - 25px) * 0.25) + ((100% - 10px) * 0.75))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <text-indent> from [0%\] to [100px\] at (0.75) should be [calc(0% + 75px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0%\] to [100px\] at (1.25) should be [calc(0% + 125px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <text-indent> from [0em\] to [100px\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <text-indent> from [0%\] to [100px\] at (0.5) should be [calc(0% + 50px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <left> from [calc(50% - 25px)\] to [calc(100% - 10px)\] at (0.25) should be [10px\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-001.html.ini b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-001.html.ini
index cb2f1b0b706..abd513f8af5 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-001.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-001.html.ini
@@ -1,5 +1,4 @@
[backdrop-filter-interpolation-001.html]
- expected: ERROR
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress -0.5]
expected: FAIL
@@ -45,3 +44,783 @@
[backdrop-filter interpolation]
expected: FAIL
+ [CSS Transitions with transition: all: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1) should be [hue-rotate(90deg) blur(10mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1) should be [hue-rotate(90deg) blur(10mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1) should be [hue-rotate(90deg) blur(10mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1) should be [hue-rotate(180deg) blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0) should be [hue-rotate(80deg) blur(6mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1) should be [hue-rotate(180deg) blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1) should be [hue-rotate(180deg) blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0) should be [hue-rotate(0deg) blur(6px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0) should be [hue-rotate(10deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1) should be [hue-rotate(180deg) blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0) should be [hue-rotate(80deg) blur(6mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0) should be [hue-rotate(0deg) blur(6px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0) should be [hue-rotate(0deg) blur(6px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0) should be [hue-rotate(10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0) should be [hue-rotate(10deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0) should be [hue-rotate(0deg) blur(6px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0) should be [hue-rotate(10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0) should be [hue-rotate(80deg) blur(6mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [initial\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1) should be [hue-rotate(90deg) blur(10mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (1) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (1) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [inherit\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0) should be [hue-rotate(80deg) blur(6mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-002.html.ini b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-002.html.ini
index 5bcb8d12b43..c5e2954bc0b 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-002.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-002.html.ini
@@ -1,5 +1,4 @@
[backdrop-filter-interpolation-002.html]
- expected: ERROR
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress -1]
expected: FAIL
@@ -60,3 +59,207 @@
[backdrop-filter interpolation]
expected: FAIL
+ [Web Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1) should be [blur(10px) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1) should be [opacity(0.5) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.3) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.6) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1) should be [opacity(0.5) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.6) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (-0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1) should be [opacity(0.5) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (-0.3) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (-0.3) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.6) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1) should be [opacity(0.5) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.3) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (-0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1) should be [blur(10px) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1) should be [blur(10px) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1) should be [blur(10px) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.6) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1.5) should be [blur(10px)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-003.html.ini b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-003.html.ini
index d471737879d..e7375e403e4 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-003.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-003.html.ini
@@ -1,5 +1,4 @@
[backdrop-filter-interpolation-003.html]
- expected: ERROR
[Animation between "url("#svgfilter")" and "none" at progress 0.4]
expected: FAIL
@@ -174,3 +173,567 @@
[backdrop-filter interpolation]
expected: FAIL
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [none\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [none\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [none\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [none\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [none\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (1) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [grayscale(1)\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [grayscale(1)\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (1) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [none\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [none\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [none\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [invert(1)\] at (1) should be [invert(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [none\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [invert(1)\] at (1) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [none\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [none\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [invert(1)\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [none\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [none\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [invert(1)\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [none\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [none\] to [grayscale(1)\] at (1) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [none\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [none\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [none\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [none\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-004.html.ini b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-004.html.ini
index 77849b1233b..b7c94f819c5 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-004.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/backdrop-filter-interpolation-004.html.ini
@@ -1,5 +1,4 @@
[backdrop-filter-interpolation-004.html]
- expected: ERROR
["hue-rotate()" and "hue-rotate(360deg)" are valid backdrop-filter values]
expected: FAIL
@@ -183,3 +182,603 @@
[backdrop-filter interpolation]
expected: FAIL
+ [Web Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1) should be [invert()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1) should be [grayscale()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1) should be [opacity()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1) should be [grayscale()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [invert(0)\] to [invert()\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1) should be [contrast()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1) should be [contrast()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1) should be [brightness()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1) should be [saturate()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1) should be [invert()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1) should be [invert()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1) should be [saturate()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1) should be [opacity()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1) should be [invert()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1) should be [saturate()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0) should be [blur()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1) should be [grayscale()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0) should be [blur()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1) should be [brightness()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1) should be [brightness()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0) should be [blur()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1) should be [brightness()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1) should be [sepia()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1) should be [grayscale()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1) should be [sepia()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1) should be [sepia()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1) should be [contrast()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1) should be [contrast()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (1) should be [sepia()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [invert(0)\] to [invert()\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1) should be [opacity()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [saturate(0)\] to [saturate()\] at (1) should be [saturate()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (0) should be [blur()\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (1) should be [opacity()\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <backdrop-filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [opacity(0)\] to [opacity()\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <backdrop-filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [blur()\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <backdrop-filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-001.html.ini b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-001.html.ini
index a6dbfa24368..d7dfd0ce0ec 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-001.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-001.html.ini
@@ -1,5 +1,4 @@
[filter-interpolation-001.html]
- expected: ERROR
[Animation between "hue-rotate(0deg) blur(6px)" and "hue-rotate(180deg) blur(10px)" at progress -0.5]
expected: FAIL
@@ -39,3 +38,360 @@
[filter interpolation]
expected: FAIL
+ [CSS Transitions: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0) should be [hue-rotate(80deg) blur(6mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0) should be [hue-rotate(80deg) blur(6mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1) should be [hue-rotate(90deg) blur(10mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1.5) should be [hue-rotate(95deg) blur(12mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [initial\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(24deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from neutral to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(25deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from neutral to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(13deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (1) should be [hue-rotate(90deg) blur(10mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(5deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (-0.5) should be [hue-rotate(75deg) blur(4mm)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from neutral to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(16deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.5) should be [hue-rotate(85deg) blur(8mm)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [unset\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(-10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (-0.5) should be [hue-rotate(-90deg) blur(4px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0) should be [hue-rotate(0deg) blur(6px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (0) should be [hue-rotate(10deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.5) should be [hue-rotate(90deg) blur(8px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(27deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0.25) should be [hue-rotate(45deg) blur(7px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (0.3) should be [hue-rotate(6deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1) should be [hue-rotate(180deg) blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(80deg) blur(6mm)\] to [hue-rotate(100grad) blur(1cm)\] at (0.25) should be [hue-rotate(82.5deg) blur(7mm)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (0) should be [hue-rotate(0deg) blur(6px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from neutral to [hue-rotate(20deg)\] at (1) should be [hue-rotate(20deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [hue-rotate(20deg)\] at (0.6) should be [hue-rotate(12deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (0) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1) should be [hue-rotate(180deg) blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (-0.5) should be [hue-rotate(35deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [inherit\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(15deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [unset\] to [hue-rotate(20deg)\] at (1.5) should be [hue-rotate(30deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(0deg) blur(6px)\] to [hue-rotate(180deg) blur(10px)\] at (1.5) should be [hue-rotate(270deg) blur(12px)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-002.html.ini b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-002.html.ini
index 4ea39f01976..4d0ca49ef2a 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-002.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-002.html.ini
@@ -1,5 +1,4 @@
[filter-interpolation-002.html]
- expected: ERROR
[Animation between "grayscale(0) blur(0px)" and "blur(10px)" at progress -1]
expected: FAIL
@@ -51,3 +50,357 @@
[filter interpolation]
expected: FAIL
+ [CSS Transitions: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1) should be [blur(10px) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1) should be [blur(10px) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (1) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0) should be [opacity(1) hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (0) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.6) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0) should be [opacity(1) hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(20px 10px blue)\] to [drop-shadow(20px 10px green)\] at (2147483648) should be [drop-shadow(20px 10px #00FF00\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0) should be [blur(6px) hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (1) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (-0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(20px 10px blue)\] to [drop-shadow(20px 10px green)\] at (2147483648) should be [drop-shadow(20px 10px #00FF00\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(20px 10px blue)\] to [drop-shadow(20px 10px green)\] at (2147483648) should be [drop-shadow(20px 10px #00FF00\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (1) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(20px 10px blue)\] to [drop-shadow(20px 10px green)\] at (2147483648) should be [drop-shadow(20px 10px #00FF00\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (-0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (1) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.6) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.5) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (0.3) should be [grayscale(0) blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (-0.5) should be [opacity(1) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (1.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1) should be [opacity(0.5) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1) should be [opacity(0.5) hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (-0.5) should be [blur(4px) hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0) should be [blur(6px) hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px white)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (0) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (-0.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0) blur(0px)\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (0.25) should be [hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (1.5) should be [opacity(0.25) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.5) should be [opacity(0.75) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.25) should be [hue-rotate(135deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (-0.5) should be [hue-rotate(-90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px #80C080)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #004100)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (1.5) should be [blur(12px) hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate(180deg)\] to [none\] at (0.5) should be [hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(180deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.25) should be [blur(7px) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(180deg)\] at (1.5) should be [hue-rotate(270deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [opacity(0.5) hue-rotate(180deg)\] at (0.25) should be [opacity(0.875) hue-rotate(45deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [blur(6px)\] to [blur(10px) hue-rotate(180deg)\] at (0.5) should be [blur(8px) hue-rotate(90deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px 0px currentcolor)\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px currentcolor)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-003.html.ini b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-003.html.ini
index 8574d390afe..0120042d0e7 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-003.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-003.html.ini
@@ -1,5 +1,4 @@
[filter-interpolation-003.html]
- expected: ERROR
[Animation between "url("#svgfilter")" and "none" at progress 0.4]
expected: FAIL
@@ -147,3 +146,657 @@
[filter interpolation]
expected: FAIL
+ [CSS Transitions: property <filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [none\] at (1) should be [contrast(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [blur(10px)\] at (0) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [grayscale(1)\] at (1) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [none\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [none\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [grayscale(1)\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px transparent)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [none\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [none\] at (1) should be [brightness(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [invert(1)\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [invert(1)\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [none\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px transparent)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [invert(1)\] at (1) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [invert(1)\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [none\] at (1) should be [opacity(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [grayscale(1)\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [none\] at (1) should be [saturate(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [none\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [none\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [grayscale(1)\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px transparent)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [blur(10px)\] at (0) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [none\] at (1) should be [opacity(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [none\] at (1) should be [contrast(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [none\] at (1) should be [saturate(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [none\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [sepia(1)\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [none\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [none\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (-0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [none\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [none\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [invert(1)\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [none\] at (1) should be [brightness(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [none\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [sepia(1)\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [invert(1)\] at (1) should be [invert(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [initial\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (-1) should be [drop-shadow(-20px -10px transparent)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate(0deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [none\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [initial\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1) should be [drop-shadow(20px 10px green)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [grayscale(1)\] at (1) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [none\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0) should be [drop-shadow(0px 0px 0px transparent)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [opacity(0)\] to [none\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [grayscale(1)\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [contrast(0)\] to [none\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.6) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [brightness(0)\] to [none\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [url("#svgfilter")\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [opacity(0)\] to [none\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [grayscale(1)\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (0.3) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [sepia(1)\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (0.5) should be [drop-shadow(10px 5px rgba(0, 128, 0, 0.5))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [invert(1)\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [none\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [none\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [grayscale(1)\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [url("#svgfilter")\] to [blur(5px)\] at (1) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [none\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [sepia(1)\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [contrast(0)\] to [none\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [none\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [url("#svgfilter")\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [initial\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [sepia(1)\] at (1) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [none\] to [drop-shadow(20px 10px green)\] at (1.5) should be [drop-shadow(30px 15px #00C000)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [url("#svgfilter")\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [none\] to [invert(1)\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [none\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [none\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-004.html.ini b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-004.html.ini
index 5739f28b2f0..b48051c1330 100644
--- a/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-004.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/animation/filter-interpolation-004.html.ini
@@ -1,5 +1,4 @@
[filter-interpolation-004.html]
- expected: ERROR
[Animation between "saturate(0)" and "saturate()" at progress 1]
expected: FAIL
@@ -156,3 +155,447 @@
[filter interpolation]
expected: FAIL
+ [CSS Transitions: property <filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur()\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [brightness()\] at (1) should be [brightness()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur()\] to [blur(10px)\] at (-1) should be [blur(0px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [brightness()\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [sepia(0)\] to [sepia()\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [saturate()\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [contrast()\] at (1) should be [contrast()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate()\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [saturate()\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (0) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [invert(0)\] to [invert()\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [brightness()\] at (1) should be [brightness()\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [invert(0)\] to [invert()\] at (1) should be [invert()\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [invert(0)\] to [invert()\] at (0) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [sepia(0)\] to [sepia()\] at (-1) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [brightness()\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [sepia(0)\] to [sepia()\] at (1) should be [sepia()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur()\] to [blur(10px)\] at (0) should be [blur()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [opacity()\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [invert(0)\] to [invert()\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur()\] to [blur(10px)\] at (0) should be [blur()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [opacity()\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [contrast()\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [opacity()\] at (1) should be [opacity()\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (1) should be [grayscale()\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [opacity()\] at (-1) should be [opacity(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur()\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [invert(0)\] to [invert()\] at (1) should be [invert()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1.5) should be [hue-rotate(540deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [opacity()\] at (0) should be [opacity(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [sepia(0)\] to [sepia()\] at (1) should be [sepia()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (-1) should be [grayscale(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [saturate()\] at (-1) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0) should be [hue-rotate()\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1.5) should be [drop-shadow(30px 15px 45px rgb(0, 192, 0))\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [blur()\] to [blur(10px)\] at (1) should be [blur(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (1) should be [grayscale()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [contrast(0)\] to [contrast()\] at (1.5) should be [contrast(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (0.5) should be [hue-rotate(180deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (1) should be [hue-rotate(360deg)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [contrast(0)\] to [contrast()\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [invert(0)\] to [invert()\] at (0.5) should be [invert(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [sepia(0)\] to [sepia()\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [sepia(0)\] to [sepia()\] at (0) should be [sepia(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [invert(0)\] to [invert()\] at (-1) should be [invert(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [saturate()\] at (0) should be [saturate(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [saturate(0)\] to [saturate()\] at (1) should be [saturate()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [sepia(0)\] to [sepia()\] at (0.5) should be [sepia(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [brightness()\] at (0) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [grayscale(0)\] to [grayscale()\] at (1.5) should be [grayscale(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [saturate(0)\] to [saturate()\] at (1.5) should be [saturate(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [hue-rotate()\] to [hue-rotate(360deg)\] at (-1) should be [hue-rotate(-360deg)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [brightness()\] at (1.5) should be [brightness(1.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [invert(0)\] to [invert()\] at (1.5) should be [invert(1)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [opacity(0)\] to [opacity()\] at (1.5) should be [opacity(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [contrast()\] at (0) should be [contrast(0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [opacity()\] at (1) should be [opacity()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0) should be [drop-shadow(0px 0px blue)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [brightness(0)\] to [brightness()\] at (-1) should be [brightness(0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [grayscale(0)\] to [grayscale()\] at (0.5) should be [grayscale(0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [blur()\] to [blur(10px)\] at (0.5) should be [blur(5px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (1) should be [drop-shadow(20px 10px 30px green)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [contrast()\] at (-1) should be [contrast(0)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (-1) should be [drop-shadow(-20px -10px blue)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <filter> from [drop-shadow(0px 0px)\] to [drop-shadow(20px 10px 30px green)\] at (0.5) should be [drop-shadow(10px 5px 15px rgb(0, 64, 128))\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [opacity(0)\] to [opacity()\] at (0.5) should be [opacity(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [brightness(0)\] to [brightness()\] at (0.5) should be [brightness(0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [saturate()\] at (1) should be [saturate()\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [blur()\] to [blur(10px)\] at (1.5) should be [blur(15px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <filter> from [saturate(0)\] to [saturate()\] at (0.5) should be [saturate(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [contrast()\] at (0.5) should be [contrast(0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [sepia(0)\] to [sepia()\] at (1.5) should be [sepia(1)\]]
+ expected: FAIL
+
+ [Web Animations: property <filter> from [contrast(0)\] to [contrast()\] at (1) should be [contrast()\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini b/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini
index 8a9abe9e756..36898d70d30 100644
--- a/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/cors/cors-preflight-redirect.any.js.ini
@@ -1,68 +1,8 @@
[cors-preflight-redirect.any.html]
type: testharness
- [Redirection 301 on preflight failed]
- expected: FAIL
-
- [Redirection 301 after preflight failed]
- expected: FAIL
-
- [Redirection 302 on preflight failed]
- expected: FAIL
-
- [Redirection 302 after preflight failed]
- expected: FAIL
-
- [Redirection 303 on preflight failed]
- expected: FAIL
-
- [Redirection 303 after preflight failed]
- expected: FAIL
-
- [Redirection 307 on preflight failed]
- expected: FAIL
-
- [Redirection 307 after preflight failed]
- expected: FAIL
-
- [Redirection 308 on preflight failed]
- expected: FAIL
-
- [Redirection 308 after preflight failed]
- expected: FAIL
-
[cors-preflight-redirect.any.worker.html]
type: testharness
- [Redirection 301 on preflight failed]
- expected: FAIL
-
- [Redirection 301 after preflight failed]
- expected: FAIL
-
- [Redirection 302 on preflight failed]
- expected: FAIL
-
- [Redirection 302 after preflight failed]
- expected: FAIL
-
- [Redirection 303 on preflight failed]
- expected: FAIL
-
- [Redirection 303 after preflight failed]
- expected: FAIL
-
- [Redirection 307 on preflight failed]
- expected: FAIL
-
- [Redirection 307 after preflight failed]
- expected: FAIL
-
- [Redirection 308 on preflight failed]
- expected: FAIL
-
- [Redirection 308 after preflight failed]
- expected: FAIL
-
[cors-preflight-redirect]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/api/response/response-consume.html.ini b/tests/wpt/metadata/fetch/api/response/response-consume.html.ini
index c716d7fb7fa..d8f9054d16b 100644
--- a/tests/wpt/metadata/fetch/api/response/response-consume.html.ini
+++ b/tests/wpt/metadata/fetch/api/response/response-consume.html.ini
@@ -34,15 +34,6 @@
[Consume response's body: from FormData to formData]
expected: FAIL
- [Consume response's body: from FormData to blob]
- expected: FAIL
-
- [Consume response's body: from FormData to text]
- expected: FAIL
-
- [Consume response's body: from FormData to arrayBuffer]
- expected: FAIL
-
[Consume response's body: from stream to blob]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 7c6560d5882..646f7da0935 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -309,28 +309,22 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index 5c001592859..2d5faa72ac7 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -53,9 +53,6 @@
[combined text/javascript ]
expected: FAIL
- [separate text/javascript x/x]
- expected: FAIL
-
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/metadata/navigation.https.sub.html.ini b/tests/wpt/metadata/fetch/metadata/navigation.https.sub.html.ini
deleted file mode 100644
index a53ed577de8..00000000000
--- a/tests/wpt/metadata/fetch/metadata/navigation.https.sub.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[navigation.https.sub.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/fetch/metadata/navigation.tentative.https.sub.html.ini b/tests/wpt/metadata/fetch/metadata/navigation.tentative.https.sub.html.ini
new file mode 100644
index 00000000000..9fd8a4e2881
--- /dev/null
+++ b/tests/wpt/metadata/fetch/metadata/navigation.tentative.https.sub.html.ini
@@ -0,0 +1,2 @@
+[navigation.tentative.https.sub.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html.ini b/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html.ini
new file mode 100644
index 00000000000..9cd247dcb2d
--- /dev/null
+++ b/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html.ini
@@ -0,0 +1,5 @@
+[multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html]
+ expected: TIMEOUT
+ [Https downgrade-upgrade prefetch => No headers]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html.ini b/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html.ini
new file mode 100644
index 00000000000..1ec9a01abd0
--- /dev/null
+++ b/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html.ini
@@ -0,0 +1,5 @@
+[redirect-http-upgrade-prefetch.optional.tentative.sub.html]
+ expected: TIMEOUT
+ [Http upgrade prefetch => No headers]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html.ini b/tests/wpt/metadata/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html.ini
new file mode 100644
index 00000000000..7ea8aff3cb9
--- /dev/null
+++ b/tests/wpt/metadata/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html.ini
@@ -0,0 +1,5 @@
+[redirect-https-downgrade-prefetch.optional.tentative.sub.html]
+ expected: TIMEOUT
+ [Https downgrade prefetch => No headers]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 87c807a49ff..a639f15230c 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
+ [Content-Type-Options%3A%20nosniff]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
index d3de645928d..54f7f890b05 100644
--- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
+++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
@@ -8,14 +8,8 @@
expected: FAIL
[Embedded credentials are treated as network errors in new windows.]
- expected: FAIL
-
- [Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
- expected: TIMEOUT
-
- [Embedded credentials matching the top-level are not treated as network errors for relative URLs.]
expected: TIMEOUT
- [Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.]
- expected: TIMEOUT
+ [Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 75d75b4cda2..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
deleted file mode 100644
index 51f8272a6de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_3.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
index 385376c7321..dc2e45516de 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_4.html]
+[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
index 16fa2c5cfc1..dec4c579137 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -1,4 +1,5 @@
[creating_browsing_context_test_01.html]
+ expected: TIMEOUT
[first argument: absolute url]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index 940516ddd33..ad8840fbb68 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-top-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
- [features "top=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "top=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "top=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "left=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index 9027336b453..d1ed9088b2b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-width-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
- [features "height=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "width=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index 4e44584b123..a70e9dbad4d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405LLl" should set "height=405"]
- expected: TIMEOUT
-
- [features "height=/404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [features "height=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=L404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
index 2532dceabac..442db3cb549 100644
--- a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
+++ b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
@@ -1,5 +1,4 @@
[embedded-opener-remove-frame.html]
- expected: CRASH
[opener and "removed" embedded documents]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index f42f518d257..2a166bb97b7 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index f6a7aca3306..5f60c78e73c 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 3f7e3e9544f..963d4cd20ef 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
+ expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
new file mode 100644
index 00000000000..b9d103f521e
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
@@ -0,0 +1,4 @@
+[non-active-document.html]
+ [DOMParser]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/forms/constraints/infinite_backtracking.html.ini b/tests/wpt/metadata/html/semantics/forms/constraints/infinite_backtracking.html.ini
new file mode 100644
index 00000000000..fd73c8d647c
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/constraints/infinite_backtracking.html.ini
@@ -0,0 +1,4 @@
+[infinite_backtracking.html]
+ [Infinite backtracking pattern terminates]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
index df89cd21511..941d0dee0c8 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
@@ -1,5 +1,5 @@
[form-double-submit-3.html]
expected: ERROR
[<button> should have the same double-submit protection as <input type=submit>]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
index dce74c6dd71..47a7bbb7975 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
@@ -1,5 +1,5 @@
[form-double-submit.html]
expected: ERROR
[default submit action should supersede onclick submit()]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/syntax/parsing/html_content_in_foreign_context.html.ini b/tests/wpt/metadata/html/syntax/parsing/html_content_in_foreign_context.html.ini
new file mode 100644
index 00000000000..6a74b2d5ac9
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/html_content_in_foreign_context.html.ini
@@ -0,0 +1,4 @@
+[html_content_in_foreign_context.html]
+ [HTML namespace nodes should exit foreign contexts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini
new file mode 100644
index 00000000000..68cde348264
--- /dev/null
+++ b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini
@@ -0,0 +1,2 @@
+[size.large.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
deleted file mode 100644
index 064cf47545b..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini
deleted file mode 100644
index 064cf47545b..00000000000
--- a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini b/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini
deleted file mode 100644
index fe8654e447c..00000000000
--- a/tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[WorkerGlobalScope-close.html]
- [Test sending a message after closing.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
index bf2a1d61bab..bfd4d6dd2d6 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
@@ -1,4 +1,5 @@
[import-in-moduleworker.html]
+ expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json
index b1babc8b119..f9610ad6167 100644
--- a/tests/wpt/mozilla/meta/MANIFEST.json
+++ b/tests/wpt/mozilla/meta/MANIFEST.json
@@ -18499,7 +18499,7 @@
"testharness"
],
"mozilla/FileAPI/resource/file-submission.py": [
- "24d5129eb8d38c9415622c78ed401ae344273ce1",
+ "79e72fb99a95c186e4916b40627ee762d694b8ea",
"support"
],
"mozilla/FileAPI/resource/upload.txt": [
diff --git a/tests/wpt/mozilla/tests/mozilla/FileAPI/resource/file-submission.py b/tests/wpt/mozilla/tests/mozilla/FileAPI/resource/file-submission.py
index 24d5129eb8d..79e72fb99a9 100644
--- a/tests/wpt/mozilla/tests/mozilla/FileAPI/resource/file-submission.py
+++ b/tests/wpt/mozilla/tests/mozilla/FileAPI/resource/file-submission.py
@@ -21,7 +21,7 @@ def main(request, response):
boundary = content_type[1].strip("boundary=")
body = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"file-input\"; filename=\"upload.txt\""
- body += "\r\n" + "content-type: text/plain\r\n\r\nHello\r\n--" + boundary + "--"
+ body += "\r\n" + "content-type: text/plain\r\n\r\nHello\r\n--" + boundary + "--\r\n"
if body != request.body:
return fail("request body doesn't match: " + body + "+++++++" + request.body)
diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml
index fa0dc670502..a534278337d 100644
--- a/tests/wpt/web-platform-tests/.azure-pipelines.yml
+++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml
@@ -16,8 +16,13 @@
# https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows
trigger:
-- epochs/*
-- triggers/*
+# These are all the branches referenced in the jobs that follow.
+- epochs/daily
+- epochs/three_hourly
+- triggers/edge_dev
+- triggers/edge_canary
+- triggers/safari_stable
+- triggers/safari_preview
jobs:
# The affected tests jobs are unconditional for speed, as most PRs have one or
diff --git a/tests/wpt/web-platform-tests/.github/workflows/manifest.yml b/tests/wpt/web-platform-tests/.github/workflows/manifest.yml
index 555b9d6c290..e4708873c0d 100644
--- a/tests/wpt/web-platform-tests/.github/workflows/manifest.yml
+++ b/tests/wpt/web-platform-tests/.github/workflows/manifest.yml
@@ -8,6 +8,8 @@ on:
- 'tools/**'
jobs:
build-and-tag:
+ # Do not run this job on forks.
+ if: github.repository == 'web-platform-tests/wpt'
runs-on: ubuntu-18.04
steps:
- name: Checkout
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index 6bc9253ec20..cc07b1d6711 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -4,359 +4,66 @@ policy:
tasks:
$let:
event_str: {$json: {$eval: event}}
- provisionerId:
- $if: 'taskcluster_root_url == "https://taskcluster.net"'
- then: aws-provisioner-v1
- else: proj-wpt
- workerType:
- $if: 'taskcluster_root_url == "https://taskcluster.net"'
+ scopes:
+ $if: 'tasks_for == "github-push"'
then:
- $if: event.repository.full_name == 'web-platform-tests/wpt'
+ $let:
+ branch:
+ $if: "event.ref[:11] == 'refs/heads/'"
+ then: "${event.ref[11:]}"
+ else: "${event.ref}"
+ in: "assume:repo:github.com/${event.repository.full_name}:branch:${branch}"
+ else: "assume:repo:github.com/${event.repository.full_name}:pull-request"
+ run_task:
+ $if: 'tasks_for == "github-push"'
+ then:
+ $if: 'event.ref in ["refs/heads/master", "refs/heads/epochs/daily", "refs/heads/epochs/weekly", "refs/heads/triggers/chrome_stable", "refs/heads/triggers/chrome_beta", "refs/heads/triggers/chrome_dev", "refs/heads/triggers/firefox_stable", "refs/heads/triggers/firefox_beta", "refs/heads/triggers/firefox_nightly", "refs/heads/triggers/webkitgtk_minibrowser_stable", "refs/heads/triggers/webkitgtk_minibrowser_nightly"]'
+ then: true
+ else: false
+ else:
+ $if: 'tasks_for == "github-pull-request"'
then:
- wpt-docker-worker
- else:
- github-worker
- else: ci
+ $if: 'event.action in ["opened", "reopened", "synchronize", "ready_for_review"] && !(event.pull_request.draft)'
+ then: true
+ else: false
+ else: false
+ rev:
+ $if: 'tasks_for == "github-pull-request"'
+ then: "refs/pull/${event.number}/merge"
+ else: "${event.after}"
in:
- $flattenDeep:
- - $if: tasks_for == "github-push"
- then:
- $map:
- $flatten:
- $match: {
- event.ref == "refs/heads/master": [{name: firefox, channel: nightly}, {name: chrome, channel: dev}],
- event.ref == "refs/heads/epochs/daily": [{name: firefox, channel: stable}, {name: chrome, channel: stable}, {name: webkitgtk_minibrowser, channel: nightly}],
- event.ref == "refs/heads/epochs/weekly": [{name: firefox, channel: beta}, {name: chrome, channel: beta}, {name: webkitgtk_minibrowser, channel: stable}],
- event.ref == "refs/heads/triggers/chrome_stable": [{name: chrome, channel: stable}],
- event.ref == "refs/heads/triggers/chrome_beta": [{name: chrome, channel: beta}],
- event.ref == "refs/heads/triggers/chrome_dev": [{name: chrome, channel: dev}],
- event.ref == "refs/heads/triggers/firefox_stable": [{name: firefox, channel: stable}],
- event.ref == "refs/heads/triggers/firefox_beta": [{name: firefox, channel: beta}],
- event.ref == "refs/heads/triggers/firefox_nightly": [{name: firefox, channel: nightly}],
- event.ref == "refs/heads/triggers/webkitgtk_minibrowser_stable": [{name: webkitgtk_minibrowser, channel: stable}],
- event.ref == "refs/heads/triggers/webkitgtk_minibrowser_nightly": [{name: webkitgtk_minibrowser, channel: nightly}]
- }
- each(browser):
- $map:
- - [testharness, 1, 16]
- - [testharness, 2, 16]
- - [testharness, 3, 16]
- - [testharness, 4, 16]
- - [testharness, 5, 16]
- - [testharness, 6, 16]
- - [testharness, 7, 16]
- - [testharness, 8, 16]
- - [testharness, 9, 16]
- - [testharness, 10, 16]
- - [testharness, 11, 16]
- - [testharness, 12, 16]
- - [testharness, 13, 16]
- - [testharness, 14, 16]
- - [testharness, 15, 16]
- - [testharness, 16, 16]
- - [reftest, 1, 5]
- - [reftest, 2, 5]
- - [reftest, 3, 5]
- - [reftest, 4, 5]
- - [reftest, 5, 5]
- - [wdspec, 1, 1]
- each(chunk):
- taskId: {$eval: 'as_slugid(browser.name + browser.channel + chunk[0] + str(chunk[1]))'}
- taskGroupId: {$eval: 'as_slugid("task group")'}
- created: {$fromNow: ''}
- deadline: {$fromNow: '24 hours'}
- provisionerId: ${provisionerId}
- workerType: ${workerType}
- metadata:
- name: wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}
- description: >-
- A subset of WPT's "${chunk[0]}" tests (chunk number ${chunk[1]}
- of ${chunk[2]}), run in the ${browser.channel} release of
- ${browser.name}.
- owner:
- # event.pusher.email is null when it comes from a GitHub action, so it has to be null-checked,
- # and using the "in" operator causes an evaluation error when the right variable is null, if its
- # done on the same "if" statement than the null-check (with &&), therefore we use a nested "if" here.
- $if: 'event.pusher.email'
- then:
- $if: '"@" in event.pusher.email'
- then: ${event.pusher.email}
- else: web-platform-tests@users.noreply.github.com
- else: web-platform-tests@users.noreply.github.com
- source: ${event.repository.url}
- payload:
- image:
- harjgam/web-platform-tests:0.33
- maxRunTime: 7200
- artifacts:
- public/results:
- path: /home/test/artifacts
- type: directory
- command:
- - /bin/bash
- - --login
- - -c
- - set -ex;
- echo "wpt-${browser.name}-${browser.channel}-${chunk[0]}-${chunk[1]}";
- ~/start.sh
- ${event.repository.url}
- ${event.ref};
- cd ~/web-platform-tests;
- sudo cp tools/certs/cacert.pem
- /usr/local/share/ca-certificates/cacert.crt;
- sudo update-ca-certificates;
- ./tools/ci/run_tc.py
- --checkout=${event.after}
- --oom-killer
- --hosts
- --browser=${browser.name}
- --channel=${browser.channel}
- --xvfb
- run-all
- ./tools/ci/taskcluster-run.py
- ${browser.name}
- --
- --channel=${browser.channel}
- --log-wptreport=../artifacts/wpt_report.json
- --log-wptscreenshot=../artifacts/wpt_screenshot.txt
- --no-fail-on-unexpected
- --test-type=${chunk[0]}
- --this-chunk=${chunk[1]}
- --total-chunks=${chunk[2]};
- extra:
- github_event: "${event_str}"
-
- - $if: tasks_for == "github-pull-request"
- # PR tasks that run the tests in various configurations
- then:
- # Taskcluster responds to a number of events issued by the GitHub API
- # which should not trigger re-validation.
- $if: event.action in ['opened', 'reopened', 'synchronize']
- then:
- $map: [{name: firefox, channel: nightly}, {name: chrome, channel: dev}]
- each(browser):
- $map:
- # This is the main place to define new stability checks
- - name: wpt-${browser.name}-${browser.channel}-stability
- job_name: stability
- checkout: task_head
- diff_base: base_head
- description: >-
- Verify that all tests affected by a pull request are stable
- when executed in ${browser.name}.
- extra_args: '--verify'
- - name: wpt-${browser.name}-${browser.channel}-results
- job_name: affected_tests
- checkout: task_head
- diff_base: base_head
- description: >-
- Collect results for all tests affected by a pull request in
- ${browser.name}.
- extra_args: >-
- --no-fail-on-unexpected
- --log-wptreport=../artifacts/wpt_report.json
- --log-wptscreenshot=../artifacts/wpt_screenshot.txt
- - name: wpt-${browser.name}-${browser.channel}-results-without-changes
- job_name: affected_tests
- checkout: base_head
- diff_base: task_head
- description: >-
- Collect results for all tests affected by a pull request in
- ${browser.name} but without the changes in the PR.
- extra_args: >-
- --no-fail-on-unexpected
- --log-wptreport=../artifacts/wpt_report.json
- --log-wptscreenshot=../artifacts/wpt_screenshot.txt
- each(operation):
- taskId: {$eval: 'as_slugid(operation.name)'}
- taskGroupId: {$eval: 'as_slugid("task group")'}
- created: {$fromNow: ''}
- deadline: {$fromNow: '24 hours'}
- provisionerId: ${provisionerId}
- workerType: ${workerType}
- metadata:
- name: ${operation.name}
- description: ${operation.description}
- owner: ${event.pull_request.user.login}@users.noreply.github.com
- source: ${event.repository.url}
- payload:
- image: harjgam/web-platform-tests:0.33
- maxRunTime: 7200
- artifacts:
- public/results:
- path: /home/test/artifacts
- type: directory
- # Fetch the GitHub-provided merge commit (rather than the pull
- # request branch) so that the tasks simulate the behavior of the
- # submitted patch after it is merged. Using the merge commit also
- # simplifies detection of modified files because the first parent
- # of the merge commit can consistently be used to summarize the
- # changes.
- command:
- - /bin/bash
- - --login
- - -c
- - set -ex;
- echo "${operation.name}";
- ~/start.sh
- ${event.repository.clone_url}
- refs/pull/${event.number}/merge;
- cd web-platform-tests;
- ./tools/ci/run_tc.py
- --checkout=${operation.checkout}
- --oom-killer
- --browser=${browser.name}
- --channel=${browser.channel}
- --xvfb
- ${operation.job_name}
- ./tools/ci/taskcluster-run.py
- --commit-range ${operation.diff_base}
- ${browser.name}
- --
- --channel=${browser.channel}
- ${operation.extra_args};
- extra:
- github_event: "${event_str}"
+ - $if: run_task
+ then:
+ created: {$fromNow: ''}
+ deadline: {$fromNow: '24 hours'}
+ provisionerId: proj-wpt
+ workerType: ci
+ metadata:
+ name: "wpt-decision-task"
+ description: "The task that creates all of the other tasks in the task graph"
+ owner: "${event.sender.login}@users.noreply.github.com"
+ source: ${event.repository.clone_url}
+ payload:
+ image: harjgam/web-platform-tests:0.33
+ maxRunTime: 7200
+ artifacts:
+ public/results:
+ path: /home/test/artifacts
+ type: directory
+ command:
+ - /bin/bash
+ - --login
+ - -c
+ - set -ex;
+ ~/start.sh
+ ${event.repository.clone_url}
+ ${rev};
+ cd ~/web-platform-tests;
+ ./wpt tc-decision --tasks-path=/home/test/artifacts/tasks.json
+ features :
+ taskclusterProxy: true
+ scopes:
+ - ${scopes}
+ extra:
+ github_event: "${event_str}"
- - $map:
- # This is the main point to define new CI checks other than stability checks
- - name: lint
- description: >-
- Lint for wpt-specific requirements
- script: >-
- ./tools/ci/run_tc.py \
- --no-hosts \
- lint \
- ./wpt lint --all
- conditions:
- push
- pull-request
- - name: update built tests
- description: >-
- Ensure test suites that require a build step are updated
- script: >-
- ./tools/ci/run_tc.py \
- --no-hosts \
- update_built \
- tools/ci/ci_built_diff.sh
- conditions:
- pull-request
- - name: tools/ unittests (Python 2)
- description: >-
- Unit tests for tools running under Python 2.7, excluding wptrunner
- script: >-
- export TOXENV=py27;
- export HYPOTHESIS_PROFILE=ci;
- export PY_COLORS=0;
- ./tools/ci/run_tc.py \
- tools_unittest \
- tools/ci/ci_tools_unittest.sh
- conditions:
- push
- pull-request
- - name: tools/ unittests (Python 3)
- description: >-
- Unit tests for tools running under Python 3, excluding wptrunner
- script: >-
- export TOXENV=py36;
- export HYPOTHESIS_PROFILE=ci;
- export PY_COLORS=0;
- sudo apt update -qqy;
- sudo apt install -qqy python3-pip;
- ./tools/ci/run_tc.py \
- tools_unittest \
- tools/ci/ci_tools_unittest.sh
- conditions:
- push
- pull-request
- - name: tools/wpt/ tests
- description: >-
- Integration tests for wpt commands
- script: >-
- export TOXENV=py27;
- sudo apt update -qqy;
- sudo apt install -qqy libnss3-tools;
- ./tools/ci/run_tc.py \
- --oom-killer \
- --browser=firefox \
- --browser=chrome \
- --channel=experimental \
- --xvfb \
- wpt_integration \
- tools/ci/ci_wpt.sh
- conditions:
- pull-request
- - name: resources/ tests
- description: >-
- Tests for testharness.js and other files in resources/
- script: >-
- export TOXENV=py27;
- ./tools/ci/run_tc.py \
- --browser=firefox \
- --xvfb \
- resources_unittest \
- tools/ci/ci_resources_unittest.sh
- conditions:
- pull-request
- - name: infrastructure/ tests
- description: >-
- Smoketests for wptrunner
- script: >-
- sudo apt update -qqy;
- sudo apt install -qqy libnss3-tools libappindicator1 fonts-liberation;
- ./tools/ci/run_tc.py \
- --oom-killer \
- --browser=firefox \
- --browser=chrome \
- --channel=experimental \
- --no-hosts \
- --xvfb \
- wptrunner_infrastructure \
- tools/ci/ci_wptrunner_infrastructure.sh
- conditions:
- pull-request
- each(operation):
- # Note: jsone doesn't short-circuit evaluation so all parts of the conditional are evaluated
- # Accessing properties using the [] notation allows them to evaluate as null in case they're undefined
- # TODO: Allow running pushes on branches other than master
- - $if: ("push" in operation.conditions && tasks_for == "github-push" && event['ref'] == "refs/heads/master") || ("pull-request" in operation.conditions && tasks_for == "github-pull-request" && event['action'] in ['opened', 'reopened', 'synchronize'])
- then:
- $let:
- checkout_ref:
- $if: tasks_for == "github-push"
- then:
- ${event.ref}
- else:
- refs/pull/${event.number}/merge
- in:
- taskId: {$eval: 'as_slugid(operation.name)'}
- taskGroupId: {$eval: 'as_slugid("task group")'}
- created: {$fromNow: ''}
- deadline: {$fromNow: '24 hours'}
- provisionerId: ${provisionerId}
- workerType: ${workerType}
- metadata:
- name: ${operation.name}
- description: ${operation.description}
- owner: ${event.sender.login}@users.noreply.github.com
- source: ${event.repository.url}
- payload:
- image: harjgam/web-platform-tests:0.33
- maxRunTime: 7200
- artifacts:
- public/results:
- path: /home/test/artifacts
- type: directory
- command:
- - /bin/bash
- - --login
- - -c
- - set -ex;
- echo "${operation.name}";
- ~/start.sh
- ${event.repository.clone_url}
- ${checkout_ref};
- cd ~/web-platform-tests;
- ${operation.script};
- extra:
- github_event: "${event_str}"
diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.tentative.https.html b/tests/wpt/web-platform-tests/client-hints/accept_ch.tentative.https.html
index 4b46610c581..0f8b525576e 100644
--- a/tests/wpt/web-platform-tests/client-hints/accept_ch.tentative.https.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept_ch.tentative.https.html
@@ -12,16 +12,14 @@ in this web page, and two in the other web pages.
<script>
// This test fetches resources/accept_ch.html. The response headers to
-// that webpage contains only the Accept-CH header. Due to the missing
-// Accept-CH-Lifetime header, the user-agent should not persist origin
-// preferences for the client hints specified in Accept-CH header.
+// that webpage contains only the Accept-CH header. These preferences should be
+// stored so that the next request to the same origin is sent with the
+// requested client hint headers.
-// Next, to verify that the origin preferences were not persisted by the user
-// agent, this test fetches resources/do_not_expect_client_hints_headers.html
-// in a new window. Fetching of
-// resources/do_not_expect_client_hints_headers.html
-// verifies that the user agent does not send the client hints in the request
-// headers.
+// Next, to verify that the origin preferences were persisted by the user
+// agent, this test fetches resources/expect_client_hints_headers.html in a new
+// window. Fetching of resources/expect_client_hints_headers.html verifies that
+// the user agent does send the client hints in the request headers.
// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
// is resolved.
@@ -39,7 +37,7 @@ promise_test(t => {
async_test(t => {
window.addEventListener('message', t.step_func(function(e) {
- if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
+ if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
return;
}
if(typeof e.data != "string")
@@ -47,12 +45,12 @@ async_test(t => {
assert_equals(e.data, "PASS");
t.done();
}));
-}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
+}, "Loading of resources/expect_client_hints_headers.html did not finish.");
function acceptChLoaded() {
// Open a new window. Verify that the user agent does not attach the client
// hints.
- var verify_win = window.open("resources/do_not_expect_client_hints_headers.html");
+ var verify_win = window.open("resources/expect_client_hints_headers.html");
assert_not_equals(verify_win, null, "Popup windows not allowed?");
}
diff --git a/tests/wpt/web-platform-tests/client-hints/http_equiv_accept_ch.tentative.https.html b/tests/wpt/web-platform-tests/client-hints/http_equiv_accept_ch.tentative.https.html
index 74eea344e90..2830cb714fa 100644
--- a/tests/wpt/web-platform-tests/client-hints/http_equiv_accept_ch.tentative.https.html
+++ b/tests/wpt/web-platform-tests/client-hints/http_equiv_accept_ch.tentative.https.html
@@ -12,16 +12,15 @@
<script>
-// This test contains accept-ch http-equiv header. Due to the missing
-// Accept-CH-Lifetime header, the user-agent should not persist origin
-// preferences for the client hints specified in Accept-CH header.
+// This test contains accept-ch http-equiv header. The user-agent should
+// persist origin preferences for the client hints specified in Accept-CH
+// header.
-// Next, to verify that the origin preferences were not persisted by the user
+// Next, to verify that the origin preferences were persisted by the user
// agent, this test fetches resources/do_not_expect_client_hints_headers.html
// in a new window. Fetching of
-// resources/do_not_expect_client_hints_headers.html
-// verifies that the user agent does not send the client hints in the request
-// headers.
+// resources/do_not_expect_client_hints_headers.html verifies that the user
+// agent does not send the client hints in the request headers.
// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
// is resolved.
@@ -37,12 +36,12 @@ promise_test(t => {
// Verify that the browser does not attach client hints on resources in a
// different navigation. This verifies that the client hint preferences were
// not persisted for the origin.
-window.open("resources/do_not_expect_client_hints_headers.html");
+window.open("resources/expect_client_hints_headers.html");
async_test(t => {
window.addEventListener('message', t.step_func_done(e => {
assert_equals(e.data, 'PASS');
}));
-}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
+}, "Loading of resources/expect_client_hints_headers.html did not finish.");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/compression/decompression-corrupt-input.any.js b/tests/wpt/web-platform-tests/compression/decompression-corrupt-input.tentative.any.js
index 95e91b662ee..95e91b662ee 100644
--- a/tests/wpt/web-platform-tests/compression/decompression-corrupt-input.any.js
+++ b/tests/wpt/web-platform-tests/compression/decompression-corrupt-input.tentative.any.js
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/messages.json b/tests/wpt/web-platform-tests/conformance-checkers/messages.json
index 94d3bc461f5..2dcd3830d72 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/messages.json
+++ b/tests/wpt/web-platform-tests/conformance-checkers/messages.json
@@ -2187,7 +2187,7 @@
"html/media-queries/011-novalid.html": "Bad value \u201cscreen and (min-width: 400dpi)\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: \u201c400dpi\u201d is not a \u201cwidth\u201d value",
"html/media-queries/013-novalid.html": "Bad value \u201cscreen and (min-width:\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: Parse Error.",
"html/media-queries/014-novalid.html": "Bad value \u201cscreen and (min-width: 400px) and\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: Parse Error.",
- "html/media-queries/019-novalid.html": "Bad value \u201cscreen and (color: 1em)\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: Too many values or values are not recognized",
+ "html/media-queries/019-novalid.html": "Bad value \u201cscreen and (color: 1em)\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: \u201c1em\u201d is not a \u201ccolor\u201d value",
"html/media-queries/020-novalid.html": "Bad value \u201c,\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: Parse Error.",
"html/media-queries/021-novalid.html": "Bad value \u201cscreen,,print\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: Parse Error.",
"html/media-queries/022-novalid.html": "Bad value \u201cscreen,\u201d for attribute \u201cmedia\u201d on element \u201clink\u201d: Bad media query: Parse Error.",
diff --git a/tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr-ref.html b/tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr-ref.html
new file mode 100644
index 00000000000..baa25ac87c8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr-ref.html
@@ -0,0 +1,12 @@
+<html>
+ <head>
+ <title>Content-DPR: pseudo elements</title>
+ <link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
+ <meta name="assert" content="Assert that content-dpr is taken into account for images in pseudo-elements">
+ </head>
+ <body>
+ The following squares should be identical <br />
+ <img src="resources/square.png" width="50" />
+ <img src="resources/square.png" width="50" />
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr.html b/tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr.html
new file mode 100644
index 00000000000..7770df39997
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/image-pseudo-element-content-dpr.html
@@ -0,0 +1,17 @@
+<html>
+ <head>
+ <title>Content-DPR: pseudo elements</title>
+ <link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
+ <link rel="match" href="image-pseudo-element-content-dpr-ref.html" />
+ <meta name="assert" content="Assert that content-dpr is taken into account for images in pseudo-elements">
+ <style>
+ body::after {
+ content: url(resources/dpr.py?name=square.png&mimeType=image/png&dpr=2);
+ }
+ </style>
+ </head>
+ <body>
+ The following squares should be identical <br />
+ <img src="resources/square.png" width="50" />
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html b/tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html
new file mode 100644
index 00000000000..27ce1be8b0d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions-ref.html
@@ -0,0 +1,10 @@
+<html>
+ <head>
+ <title>Content-DPR: render natural size</title>
+ <link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
+ </head>
+ <body>
+ <img src="resources/square.png" style="width: 100px; height: 120px" />
+ <img src="resources/square.png" style="width: 100px; height: 120px" />
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions.html b/tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions.html
new file mode 100644
index 00000000000..783fb03a3b0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/image-with-content-dpr-and-explicit-dimensions.html
@@ -0,0 +1,12 @@
+<html>
+ <head>
+ <title>Content-DPR: with size attributes</title>
+ <link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
+ <link rel="match" href="image-with-content-dpr-and-explicit-dimensions-ref.html" />
+ <meta name="assert" content="Assert explicit width/height attributes to supercede content-dpr">
+ </head>
+ <body>
+ <img src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=4.0" width="100px" height="120px" />
+ <img src="resources/dpr.py?name=square.png&mimeType=image/png&dpr=4.0" style="width: 100px; height: 120px;" />
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/client-hints/image-with-dpr-header.html b/tests/wpt/web-platform-tests/content-dpr/image-with-dpr-header.html
index 6c4e6084476..6c4e6084476 100644
--- a/tests/wpt/web-platform-tests/client-hints/image-with-dpr-header.html
+++ b/tests/wpt/web-platform-tests/content-dpr/image-with-dpr-header.html
diff --git a/tests/wpt/web-platform-tests/content-dpr/resources/background.png b/tests/wpt/web-platform-tests/content-dpr/resources/background.png
new file mode 100644
index 00000000000..6db6c6b1b9d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/resources/background.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/client-hints/resources/dpr.py b/tests/wpt/web-platform-tests/content-dpr/resources/dpr.py
index 14d7d550fe2..14d7d550fe2 100644
--- a/tests/wpt/web-platform-tests/client-hints/resources/dpr.py
+++ b/tests/wpt/web-platform-tests/content-dpr/resources/dpr.py
diff --git a/tests/wpt/web-platform-tests/content-dpr/resources/square.png b/tests/wpt/web-platform-tests/content-dpr/resources/square.png
new file mode 100644
index 00000000000..01c9666a8de
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/resources/square.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr-ref.html b/tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr-ref.html
new file mode 100644
index 00000000000..58cbeb436fc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr-ref.html
@@ -0,0 +1,29 @@
+<html>
+ <head>
+ <title>Content-DPR: css tiled background</title>
+ <link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
+ <meta name="assert" content="Assert that content-dpr is taken into account for tiled background images">
+ <style>
+ #bg, #bg2 {
+ background-image: url(resources/background.png);
+ width: 32px;
+ height: 32px;
+ }
+ #bg {
+ background-size: 16px 16px;
+ }
+
+ #bg2 {
+ background-size: 8px 8px;
+ }
+ </style>
+ </head>
+ <body>
+ The next div should have 16 boxes
+ <div id="bg">
+ </div>
+ The next div should have 64 boxes
+ <div id="bg2">
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr.html b/tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr.html
new file mode 100644
index 00000000000..94f2f72d401
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-dpr/tiled-background-image-with-content-dpr.html
@@ -0,0 +1,27 @@
+<html>
+ <head>
+ <title>Content-DPR: css tiled background</title>
+ <link rel="author" title="Noam Rosenthal" href="noam@webkit.org">
+ <link rel="match" href="tiled-background-image-with-content-dpr-ref.html" />
+ <meta name="assert" content="Assert that content-dpr is taken into account for tiled background images">
+ <style>
+ #bg, #bg2 {
+ width: 32px;
+ height: 32px;
+ background-image: url(resources/dpr.py?name=background.png&mimeType=image/png&dpr=2.0);
+ }
+
+ #bg2 {
+ background-size: 8px 8px;
+ }
+ </style>
+ </head>
+ <body>
+ The next div should have 16 boxes
+ <div id="bg">
+ </div>
+ The next div should have 64 boxes
+ <div id="bg2">
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js
new file mode 100644
index 00000000000..7df0b7002f3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.js
@@ -0,0 +1,28 @@
+// META: title=Cookie Store API: ServiceWorker without cookie change subscriptions
+// META: global=!default,serviceworker,window
+// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
+
+'use strict';
+
+promise_test(async testCase => {
+ if (self.GLOBAL.isWindow()) {
+ const registration = await service_worker_unregister_and_register(
+ testCase, 'resources/empty_sw.js', 'resources/does/not/exist');
+ testCase.add_cleanup(() => registration.unregister());
+
+ // Wait for this service worker to become active before snapshotting the
+ // subscription state, for consistency with other tests.
+ await wait_for_state(testCase, registration.installing, 'activated');
+
+ self.registration = registration;
+ } else {
+ // Wait for this service worker to become active before snapshotting the
+ // subscription state, for consistency with other tests.
+ await new Promise(resolve => {
+ self.addEventListener('activate', event => { resolve(); });
+ });
+ }
+
+ const subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(subscriptions.length, 0);
+}, 'getSubscriptions returns an empty array when there are no subscriptions');
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js
new file mode 100644
index 00000000000..625f5212615
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js
@@ -0,0 +1,70 @@
+// META: title=Cookie Store API: ServiceWorker with multiple cookie change subscriptions
+// META: global=!default,serviceworker,window
+// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
+
+'use strict';
+
+// sort() comparator that uses the < operator.
+//
+// This is intended to be used for sorting strings. Using < is preferred to
+// localeCompare() because the latter has some implementation-dependent
+// behavior.
+function CompareStrings(a, b) {
+ return a < b ? -1 : (b < a ? 1 : 0);
+}
+
+promise_test(async testCase => {
+ let scope;
+
+ if (self.GLOBAL.isWindow()) {
+ scope = '/cookie-store/resources/does/not/exist';
+
+ const registration = await service_worker_unregister_and_register(
+ testCase, 'resources/empty_sw.js', scope);
+ testCase.add_cleanup(() => registration.unregister());
+
+ // Must wait for the service worker to enter the 'activated' state before
+ // subscribing to cookiechange events.
+ await wait_for_state(testCase, registration.installing, 'activated');
+
+ self.registration = registration;
+ } else {
+ scope = '/cookie-store/does/not/exist';
+
+ // Must wait for the service worker to enter the 'activated' state before
+ // subscribing to cookiechange events.
+ await new Promise(resolve => {
+ self.addEventListener('activate', event => { resolve(); });
+ });
+ }
+
+ {
+ const subscriptions = [
+ { name: 'cookie-name1', matchType: 'equals', url: `${scope}/path1` },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+ }
+ {
+ const subscriptions = [
+ { }, // Test the default values for subscription properties.
+ { name: 'cookie-prefix', matchType: 'starts-with' },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+ }
+
+ const subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(subscriptions.length, 3);
+
+ subscriptions.sort((a, b) => CompareStrings(`${a.name}`, `${b.name}`));
+
+ assert_equals(subscriptions[0].name, 'cookie-name1');
+ assert_equals('equals', subscriptions[0].matchType);
+
+ assert_equals(subscriptions[1].name, 'cookie-prefix');
+ assert_equals('starts-with', subscriptions[1].matchType);
+
+ assert_false('name' in subscriptions[2]);
+ assert_equals('starts-with', subscriptions[2].matchType);
+}, 'getSubscriptions returns a subscription passed to subscribe');
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js
new file mode 100644
index 00000000000..04c21447c5d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js
@@ -0,0 +1,47 @@
+// META: title=Cookie Store API: ServiceWorker with one cookie change subscription
+// META: global=!default,serviceworker,window
+// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
+
+'use strict';
+
+promise_test(async testCase => {
+ let scope;
+
+ if (self.GLOBAL.isWindow()) {
+ scope = '/cookie-store/resources/does/not/exist';
+
+ const registration = await service_worker_unregister_and_register(
+ testCase, 'resources/empty_sw.js', scope);
+ testCase.add_cleanup(() => registration.unregister());
+
+ // Must wait for the service worker to enter the 'activated' state before
+ // subscribing to cookiechange events.
+ await wait_for_state(testCase, registration.installing, 'activated');
+
+ self.registration = registration;
+ } else {
+ scope = '/cookie-store/does/not/exist';
+
+ // Must wait for the service worker to enter the 'activated' state before
+ // subscribing to cookiechange events.
+ await new Promise(resolve => {
+ self.addEventListener('activate', event => { resolve(); });
+ });
+ }
+
+ {
+ const subscriptions = [
+ { name: 'cookie-name', matchType: 'equals', url: `${scope}/path` }
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+ }
+
+ const subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(subscriptions.length, 1);
+
+ assert_equals(subscriptions[0].name, 'cookie-name');
+ assert_equals(subscriptions[0].matchType, 'equals');
+ assert_equals(subscriptions[0].url,
+ (new URL(`${scope}/path`, self.location.href)).href);
+}, 'getSubscriptions returns a subscription passed to subscribe');
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_subscriptions_empty.tentative.https.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_subscriptions_empty.tentative.https.window.js
new file mode 100644
index 00000000000..907a34b4de6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_subscriptions_empty.tentative.https.window.js
@@ -0,0 +1,13 @@
+// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
+
+'use strict';
+
+promise_test(async testCase => {
+ const registration = await service_worker_unregister_and_register(
+ testCase, 'resources/empty_sw.js', 'resources/does/not/exist');
+ testCase.add_cleanup(() => registration.unregister());
+ await wait_for_state(testCase, registration.installing, 'activated');
+
+ const subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(0, subscriptions.length);
+}, 'Newly registered and activated service worker has no subscriptions');
diff --git a/tests/wpt/web-platform-tests/cookie-store/resources/always_changing_sw.sub.js b/tests/wpt/web-platform-tests/cookie-store/resources/always_changing_sw.sub.js
new file mode 100644
index 00000000000..9fdf99848fa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/resources/always_changing_sw.sub.js
@@ -0,0 +1,6 @@
+// This script changes every time it is fetched.
+
+// When used as a service worker script, this causes the Service Worker to be
+// updated on every ServiceWorkerRegistration.update() call.
+
+// The following bytes change on every fetch: {{uuid()}}
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.js
deleted file mode 100644
index 41cbed01a5b..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.js
+++ /dev/null
@@ -1,108 +0,0 @@
-self.GLOBAL = {
- isWindow: function() { return false; },
- isWorker: function() { return true; },
-};
-importScripts("/resources/testharness.js");
-
-self.addEventListener('install', (event) => {
- event.waitUntil((async () => {
- // The subscribeToChanges calls are not done in parallel on purpose. Having
- // multiple in-flight requests introduces failure modes aside from the
- // cookie change logic that this test aims to cover.
- try {
- await cookieStore.subscribeToChanges([
- { name: 'cookie-name1', matchType: 'equals', url: '/cookie-store/path1' }]);
- await cookieStore.subscribeToChanges([
- { }, // Test the default values for subscription properties.
- { name: 'cookie-prefix', matchType: 'starts-with' },
- ]);
-
- // If the worker enters the "redundant" state, the UA may terminate it
- // before all tests have been reported to the client. Stifle errors in
- // order to avoid this and ensure all tests are consistently reported.
- } catch (err) {}
- })());
-});
-
-// Resolves when the service worker receives the 'activate' event.
-const kServiceWorkerActivatedPromise = new Promise(resolve => {
- self.addEventListener('activate', event => { resolve(); });
-});
-
-// sort() comparator that uses the < operator.
-//
-// This is intended to be used for sorting strings. Using < is preferred to
-// localeCompare() because the latter has some implementation-dependent
-// behavior.
-function CompareStrings(a, b) {
- return a < b ? -1 : (b < a ? 1 : 0);
-}
-
-promise_test(async testCase => {
- await kServiceWorkerActivatedPromise;
-
- const subscriptions = await cookieStore.getChangeSubscriptions();
- assert_equals(subscriptions.length, 3);
-
- subscriptions.sort((a, b) => CompareStrings(`${a.name}`, `${b.name}`));
-
- assert_equals(subscriptions[0].name, 'cookie-name1');
- assert_equals('equals', subscriptions[0].matchType);
-
- assert_equals(subscriptions[1].name, 'cookie-prefix');
- assert_equals('starts-with', subscriptions[1].matchType);
-
- assert_false('name' in subscriptions[2]);
- assert_equals('starts-with', subscriptions[2].matchType);
-}, 'getChangeSubscriptions returns subscriptions passed to subscribeToChanges');
-
-promise_test(async testCase => {
- promise_rejects(
- testCase, new TypeError(),
- cookieStore.subscribeToChanges([{ name: 'cookie-name2' }]));
-}, 'subscribeToChanges rejects when called outside the install handler');
-
-
-// Accumulates cookiechange events dispatched to the service worker.
-let g_cookie_changes = [];
-
-// Resolved when a cookiechange event is received. Rearmed by
-// ResetCookieChangeReceivedPromise().
-let g_cookie_change_received_promise = null;
-let g_cookie_change_received_promise_resolver = null;
-self.addEventListener('cookiechange', (event) => {
- g_cookie_changes.push(event);
- if (g_cookie_change_received_promise_resolver)
- g_cookie_change_received_promise_resolver();
-});
-function RearmCookieChangeReceivedPromise() {
- g_cookie_change_received_promise = new Promise((resolve) => {
- g_cookie_change_received_promise_resolver = resolve;
- });
-}
-RearmCookieChangeReceivedPromise();
-
-promise_test(async testCase => {
- await kServiceWorkerActivatedPromise;
-
- await cookieStore.set('cookie-name', 'cookie-value');
- testCase.add_cleanup(async () => {
- await cookieStore.delete('cookie-name');
- });
- testCase.add_cleanup(() => { g_cookie_changes = []; });
-
- await g_cookie_change_received_promise;
- testCase.add_cleanup(() => RearmCookieChangeReceivedPromise());
-
- assert_equals(g_cookie_changes.length, 1);
- const event = g_cookie_changes[0]
- assert_equals(event.type, 'cookiechange');
- assert_equals(event.changed.length, 1);
- assert_equals(event.changed[0].name, 'cookie-name');
- assert_equals(event.changed[0].value, 'cookie-value');
- assert_equals(event.deleted.length, 0);
- assert_true(event instanceof ExtendableCookieChangeEvent);
- assert_true(event instanceof ExtendableEvent);
-}, 'cookiechange dispatched with cookie change that matches subscription');
-
-done();
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html
deleted file mode 100644
index 375bce622c3..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions.tentative.https.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: cookie change events in ServiceWorker</title>
-<link rel="help" href="https://github.com/WICG/cookie-store">
-<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-(async () => {
- // Not using an explicit scope here in order for script URL to be in scope,
- // to cover implicit subscription URL construction.
-
- const registration = await navigator.serviceWorker.register(
- 'serviceworker_cookieStore_subscriptions.js');
- add_completion_callback(() => {
- registration.unregister();
- });
-
- fetch_tests_from_worker(registration.installing);
-})();
-</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.js
deleted file mode 100644
index 293969e5b8f..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.js
+++ /dev/null
@@ -1,62 +0,0 @@
-self.GLOBAL = {
- isWindow: function() { return false; },
- isWorker: function() { return true; },
-};
-importScripts("/resources/testharness.js");
-
-self.addEventListener('install', (event) => {
- event.waitUntil((async () => {
- try {
- await cookieStore.subscribeToChanges([
- { name: 'cookie-name', matchType: 'equals',
- url: '/cookie-store/scope/path' }]);
-
- // If the worker enters the "redundant" state, the UA may terminate it
- // before all tests have been reported to the client. Stifle errors in
- // order to avoid this and ensure all tests are consistently reported.
- } catch (err) {}
- })());
-});
-
-// Resolves when the service worker receives the 'activate' event.
-const kServiceWorkerActivatedPromise = new Promise(resolve => {
- self.addEventListener('activate', event => { resolve(); });
-});
-
-promise_test(async testCase => {
- await kServiceWorkerActivatedPromise;
-
- const subscriptions = await cookieStore.getChangeSubscriptions();
- assert_equals(subscriptions.length, 1);
-
- assert_equals(subscriptions[0].name, 'cookie-name');
- assert_equals('equals', subscriptions[0].matchType);
-}, 'getChangeSubscriptions returns a subscription passed to subscribeToChanges');
-
-
-promise_test(async testCase => {
- await kServiceWorkerActivatedPromise;
-
- const cookie_change_received_promise = new Promise((resolve) => {
- self.addEventListener('cookiechange', (event) => {
- resolve(event);
- });
- });
-
- await cookieStore.set('cookie-name', 'cookie-value');
- testCase.add_cleanup(async () => {
- await cookieStore.delete('cookie-name');
- });
-
- const event = await cookie_change_received_promise;
- assert_equals(event.type, 'cookiechange');
- assert_equals(event.changed.length, 1);
- assert_equals(event.changed[0].name, 'cookie-name');
- assert_equals(event.changed[0].value, 'cookie-value');
- assert_equals(event.deleted.length, 0);
- assert_true(event instanceof ExtendableCookieChangeEvent);
- assert_true(event instanceof ExtendableEvent);
-}, 'cookiechange dispatched with cookie change that matches subscription ' +
- 'to event handler registered with addEventListener');
-
-done();
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html
deleted file mode 100644
index 0353bc2c209..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_basic.tentative.https.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: cookie change events in ServiceWorker</title>
-<link rel="help" href="https://github.com/WICG/cookie-store">
-<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-(async () => {
- const scope = 'scope';
-
- const registration = await navigator.serviceWorker.register(
- 'serviceworker_cookieStore_subscriptions_basic.js', {scope});
- add_completion_callback(() => {
- registration.unregister();
- });
-
- fetch_tests_from_worker(registration.installing);
-})();
-</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.js
deleted file mode 100644
index b6231869974..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.js
+++ /dev/null
@@ -1,32 +0,0 @@
-self.GLOBAL = {
- isWindow: function() { return false; },
- isWorker: function() { return true; },
-};
-importScripts("/resources/testharness.js");
-
-self.addEventListener('install', (event) => {
- event.waitUntil((async () => {
- try {
- await cookieStore.subscribeToChanges([]);
-
- // If the worker enters the "redundant" state, the UA may terminate it
- // before all tests have been reported to the client. Stifle errors in
- // order to avoid this and ensure all tests are consistently reported.
- } catch (err) {}
- })());
-});
-
-// Resolves when the service worker receives the 'activate' event.
-const kServiceWorkerActivatedPromise = new Promise(resolve => {
- self.addEventListener('activate', event => { resolve(); });
-});
-
-promise_test(async testCase => {
- await kServiceWorkerActivatedPromise;
-
- const subscriptions = await cookieStore.getChangeSubscriptions();
- assert_equals(subscriptions.length, 0);
-
-}, 'getChangeSubscriptions returns an empty array when there are no subscriptions');
-
-done();
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html
deleted file mode 100644
index 38ec4048f19..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_empty.tentative.https.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: ServiceWorker without cookie change subscriptions</title>
-<link rel="help" href="https://github.com/WICG/cookie-store">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-(async () => {
- const scope = 'scope';
-
- const registration = await navigator.serviceWorker.register(
- 'serviceworker_cookieStore_subscriptions_empty.js', {scope});
- add_completion_callback(() => {
- registration.unregister();
- });
-
- fetch_tests_from_worker(registration.installing);
-})();
-</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html
deleted file mode 100644
index ee9713e933b..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.tentative.https.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: oncookiechange event handler attribute in ServiceWorker</title>
-<link rel="help" href="https://github.com/WICG/cookie-store">
-<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-(async () => {
- const scope = 'scope';
-
- const registration = await navigator.serviceWorker.register(
- 'serviceworker_cookieStore_subscriptions_eventhandler_attribute.js', {scope});
- add_completion_callback(() => {
- registration.unregister();
- });
-
- fetch_tests_from_worker(registration.installing);
-})();
-</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html
deleted file mode 100644
index b8ad46a5710..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.tentative.https.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<meta charset="utf-8">
-<title>Async Cookies: ServiceWorker cookiechange event filtering</title>
-<link rel="help" href="https://github.com/WICG/cookie-store">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-'use strict';
-
-(async () => {
- const scope = 'scope';
-
- const registration = await navigator.serviceWorker.register(
- 'serviceworker_cookieStore_subscriptions_mismatch.js', {scope});
- add_completion_callback(() => {
- registration.unregister();
- });
-
- fetch_tests_from_worker(registration.installing);
-})();
-</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js
deleted file mode 100644
index 7fc8eabc570..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.sub.js
+++ /dev/null
@@ -1,24 +0,0 @@
-self.GLOBAL = {
- isWindow: function() { return false; },
- isWorker: function() { return true; },
-};
-importScripts("/resources/testharness.js");
-
-self.addEventListener('install', event => {
- event.waitUntil((async () => {
- try {
- await cookieStore.subscribeToChanges([
- { name: 'cookie-name', matchType: 'equals',
- url: '/cookie-store/scope/path' }]);
-
- // If the worker enters the "redundant" state, the UA may terminate it
- // before all tests have been reported to the client. Stifle errors in
- // order to avoid this and ensure all tests are consistently reported.
- } catch (err) {}
- })());
-});
-
-self.addEventListener('message', async event => {
- const subscriptions = await cookieStore.getChangeSubscriptions();
- event.ports[0].postMessage(subscriptions.length);
-}); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html
index a0923548c78..bff1f04bad0 100644
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html
+++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html
@@ -1,6 +1,6 @@
<!doctype html>
<meta charset="utf-8">
-<title>Async Cookies: reset cookie change subscription list</title>
+<title>Cookie Store API: reset cookie change subscription list</title>
<link rel="help" href="https://github.com/WICG/cookie-store">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -8,30 +8,48 @@
</script>
<script src='resources/helpers.js'></script>
<script>
-const worker_url = 'serviceworker_cookieStore_subscriptions_reset.sub.js';
-const scope = '/cookie-store/';
-
-async function getSubscriptionCount(serviceWorker) {
- return sendMessageOverChannel('', serviceWorker);
-}
+'use strict';
promise_test(async t => {
const registration = await service_worker_unregister_and_register(
- t, worker_url, scope);
+ t, 'resources/empty_sw.js', 'resources/does/not/exist');
t.add_cleanup(() => registration.unregister());
await wait_for_state(t, registration.installing, 'activated');
- assert_equals(await getSubscriptionCount(registration.active), 1,
+ await registration.cookies.subscribe(
+ [{ name: 'cookie-name', matchType: 'equals' }]);
+ const original_subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(original_subscriptions.length, 1,
'subscription count before unregistration');
await registration.unregister();
const new_registration = await navigator.serviceWorker.register(
- worker_url, { scope });
+ 'resources/empty_sw.js', { scope: 'resources/does/not/exist' });
t.add_cleanup(() => new_registration.unregister());
await wait_for_state(t, new_registration.installing, 'activated');
- assert_equals(await getSubscriptionCount(new_registration.active), 1,
+ const new_subscriptions = await new_registration.cookies.getSubscriptions();
+ assert_equals(new_subscriptions.length, 0,
'subscription count after unregistration');
-}, `cookiechange subscription list resets across service worker
- unregistrations`);
+}, 'cookiechange subscriptions reset across service worker unregistrations');
+
+promise_test(async t => {
+ const registration = await service_worker_unregister_and_register(
+ t, 'resources/always_changing_sw.sub.js', 'resources/does/not/exist');
+ t.add_cleanup(() => registration.unregister());
+ await wait_for_state(t, registration.installing, 'activated');
+ await registration.cookies.subscribe(
+ [{ name: 'cookie-name', matchType: 'equals' }]);
+ const original_subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(original_subscriptions.length, 1,
+ 'subscription count before update');
+
+ await registration.update();
+ const worker = await wait_for_update(t, registration);
+ await wait_for_state(t, worker, 'activated');
+
+ const update_subscriptions = await registration.cookies.getSubscriptions();
+ assert_equals(update_subscriptions.length, 1,
+ 'subscription count after update');
+}, 'cookiechange subscriptions persist across service worker updates');
</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.js
index bd37b9be1ee..bfbea7d3de3 100644
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_mismatch.js
+++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.js
@@ -1,28 +1,16 @@
-self.GLOBAL = {
- isWindow: function() { return false; },
- isWorker: function() { return true; },
-};
-importScripts("/resources/testharness.js");
-
-self.addEventListener('install', (event) => {
- event.waitUntil((async () => {
- try {
- await cookieStore.subscribeToChanges([
- { name: 'cookie-name', matchType: 'equals',
- url: '/cookie-store/scope/path' }]);
-
- // If the worker enters the "redundant" state, the UA may terminate it
- // before all tests have been reported to the client. Stifle errors in
- // order to avoid this and ensure all tests are consistently reported.
- } catch (err) {}
- })());
-});
+// META: title=Cookie Store API: cookiechange event in ServiceWorker with mismatched subscription
+// META: global=!default,serviceworker
+
+'use strict';
+
+const kScope = '/cookie-store/does/not/exist';
// Resolves when the service worker receives the 'activate' event.
const kServiceWorkerActivatedPromise = new Promise((resolve) => {
self.addEventListener('activate', event => { resolve(); });
});
+// Resolves when a cookiechange event is received.
const kCookieChangeReceivedPromise = new Promise((resolve) => {
self.addEventListener('cookiechange', (event) => {
resolve(event);
@@ -32,6 +20,12 @@ const kCookieChangeReceivedPromise = new Promise((resolve) => {
promise_test(async testCase => {
await kServiceWorkerActivatedPromise;
+ const subscriptions = [
+ { name: 'cookie-name', matchType: 'equals', url: `${kScope}/path` },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+
await cookieStore.set('another-cookie-name', 'cookie-value');
testCase.add_cleanup(async () => {
await cookieStore.delete('another-cookie-name');
@@ -46,6 +40,7 @@ promise_test(async testCase => {
assert_equals(event.changed.length, 1);
assert_equals(event.changed[0].name, 'cookie-name');
assert_equals(event.changed[0].value, 'cookie-value');
+ assert_equals(event.deleted.length, 0);
+ assert_true(event instanceof ExtendableCookieChangeEvent);
+ assert_true(event instanceof ExtendableEvent);
}, 'cookiechange not dispatched for change that does not match subscription');
-
-done();
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.js
new file mode 100644
index 00000000000..17baa7fcbee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.js
@@ -0,0 +1,70 @@
+// META: title=Cookie Store API: cookiechange event in ServiceWorker with multiple subscriptions
+// META: global=!default,serviceworker
+
+'use strict';
+
+const kScope = '/cookie-store/does/not/exist';
+
+// Resolves when the service worker receives the 'activate' event.
+const kServiceWorkerActivatedPromise = new Promise((resolve) => {
+ self.addEventListener('activate', event => { resolve(); });
+});
+
+// Accumulates cookiechange events dispatched to the service worker.
+let g_cookie_changes = [];
+
+// Resolved when a cookiechange event is received. Rearmed by
+// RearmCookieChangeReceivedPromise().
+let g_cookie_change_received_promise = null;
+let g_cookie_change_received_promise_resolver = null;
+self.addEventListener('cookiechange', (event) => {
+ g_cookie_changes.push(event);
+ if (g_cookie_change_received_promise_resolver) {
+ g_cookie_change_received_promise_resolver();
+ }
+});
+function RearmCookieChangeReceivedPromise() {
+ g_cookie_change_received_promise = new Promise((resolve) => {
+ g_cookie_change_received_promise_resolver = resolve;
+ });
+}
+RearmCookieChangeReceivedPromise();
+
+promise_test(async testCase => {
+ await kServiceWorkerActivatedPromise;
+
+ {
+ const subscriptions = [
+ { name: 'cookie-name1', matchType: 'equals', url: `${kScope}/path1` },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+ }
+ {
+ const subscriptions = [
+ { }, // Test the default values for subscription properties.
+ { name: 'cookie-prefix', matchType: 'starts-with' },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+ }
+
+ await cookieStore.set('cookie-name', 'cookie-value');
+ testCase.add_cleanup(async () => {
+ await cookieStore.delete('cookie-name');
+ });
+ testCase.add_cleanup(() => { g_cookie_changes = []; });
+
+ await g_cookie_change_received_promise;
+ testCase.add_cleanup(() => RearmCookieChangeReceivedPromise());
+
+ assert_equals(g_cookie_changes.length, 1);
+ const event = g_cookie_changes[0];
+ assert_equals(event.type, 'cookiechange');
+ assert_equals(event.changed.length, 1);
+ assert_equals(event.changed[0].name, 'cookie-name');
+ assert_equals(event.changed[0].value, 'cookie-value');
+ assert_equals(event.deleted.length, 0);
+ assert_true(event instanceof ExtendableCookieChangeEvent);
+ assert_true(event instanceof ExtendableEvent);
+}, 'cookiechange dispatched with cookie change that matches subscription');
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.js
new file mode 100644
index 00000000000..b1cbeb9a12f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.js
@@ -0,0 +1,87 @@
+// META: title=Cookie Store API: cookiechange event in ServiceWorker with overlapping subscriptions
+// META: global=!default,serviceworker
+
+'use strict';
+
+const kScope = '/cookie-store/does/not/exist';
+
+// Resolves when the service worker receives the 'activate' event.
+const kServiceWorkerActivatedPromise = new Promise((resolve) => {
+ self.addEventListener('activate', event => { resolve(); });
+});
+
+// Accumulates cookiechange events dispatched to the service worker.
+let g_cookie_changes = [];
+
+// Resolved when a cookiechange event is received. Rearmed by
+// RearmCookieChangeReceivedPromise().
+let g_cookie_change_received_promise = null;
+let g_cookie_change_received_promise_resolver = null;
+self.addEventListener('cookiechange', (event) => {
+ g_cookie_changes.push(event);
+ if (g_cookie_change_received_promise_resolver) {
+ g_cookie_change_received_promise_resolver();
+ RearmCookieChangeReceivedPromise();
+ }
+});
+function RearmCookieChangeReceivedPromise() {
+ g_cookie_change_received_promise = new Promise((resolve) => {
+ g_cookie_change_received_promise_resolver = resolve;
+ });
+}
+RearmCookieChangeReceivedPromise();
+
+promise_test(async testCase => {
+ await kServiceWorkerActivatedPromise;
+
+ const subscriptions = [
+ { name: 'coo', matchType: 'starts-with' },
+ { name: 'cookie', matchType: 'starts-with' },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+
+ await cookieStore.set('cookie-name', 'cookie-value');
+ testCase.add_cleanup(async () => {
+ await cookieStore.delete('cookie-name');
+ });
+ testCase.add_cleanup(() => { g_cookie_changes = []; });
+
+ await g_cookie_change_received_promise;
+ testCase.add_cleanup(() => RearmCookieChangeReceivedPromise());
+
+ // To ensure that we are accounting for all events dispatched by the first
+ // cookie change, we initiate and listen for a final cookie change that we
+ // know will dispatch a single event.
+ await cookieStore.set('coo', 'coo-value');
+ testCase.add_cleanup(async () => {
+ await cookieStore.delete('coo');
+ });
+ testCase.add_cleanup(() => { g_cookie_changes = []; });
+
+ await g_cookie_change_received_promise;
+ testCase.add_cleanup(() => RearmCookieChangeReceivedPromise());
+
+ assert_equals(g_cookie_changes.length, 2);
+ {
+ const event = g_cookie_changes[0];
+ assert_equals(event.type, 'cookiechange');
+ assert_equals(event.changed.length, 1);
+ assert_equals(event.changed[0].name, 'cookie-name');
+ assert_equals(event.changed[0].value, 'cookie-value');
+ assert_equals(event.deleted.length, 0);
+ assert_true(event instanceof ExtendableCookieChangeEvent);
+ assert_true(event instanceof ExtendableEvent);
+ }
+ {
+ const event = g_cookie_changes[1];
+ assert_equals(event.type, 'cookiechange');
+ assert_equals(event.changed.length, 1);
+ assert_equals(event.changed[0].name, 'coo');
+ assert_equals(event.changed[0].value, 'coo-value');
+ assert_equals(event.deleted.length, 0);
+ assert_true(event instanceof ExtendableCookieChangeEvent);
+ assert_true(event instanceof ExtendableEvent);
+ }
+}, '1 cookiechange event dispatched with cookie change that matches multiple ' +
+ 'subscriptions');
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.js
index 258441921bf..4cfc47b39fb 100644
--- a/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookieStore_subscriptions_eventhandler_attribute.js
+++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.js
@@ -1,37 +1,29 @@
-self.GLOBAL = {
- isWindow: function() { return false; },
- isWorker: function() { return true; },
-};
-importScripts("/resources/testharness.js");
-
-self.addEventListener('install', (event) => {
- event.waitUntil((async () => {
- try {
- await cookieStore.subscribeToChanges([
- { name: 'cookie-name', matchType: 'equals',
- url: '/cookie-store/scope/path' }]);
-
- // If the worker enters the "redundant" state, the UA may terminate it
- // before all tests have been reported to the client. Stifle errors in
- // order to avoid this and ensure all tests are consistently reported.
- } catch (err) {}
- })());
-});
+// META: title=Cookie Store API: cookiechange event in ServiceWorker with single subscription
+// META: global=!default,serviceworker
+
+'use strict';
+
+const kScope = '/cookie-store/does/not/exist';
// Resolves when the service worker receives the 'activate' event.
const kServiceWorkerActivatedPromise = new Promise((resolve) => {
self.addEventListener('activate', event => { resolve(); });
});
-const kCookieChangeReceivedPromise = new Promise((resolve) => {
- self.addEventListener('cookiechange', (event) => {
- resolve(event);
- });
+// Resolves when a cookiechange event is received.
+const kCookieChangeReceivedPromise = new Promise(resolve => {
+ self.addEventListener('cookiechange', event => { resolve(event); });
});
promise_test(async testCase => {
await kServiceWorkerActivatedPromise;
+ const subscriptions = [
+ { name: 'cookie-name', matchType: 'equals', url: `${kScope}/path` },
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+
await cookieStore.set('cookie-name', 'cookie-value');
testCase.add_cleanup(async () => {
await cookieStore.delete('cookie-name');
@@ -46,6 +38,4 @@ promise_test(async testCase => {
assert_true(event instanceof ExtendableCookieChangeEvent);
assert_true(event instanceof ExtendableEvent);
}, 'cookiechange dispatched with cookie change that matches subscription ' +
- 'to event handler registered with oncookiechange');
-
-done();
+ 'to cookiechange event handler registered with addEventListener');
diff --git a/tests/wpt/web-platform-tests/cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.js b/tests/wpt/web-platform-tests/cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.js
new file mode 100644
index 00000000000..d3fe3281aca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.js
@@ -0,0 +1,41 @@
+// META: title=Cookie Store API: oncookiechange event in ServiceWorker with single subscription
+// META: global=!default,serviceworker
+
+'use strict';
+
+const kScope = '/cookie-store/does/not/exist';
+
+// Resolves when the service worker receives the 'activate' event.
+const kServiceWorkerActivatedPromise = new Promise((resolve) => {
+ self.addEventListener('activate', event => { resolve(); });
+});
+
+// Resolves when a cookiechange event is received.
+const kCookieChangeReceivedPromise = new Promise(resolve => {
+ self.oncookiechange = event => { resolve(event); };
+});
+
+promise_test(async testCase => {
+ await kServiceWorkerActivatedPromise;
+
+ const subscriptions = [
+ { name: 'cookie-name', matchType: 'equals', url: `${kScope}/path` }
+ ];
+ await registration.cookies.subscribe(subscriptions);
+ testCase.add_cleanup(() => registration.cookies.unsubscribe(subscriptions));
+
+ await cookieStore.set('cookie-name', 'cookie-value');
+ testCase.add_cleanup(async () => {
+ await cookieStore.delete('cookie-name');
+ });
+
+ const event = await kCookieChangeReceivedPromise;
+ assert_equals(event.type, 'cookiechange');
+ assert_equals(event.changed.length, 1);
+ assert_equals(event.changed[0].name, 'cookie-name');
+ assert_equals(event.changed[0].value, 'cookie-value');
+ assert_equals(event.deleted.length, 0);
+ assert_true(event instanceof ExtendableCookieChangeEvent);
+ assert_true(event instanceof ExtendableEvent);
+}, 'cookiechange dispatched with cookie change that matches subscription ' +
+ 'to cookiechange event handler registered with addEventListener');
diff --git a/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html b/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html
new file mode 100644
index 00000000000..d6480edd621
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/linebox/inline-negative-margin-minmax-crash-001.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>CSS Test: Check inline negative margin with fit-content should not cause hang</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://crbug.com/1028817">
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#inline-width">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<style>
+div {
+ width: fit-content;
+}
+span {
+ margin-left: -15px;
+}
+</style>
+<body>
+ <div>| <span>Operation</span></div>
+<script>test(() => {});</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-image-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-image-interpolation.html
index b442c4e9120..feda6afebed 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-image-interpolation.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/background-image-interpolation.html
@@ -38,19 +38,26 @@ test_interpolation({
}, [
{at: -0.3, expect: from},
{at: 0, expect: from},
- {at: 0.3, expect: 'cross-fade(' + from + ', ' + to + ', 0.3)'},
- {at: 0.6, expect: 'cross-fade(' + from + ', ' + to + ', 0.6)'},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
{at: 1, expect: to},
{at: 1.5, expect: to},
]);
// initial to image
to = 'url(../resources/green-100.png)';
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: 'initial',
to: to,
-});
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
// inherit to image
from = 'url(../resources/blue-100.png)';
@@ -62,18 +69,25 @@ test_interpolation({
}, [
{at: -0.3, expect: from},
{at: 0, expect: from},
- {at: 0.3, expect: 'cross-fade(' + from + ', ' + to + ', 0.3)'},
- {at: 0.6, expect: 'cross-fade(' + from + ', ' + to + ', 0.6)'},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
{at: 1, expect: to},
{at: 1.5, expect: to},
]);
// unset to image
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: 'unset',
to: to,
-});
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
// Image to image
from = 'url(../resources/blue-100.png)';
@@ -85,8 +99,8 @@ test_interpolation({
}, [
{at: -0.3, expect: from},
{at: 0, expect: from},
- {at: 0.3, expect: 'cross-fade(' + from + ', ' + to + ', 0.3)'},
- {at: 0.6, expect: 'cross-fade(' + from + ', ' + to + ', 0.6)'},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
{at: 1, expect: to},
{at: 1.5, expect: to},
]);
@@ -94,38 +108,66 @@ test_interpolation({
// Image to gradient
from = 'url(../resources/blue-100.png)';
to = 'linear-gradient(45deg, blue, orange)';
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: from,
to: to,
-});
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
// Image to crossfade
from = 'url(../resources/blue-100.png)';
to = 'cross-fade(url(../resources/green-100.png), url(../resources/stripes-100.png), 0.5)';
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: from,
to: to,
-});
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
// Gradient to gradient
from = 'linear-gradient(-45deg, red, yellow)';
to = 'linear-gradient(45deg, blue, orange)';
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: from,
to: to,
-});
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
// Keyword to image
from = 'none';
to = 'url(../resources/green-100.png)';
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: from,
to: to,
-});
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
// Multiple to multiple
var fromA = 'url(../resources/stripes-100.png)';
@@ -141,8 +183,8 @@ test_interpolation({
}, [
{at: -0.3, expect: from},
{at: 0, expect: from},
- {at: 0.3, expect: 'cross-fade(' + fromA + ', ' + toA + ', 0.3), cross-fade(' + fromB + ', ' + toB + ', 0.3)'},
- {at: 0.6, expect: 'cross-fade(' + fromA + ', ' + toA + ', 0.6), cross-fade(' + fromB + ', ' + toB + ', 0.6)'},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
{at: 1, expect: to},
{at: 1.5, expect: to},
]);
@@ -161,10 +203,10 @@ test_interpolation({
// Animating background-image is not specified to be possible however we do it for backwards compatibility.
// With this in mind we kept the implementation simple at the expense of this corner case because there is
// no official specification to support.
- {at: -0.3, expect: from + ', ' + from},
+ {at: -0.3, expect: from},
{at: 0, expect: from},
- {at: 0.3, expect: 'cross-fade(' + from + ', ' + toA + ', 0.3), cross-fade(' + from + ', ' + toB + ', 0.3)'},
- {at: 0.6, expect: 'cross-fade(' + from + ', ' + toA + ', 0.6), cross-fade(' + from + ', ' + toB + ', 0.6)'},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
{at: 1, expect: to},
{at: 1.5, expect: to},
]);
@@ -172,10 +214,17 @@ test_interpolation({
// Multiple mismatched types
from = 'url(../resources/blue-100.png), none';
to = 'url(../resources/stripes-100.png), url(../resources/green-100.png)';
-test_no_interpolation({
+test_interpolation({
property: 'background-image',
from: from,
to: to,
-});
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html
new file mode 100644
index 00000000000..26431334e4a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>border-image-slice interpolation stability</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-slice">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id="target"></div>
+<script>
+test(function() {
+ var player = target.animate([
+ {borderImageSlice: '50'},
+ {borderImageSlice: '50'},
+ ], {
+ duration: 1,
+ fill: 'forwards',
+ easing: 'cubic-bezier(0, 1.5, 1, 1.5)',
+ });
+ player.pause();
+ player.currentTime = 0.6345195996109396
+ assert_equals(getComputedStyle(target).borderImageSlice, '50');
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-break/fieldset-001-ref.html b/tests/wpt/web-platform-tests/css/css-break/fieldset-001-ref.html
new file mode 100644
index 00000000000..1422086da71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/fieldset-001-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html><head>
+<title>Reference: fragmenting a fieldset in multicol layout</title>
+<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+<style>
+ * {
+ color:black; background-color:white; font:16px/1 monospace; padding:0; margin:0;
+ }
+ body { width:600px; height:600px; }
+
+ .cols { columns:3; background:grey; margin-bottom: 10px; height:80px; column-fill:auto; }
+ .c2 { column-count:2; height:120px; }
+ legend { background:black; width:100px; height:19px; }
+ p {
+ position: relative;
+ border: solid;
+ border-width: 6px 3px 10px 7px;
+ margin: 3px 10px 7px 5px;
+ background-color: lightgrey;
+ }
+ p, legend {
+ background-clip: content-box;
+ padding: 10px 7px 20px 3px;
+ }
+ p { margin-top: 25px; }
+ legend {
+ position: absolute;
+ padding: 0;
+ border: 0 solid grey;
+ border-left-width: 3px;
+ border-right-width: 7px;
+ top: -18px; left: 3px;
+ }
+ p.sized {
+ height: 86px;
+ }
+ c { display:block; background:blue; opacity:.5; height:108px; }
+ pad { display:block; height: 21px; background-color: lightgrey;}
+</style>
+</head>
+<body>
+ <div class="cols">
+ <p><legend></legend><pad></pad><c></c></p>
+ </div>
+ <div class="cols c2">
+ <p><legend></legend><pad></pad><c></c></p>
+ </div>
+ <div class="cols">
+ <p class="sized"><legend></legend><pad></pad><c style="height:98px"></c><c style="width:154px;height:10px"></c></p>
+ </div>
+ <div class="cols c2">
+ <p class="sized"><legend></legend><pad></pad><c></c></p>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-break/fieldset-001.html b/tests/wpt/web-platform-tests/css/css-break/fieldset-001.html
new file mode 100644
index 00000000000..d320fe15beb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/fieldset-001.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html><head>
+<title>CSS Test: fragmenting a fieldset in multicol layout</title>
+<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+<link rel="help" href="https://drafts.csswg.org/css-break/#valdef-box-decoration-break-slice">
+<link rel="match" href="fieldset-001-ref.html">
+<style>
+ * {
+ color:black; background-color:white; font:16px/1 monospace; padding:0; margin:0;
+ }
+ body { width:600px; height:600px; }
+
+ .cols { columns:3; background:grey; margin-bottom: 10px; height:80px; column-fill:auto; }
+ .c2 { column-count:2; height:120px; }
+ legend { background:black; width:100px; height:19px; }
+ fieldset {
+ background-color: lightgrey;
+ border: solid;
+ border-width: 6px 3px 10px 7px;
+ margin: 3px 10px 7px 5px;
+ }
+ fieldset, legend {
+ background-clip: content-box;
+ padding: 10px 7px 20px 3px;
+ }
+ fieldset.sized {
+ height: 108px;
+ }
+ c { display:block; background:blue; opacity:.5; height:108px; }
+</style>
+</head>
+<body>
+ <div class="cols">
+ <fieldset><legend></legend><c></c></fieldset>
+ </div>
+ <div class="cols c2">
+ <fieldset><legend></legend><c></c></fieldset>
+ </div>
+ <div class="cols">
+ <fieldset class="sized"><legend></legend><c></c></fieldset>
+ </div>
+ <div class="cols c2">
+ <fieldset class="sized"><legend></legend><c></c></fieldset>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-break/tall-break-inside-avoid-at-start.html b/tests/wpt/web-platform-tests/css/css-break/tall-break-inside-avoid-at-start.html
new file mode 100644
index 00000000000..6e9ab8bd9f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/tall-break-inside-avoid-at-start.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="assert" content="Cannot break before a child if we're at the block-start of a fragmentainer">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; column-gap:0; width:100px; height:100px; background:red;">
+ <div></div>
+ <div style="break-inside:avoid; height:200px; background:green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-display/animations/display-interpolation.html b/tests/wpt/web-platform-tests/css/css-display/animations/display-interpolation.html
new file mode 100644
index 00000000000..d0b1d9573b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/animations/display-interpolation.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>display interpolation</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visuren.html#display-prop">
+<meta name="assert" content="display supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+
+<style>
+.target {
+ display: block;
+}
+</style>
+
+<body>
+<script>
+test_interpolation({
+ property: 'display',
+ from: 'none',
+ to: 'flex',
+ method: 'CSS Animations',
+}, [
+ {at: -0.3, expect: 'block'},
+ {at: 0, expect: 'block'},
+ {at: 0.3, expect: 'block'},
+ {at: 0.6, expect: 'block'},
+ {at: 1, expect: 'block'},
+ {at: 1.5, expect: 'block'},
+]);
+test_interpolation({
+ property: 'display',
+ from: 'none',
+ to: 'flex',
+ method: 'Web Animations',
+}, [
+ {at: -0.3, expect: 'block'},
+ {at: 0, expect: 'block'},
+ {at: 0.3, expect: 'block'},
+ {at: 0.6, expect: 'block'},
+ {at: 1, expect: 'block'},
+ {at: 1.5, expect: 'block'},
+]);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17-notref.html
new file mode 100644
index 00000000000..3d01985ed6b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17-notref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font: 72px 'ui-sans-serif'; font-synthesis: none;">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17.html
new file mode 100644
index 00000000000..9ce56ed8fa6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-17.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#standard-font-families"/>
+<link rel="mismatch" href="standard-font-family-17-notref.html"/>
+<meta name="assert" content="ui-sans-serif's bold isn't synthetic"/>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font: bold 72px 'ui-sans-serif'; font-synthesis: none;">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18-notref.html
new file mode 100644
index 00000000000..7829a0c5e19
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18-notref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+<style>
+@font-face {
+ font-family: "AppleSystemUISansSerif";
+ src: local("ui-sans-serif");
+}
+</style>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font: 72px 'AppleSystemUISansSerif'; font-synthesis: none;">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18.html
new file mode 100644
index 00000000000..69e5cabd6ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-18.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#standard-font-families"/>
+<link rel="mismatch" href="standard-font-family-18-notref.html"/>
+<meta name="assert" content="ui-sans-serif's bold in @font-face isn't synthetic"/>
+<style>
+@font-face {
+ font-family: "AppleSystemUISansSerif";
+ src: local("ui-sans-serif");
+}
+</style>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font: bold 72px 'AppleSystemUISansSerif'; font-synthesis: none;">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19-notref.html
new file mode 100644
index 00000000000..7e876ced313
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19-notref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font-size: 72px;">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19.html
new file mode 100644
index 00000000000..43dc24b1675
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-19.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#standard-font-families"/>
+<link rel="mismatch" href="standard-font-family-19-notref.html"/>
+<meta name="assert" content="ui-sans-serif works"/>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font: 72px 'ui-sans-serif';">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2-ref.html
index e19801ba770..a2fe8646e13 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2-ref.html
@@ -13,6 +13,7 @@ This test makes sure that the bold versions of the design system UI fonts work.
<div style="display: inline-block; font: bold 72px '.SF NS Mono';">HeJllo</div>
<div style="display: inline-block; font: bold 72px '.SF UI Mono';">HeJllo</div>
<div style="display: inline-block; font: bold 72px '.AppleSystemUIFontRounded';">HeJllo</div>
+<div style="display: inline-block; font: bold 72px '.AppleSystemUIFont';">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2.html
index 4fbca52b659..2827c6c2cb8 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-2.html
@@ -16,6 +16,7 @@ This test makes sure that the bold versions of the design system UI fonts work.
<div style="display: inline-block; font: bold 72px '.SF NS Mono'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px '.SF UI Mono'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px '.AppleSystemUIFontRounded'; font-synthesis: none;">HeJllo</div>
+<div style="display: inline-block; font: bold 72px '.AppleSystemUIFont'; font-synthesis: none;">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20-notref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20-notref.html
new file mode 100644
index 00000000000..7e876ced313
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20-notref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font-size: 72px;">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20.html
new file mode 100644
index 00000000000..7d0335e0616
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-20.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Myles C. Maxfield" href="mailto:mmaxfield@apple.com"/>
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#standard-font-families"/>
+<link rel="mismatch" href="standard-font-family-20-notref.html"/>
+<meta name="assert" content="ui-sans-serif in @font-face works"/>
+<style>
+@font-face {
+ font-family: "AppleSystemUISansSerif";
+ src: local("ui-sans-serif");
+}
+</style>
+</head>
+<body>
+<div>
+<div style="display: inline-block; font: 72px 'AppleSystemUISansSerif';">HeJllo</div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6-ref.html
index e9e24dfc62c..3c26321fffc 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6-ref.html
@@ -10,6 +10,7 @@ This test makes sure that the design system UI fonts don't work unless they are
<div style="display: inline-block; font-size: 72px;">HeJllo</div>
<div style="display: inline-block; font-size: 72px;">HeJllo</div>
<div style="display: inline-block; font-size: 72px;">HeJllo</div>
+<div style="display: inline-block; font-size: 72px;">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6.html
index 9a5fd418bda..f6a0f158b94 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-6.html
@@ -22,6 +22,10 @@
font-family: "DotAppleSystemUIFontRounded";
src: local(".AppleSystemUIFontRounded");
}
+@font-face {
+ font-family: "DotAppleSystemUIFont";
+ src: local(".AppleSystemUIFont");
+}
</style>
</head>
<body>
@@ -31,6 +35,7 @@ This test makes sure that the design system UI fonts don't work unless they are
<div style="display: inline-block; font: 72px 'DotSFNSMono';">HeJllo</div>
<div style="display: inline-block; font: 72px 'DotSFUIMono';">HeJllo</div>
<div style="display: inline-block; font: 72px 'DotAppleSystemUIFontRounded';">HeJllo</div>
+<div style="display: inline-block; font: 72px 'DotAppleSystemUIFont';">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7-ref.html
index 4dad37fed3d..0e2df68c1e2 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7-ref.html
@@ -16,6 +16,10 @@
src: local("ui-rounded");
}
@font-face {
+ font-family: "AppleSystemUISansSerif";
+ src: local("ui-sans-serif");
+}
+@font-face {
font-family: "DotAppleSystemUIFontSerif";
src: local(".AppleSystemUIFontSerif");
}
@@ -31,6 +35,10 @@
font-family: "DotAppleSystemUIFontRounded";
src: local(".AppleSystemUIFontRounded");
}
+@font-face {
+ font-family: "DotAppleSystemUIFont";
+ src: local(".AppleSystemUIFont");
+}
</style>
</head>
<body>
@@ -39,10 +47,12 @@ This test makes sure that the bold versions of the design system UI fonts work i
<div style="display: inline-block; font: bold 72px 'AppleSystemUISerif';">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'AppleSystemUIMonospaced';">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'AppleSystemUIRounded';">HeJllo</div>
+<div style="display: inline-block; font: bold 72px 'AppleSystemUISansSerif';">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotAppleSystemUIFontSerif';">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotSFNSMono';">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotSFUIMono';">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotAppleSystemUIFontRounded';">HeJllo</div>
+<div style="display: inline-block; font: bold 72px 'DotAppleSystemUIFont';">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7.html
index 68ebe0e04e6..11af83fc9e6 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-7.html
@@ -19,6 +19,10 @@
src: local("ui-rounded");
}
@font-face {
+ font-family: "AppleSystemUISansSerif";
+ src: local("ui-sans-serif");
+}
+@font-face {
font-family: "DotAppleSystemUIFontSerif";
src: local(".AppleSystemUIFontSerif");
}
@@ -34,6 +38,10 @@
font-family: "DotAppleSystemUIFontRounded";
src: local(".AppleSystemUIFontRounded");
}
+@font-face {
+ font-family: "DotAppleSystemUIFont";
+ src: local(".AppleSystemUIFont");
+}
</style>
</head>
<body>
@@ -42,10 +50,12 @@ This test makes sure that the bold versions of the design system UI fonts work i
<div style="display: inline-block; font: bold 72px 'AppleSystemUISerif'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'AppleSystemUIMonospaced'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'AppleSystemUIRounded'; font-synthesis: none;">HeJllo</div>
+<div style="display: inline-block; font: bold 72px 'AppleSystemUISansSerif'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotAppleSystemUIFontSerif'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotSFNSMono'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotSFUIMono'; font-synthesis: none;">HeJllo</div>
<div style="display: inline-block; font: bold 72px 'DotAppleSystemUIFontRounded'; font-synthesis: none;">HeJllo</div>
+<div style="display: inline-block; font: bold 72px 'DotAppleSystemUIFont'; font-synthesis: none;">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-ref.html
index e9e24dfc62c..3c26321fffc 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family-ref.html
@@ -10,6 +10,7 @@ This test makes sure that the design system UI fonts don't work unless they are
<div style="display: inline-block; font-size: 72px;">HeJllo</div>
<div style="display: inline-block; font-size: 72px;">HeJllo</div>
<div style="display: inline-block; font-size: 72px;">HeJllo</div>
+<div style="display: inline-block; font-size: 72px;">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family.html b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family.html
index 907a437207c..b093ad442e1 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/standard-font-family.html
@@ -13,6 +13,7 @@ This test makes sure that the design system UI fonts don't work unless they are
<div style="display: inline-block; font: 72px '.SF NS Mono';">HeJllo</div>
<div style="display: inline-block; font: 72px '.SF UI Mono';">HeJllo</div>
<div style="display: inline-block; font: 72px '.AppleSystemUIFontRounded';">HeJllo</div>
+<div style="display: inline-block; font: 72px '.AppleSystemUIFont';">HeJllo</div>
</div>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/animations/list-style-image-interpolation.html b/tests/wpt/web-platform-tests/css/css-lists/animations/list-style-image-interpolation.html
new file mode 100644
index 00000000000..b953d8c2215
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/animations/list-style-image-interpolation.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>list-style-image interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-image">
+<meta name="assert" content="list-style-image supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ list-style-image: url(../resources/blue-20.png);
+}
+.target {
+ background-color: black;
+ width: 100px;
+ list-style-image: url(../resources/green-20.png);
+}
+.expected {
+ background-color: green;
+}
+</style>
+
+<body>
+<template id="target-template">
+ <ul>
+ <li class="target"></li>
+ </ul>
+</template>
+<script>
+test_interpolation({
+ property: 'list-style-image',
+ from: neutralKeyframe,
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/green-20.png)'},
+ {at: 0, expect: 'url(../resources/green-20.png)'},
+ {at: 0.3, expect: 'url(../resources/green-20.png)'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+test_interpolation({
+ property: 'list-style-image',
+ from: 'initial',
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+test_interpolation({
+ property: 'list-style-image',
+ from: 'inherit',
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/blue-20.png)'},
+ {at: 0, expect: 'url(../resources/blue-20.png)'},
+ {at: 0.3, expect: 'url(../resources/blue-20.png)'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+test_interpolation({
+ property: 'list-style-image',
+ from: 'unset',
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/blue-20.png)'},
+ {at: 0, expect: 'url(../resources/blue-20.png)'},
+ {at: 0.3, expect: 'url(../resources/blue-20.png)'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+// Constant image
+test_no_interpolation({
+ property: 'list-style-image',
+ from: 'url(../resources/stripes-20.png)',
+ to: 'url(../resources/stripes-20.png)',
+});
+
+// None to image
+test_interpolation({
+ property: 'list-style-image',
+ from: 'none',
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+// Image to image
+test_interpolation({
+ property: 'list-style-image',
+ from: 'url(../resources/green-20.png)',
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/green-20.png)'},
+ {at: 0, expect: 'url(../resources/green-20.png)'},
+ {at: 0.3, expect: 'url(../resources/green-20.png)'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+// Image to gradient
+test_interpolation({
+ property: 'list-style-image',
+ from: 'url(../resources/green-20.png)',
+ to: 'linear-gradient(45deg, blue, orange)',
+}, [
+ {at: -0.3, expect: 'url(../resources/green-20.png)'},
+ {at: 0, expect: 'url(../resources/green-20.png)'},
+ {at: 0.3, expect: 'url(../resources/green-20.png)'},
+ {at: 0.6, expect: 'linear-gradient(45deg, blue, orange)'},
+ {at: 1, expect: 'linear-gradient(45deg, blue, orange)'},
+ {at: 1.5, expect: 'linear-gradient(45deg, blue, orange)'},
+]);
+
+// Gradient to gradient
+test_interpolation({
+ property: 'list-style-image',
+ from: 'linear-gradient(-45deg, red, yellow)',
+ to: 'linear-gradient(45deg, blue, orange)',
+}, [
+ {at: -0.3, expect: 'linear-gradient(-45deg, red, yellow)'},
+ {at: 0, expect: 'linear-gradient(-45deg, red, yellow)'},
+ {at: 0.3, expect: 'linear-gradient(-45deg, red, yellow)'},
+ {at: 0.6, expect: 'linear-gradient(45deg, blue, orange)'},
+ {at: 1, expect: 'linear-gradient(45deg, blue, orange)'},
+ {at: 1.5, expect: 'linear-gradient(45deg, blue, orange)'},
+]);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/resources/blue-20.png b/tests/wpt/web-platform-tests/css/css-lists/resources/blue-20.png
new file mode 100644
index 00000000000..c464c75eeca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/resources/blue-20.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-lists/resources/green-20.png b/tests/wpt/web-platform-tests/css/css-lists/resources/green-20.png
new file mode 100644
index 00000000000..738d1db8469
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/resources/green-20.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-lists/resources/stripes-20.png b/tests/wpt/web-platform-tests/css/css-lists/resources/stripes-20.png
new file mode 100644
index 00000000000..de30887ea35
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/resources/stripes-20.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-masking/animations/mask-image-interpolation.html b/tests/wpt/web-platform-tests/css/css-masking/animations/mask-image-interpolation.html
new file mode 100644
index 00000000000..beb9c9eaab0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/animations/mask-image-interpolation.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-image-interpolation</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-mask-image">
+<meta name="assert" content="mask-image supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ mask-image: url(../resources/blue-20.png);
+}
+.target {
+ width: 20px;
+ height: 20px;
+ display: inline-block;
+ background-color: black;
+ mask-image: url(../resources/stripes-20.png);
+}
+.expected {
+ background-color: green;
+ margin-right: 10px;
+}
+</style>
+
+<body>
+<script>
+// neutral
+test_interpolation({
+ property: 'mask-image',
+ from: neutralKeyframe,
+ to: 'url(../resources/green-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0.3, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0.6, expect: 'url(../resources/green-20.png)'},
+ {at: 1, expect: 'url(../resources/green-20.png)'},
+ {at: 1.5, expect: 'url(../resources/green-20.png)'},
+]);
+
+// initial
+test_interpolation({
+ property: 'mask-image',
+ from: 'initial',
+ to: 'url(../resources/green-20.png)',
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: 'url(../resources/green-20.png)'},
+ {at: 1, expect: 'url(../resources/green-20.png)'},
+ {at: 1.5, expect: 'url(../resources/green-20.png)'},
+]);
+
+// inherit
+test_interpolation({
+ property: 'mask-image',
+ from: 'inherit',
+ to: 'url(../resources/green-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/blue-20.png)'},
+ {at: 0, expect: 'url(../resources/blue-20.png)'},
+ {at: 0.3, expect: 'url(../resources/blue-20.png)'},
+ {at: 0.6, expect: 'url(../resources/green-20.png)'},
+ {at: 1, expect: 'url(../resources/green-20.png)'},
+ {at: 1.5, expect: 'url(../resources/green-20.png)'},
+]);
+
+// unset
+test_interpolation({
+ property: 'mask-image',
+ from: 'unset',
+ to: 'url(../resources/stripes-20.png)',
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1, expect: 'url(../resources/stripes-20.png)'},
+ {at: 1.5, expect: 'url(../resources/stripes-20.png)'},
+]);
+
+// Image to image
+test_interpolation({
+ property: 'mask-image',
+ from: 'url(../resources/stripes-20.png)',
+ to: 'url(../resources/blue-20.png)',
+}, [
+ {at: -0.3, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0.3, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0.6, expect: 'url(../resources/blue-20.png)'},
+ {at: 1, expect: 'url(../resources/blue-20.png)'},
+ {at: 1.5, expect: 'url(../resources/blue-20.png)'},
+]);
+
+//Image to gradient
+test_interpolation({
+ property: 'mask-image',
+ from: 'url(../resources/stripes-20.png)',
+ to: 'linear-gradient(45deg, blue, transparent)'
+}, [
+ {at: -0.3, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0.3, expect: 'url(../resources/stripes-20.png)'},
+ {at: 0.6, expect: 'linear-gradient(45deg, blue, transparent)'},
+ {at: 1, expect: 'linear-gradient(45deg, blue, transparent)'},
+ {at: 1.5, expect: 'linear-gradient(45deg, blue, transparent)'},
+]);
+
+// Keyword to image
+test_interpolation({
+ property: 'mask-image',
+ from: 'none',
+ to: 'url(../resources/green-20.png)',
+}, [
+ {at: -0.3, expect: 'none'},
+ {at: 0, expect: 'none'},
+ {at: 0.3, expect: 'none'},
+ {at: 0.6, expect: 'url(../resources/green-20.png)'},
+ {at: 1, expect: 'url(../resources/green-20.png)'},
+ {at: 1.5, expect: 'url(../resources/green-20.png)'},
+]);
+
+// Multiple to multiple
+var fromA = 'url(../resources/stripes-20.png)';
+var fromB = 'linear-gradient(-45deg, blue, transparent)';
+var toA = 'url(../resources/blue-20.png)';
+var toB = 'url(../resources/stripes-20.png)';
+var from = fromA + ', ' + fromB;
+var to = toA + ', ' + toB;
+test_interpolation({
+ property: 'mask-image',
+ from: from,
+ to: to,
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
+
+// Single to multiple
+from = 'url(../resources/blue-20.png)';
+toA = 'url(../resources/stripes-20.png)';
+toB = 'url(../resources/blue-20.png)';
+to = toA + ', ' + toB;
+test_interpolation({
+ property: 'mask-image',
+ from: from,
+ to: to,
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
+
+// Multiple mismatched types
+test_interpolation({
+ property: 'mask-image',
+ from: 'url(../resources/blue-20.png), none',
+ to: 'url(../resources/stripes-20.png), url(../resources/blue-20.png)',
+}, [
+ {at: -0.3, expect: from},
+ {at: 0, expect: from},
+ {at: 0.3, expect: from},
+ {at: 0.6, expect: to},
+ {at: 1, expect: to},
+ {at: 1.5, expect: to},
+]);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-masking/resources/blue-20.png b/tests/wpt/web-platform-tests/css/css-masking/resources/blue-20.png
new file mode 100644
index 00000000000..c464c75eeca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/resources/blue-20.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-masking/resources/green-20.png b/tests/wpt/web-platform-tests/css/css-masking/resources/green-20.png
new file mode 100644
index 00000000000..738d1db8469
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/resources/green-20.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-masking/resources/stripes-20.png b/tests/wpt/web-platform-tests/css/css-masking/resources/stripes-20.png
new file mode 100644
index 00000000000..de30887ea35
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-masking/resources/stripes-20.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/equal-gap-and-rule.html b/tests/wpt/web-platform-tests/css/css-multicol/equal-gap-and-rule.html
new file mode 100644
index 00000000000..bf6d6b9cefa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/equal-gap-and-rule.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-multicol-1/#column-gaps-and-rules">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:8; column-fill:auto; column-gap:5px; column-rule:5px solid green; width:100px; height:100px; background:red;">
+ <div style="height:800px; background:green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker-ref.html
new file mode 100644
index 00000000000..8095d5ca015
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8" />
+<title>CSS Reftest Reference</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" />
+<style>
+span {
+ background: cyan;
+}
+.none {
+ list-style-type: none;
+}
+.string {
+ list-style-type: "2. ";
+}
+.content::marker {
+ content: "3. ";
+}
+</style>
+<ol class="none">
+ <li><span>1. inside decimal</span></li>
+ <li><span>2. inside string</span></li>
+ <li><span>3. inside content</span></li>
+</ol>
+<ol class="outside">
+ <li class="decimal"><span>outside decimal</span></li>
+ <li class="string"><span>outside string</span></li>
+ <li class="content"><span>outside content</span></li>
+</ol>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker.html
new file mode 100644
index 00000000000..f0a994438f1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-and-marker.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Interaction of ::first-line and ::marker</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" />
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="match" href="first-line-and-marker-ref.html">
+<meta name="assert" content="Tests ::marker interaction with ::first-line pseudo element">
+<style>
+li::first-line {
+ background: cyan;
+}
+.inside {
+ list-style-position: inside;
+}
+.string {
+ list-style-type: "2. ";
+}
+.content::marker {
+ content: "3. ";
+}
+</style>
+<ol class="inside">
+ <li class="decimal">inside decimal</li>
+ <li class="string">inside string</li>
+ <li class="content">inside content</li>
+</ol>
+<ol class="outside">
+ <li class="decimal">outside decimal</li>
+ <li class="string">outside string</li>
+ <li class="content">outside content</li>
+</ol>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
index 451aac149db..a34fd76fea4 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
@@ -35,7 +35,7 @@ test_pseudo_computed_value("::marker", "font-weight", "900");
test_pseudo_computed_value("::marker", "color", "rgb(0, 100, 200)");
// ::marker supports `text-combine-upright`, `unicode-bidi` and `direction`
-test_pseudo_computed_value("::marker", "text-combine-upright", "none");
+test_pseudo_computed_value("::marker", "text-combine-upright", "all");
test_pseudo_computed_value("::marker", "unicode-bidi", "plaintext");
test_pseudo_computed_value("::marker", "direction", "rtl");
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html
index 0a73ff1206d..10e90d3cff4 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-snap-stop-change.html
@@ -8,20 +8,24 @@ div, html, body {
margin: 0;
padding: 0;
}
+
html {
scroll-snap-type: x mandatory;
overflow: scroll;
}
+
#scroller {
scroll-snap-type: x mandatory;
overflow: scroll;
- height: 300px;
- width: 300px;
+ height: 400px;
+ width: 400px;
}
+
.large_space {
width: 2000px;
height: 2000px;
}
+
.snap_area {
scroll-snap-align: none start;
width: 100px;
@@ -29,13 +33,20 @@ html {
background-color: blue;
}
+
.snap_area:nth-child(1) {
- margin-left: 100px;
+ margin-left: 0;
}
+
.snap_area:nth-child(2) {
- margin-left: 300px;
+ margin-left: 100px;
}
+
.snap_area:nth-child(3) {
+ margin-left: 300px;
+}
+
+.snap_area:nth-child(4) {
margin-left: 500px;
}
</style>
@@ -44,11 +55,13 @@ html {
<div class="snap_area"></div>
<div class="snap_area"></div>
<div class="snap_area"></div>
+<div class="snap_area"></div>
<div id="scroller">
<div class="snap_area"></div>
<div class="snap_area"></div>
<div class="snap_area"></div>
+ <div class="snap_area"></div>
<div class="large_space"></div>
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html
new file mode 100644
index 00000000000..d10c013e1ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/direction-rtl.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<title>
+ Scrollers should snap to the closest snap point on initial layout (using 'direction: rtl')
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<link rel="match" href="snap-after-initial-layout-ref.html" />
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+ direction: rtl;
+}
+
+#close-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ right: 200px;
+ background-color: green;
+ scroll-snap-align: start;
+}
+
+#far-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ right: 700px;
+ background-color: red;
+ scroll-snap-align: start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="close-target"></div>
+ <div id="far-target"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
new file mode 100644
index 00000000000..c8009b626cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/snap-after-initial-layout-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<title>Reference</title>
+<style>
+div {
+ margin: 0;
+ position: absolute;
+}
+
+#target {
+ width: 300px;
+ height: 300px;
+ top: 0;
+ left: 200px;
+ background-color: green;
+}
+</style>
+
+<div>
+ <div id="target"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
new file mode 100644
index 00000000000..aa65dde1810
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<title>
+ Scrollers should snap to the closest snap point on initial layout
+ (using 'writing-mode: horizontal-tb')
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<link rel="match" href="snap-after-initial-layout-ref.html" />
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+ writing-mode: horizontal-tb;
+}
+
+#close-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 200px;
+ background-color: green;
+ scroll-snap-align: start end;
+}
+
+#far-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 500px;
+ background-color: red;
+ scroll-snap-align: start end;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="close-target"></div>
+ <div id="far-target"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
new file mode 100644
index 00000000000..898e64be619
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-lr.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<title>
+ Scrollers should snap to the closest snap point on initial layout
+ (using 'writing-mode: vertical-lr')
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<link rel="match" href="snap-after-initial-layout-ref.html" />
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+ writing-mode: vertical-lr;
+}
+
+#close-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 200px;
+ background-color: green;
+ scroll-snap-align: end start;
+}
+
+#far-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 500px;
+ background-color: red;
+ scroll-snap-align: end start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="close-target"></div>
+ <div id="far-target"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
new file mode 100644
index 00000000000..b3141f03f3c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-initial-layout/writing-mode-vertical-rl.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<title>
+ Scrollers should snap to the closest snap point on initial layout
+ (using 'writing-mode: vertical-rl')
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<link rel="match" href="snap-after-initial-layout-ref.html" />
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ /* Chrome bug using 'position:absolute' with LayoutNG disabled */
+ position: relative;
+
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+ writing-mode: vertical-rl;
+}
+
+#close-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 200px;
+ background-color: green;
+ scroll-snap-align: start;
+}
+
+#far-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 500px;
+ background-color: red;
+ scroll-snap-align: start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="close-target"></div>
+ <div id="far-target"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
new file mode 100644
index 00000000000..53141707bb3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<title>
+ Adding a new snap area when there are none should make the scroller snap to it.
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+}
+
+#target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 100px;
+ background-color: green;
+ scroll-snap-align: start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="target"></div>
+</div>
+
+<script>
+const target = document.getElementById("target");
+const scroller = document.getElementById("scroller");
+
+test(() => {
+ scroller.removeChild(target);
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 0);
+ assert_equals(scroller.scrollLeft, 0);
+
+ scroller.appendChild(target);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+}, "Adding a new snap area when there are none should make the scroller snap to it.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html
new file mode 100644
index 00000000000..d26359658f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<title>
+ Adding a new snap area while already snapped should not make the scroller snap to it.
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+}
+
+#initial-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 100px;
+ background-color: green;
+ scroll-snap-align: start;
+}
+
+#other-target {
+ width: 300px;
+ height: 300px;
+ top: 300px;
+ left: 300px;
+ background-color: red;
+ scroll-snap-align: start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="initial-target"></div>
+ <div id="other-target"></div>
+</div>
+
+<script>
+const initial_target = document.getElementById("initial-target");
+const other_target = document.getElementById("other-target");
+const scroller = document.getElementById("scroller");
+
+test(() => {
+ scroller.removeChild(other_target);
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+
+ scroller.appendChild(other_target);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+}, "Adding a new snap area while already snapped should not make the scroller snap to it.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target.html
new file mode 100644
index 00000000000..83c2c478bf5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/move-current-target.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<title>
+ Moving the current snap target should make the scroller resnap to it.
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ position: relative;
+ margin: 0;
+}
+
+#block {
+ height: 100px;
+ width: 100px;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+}
+
+#initial-target {
+ width: 300px;
+ height: 300px;
+ left: 100px;
+ top: 0;
+ transform: none;
+ background-color: green;
+ scroll-snap-align: start;
+}
+
+#other-target {
+ width: 300px;
+ height: 300px;
+ left: 300px;
+ background-color: red;
+ scroll-snap-align: start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div id="block"></div>
+ <div id="initial-target"></div>
+ <div id="other-target"></div>
+ <div class="area"></div>
+</div>
+
+<script>
+const initial_target = document.getElementById("initial-target");
+const other_target = document.getElementById("other-target");
+const block = document.getElementById("block");
+const scroller = document.getElementById("scroller");
+
+function cleanup() {
+ initial_target.style.setProperty("transform", "none");
+ initial_target.style.setProperty("top", "0");
+ block.style.setProperty("height", "100px");
+}
+
+test(t => {
+ t.add_cleanup(cleanup);
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+
+ initial_target.style.setProperty("top", "300px");
+ assert_equals(scroller.scrollTop, 400);
+ assert_equals(scroller.scrollLeft, 100);
+}, "Moving the current snap target should make the scroller resnap to it.");
+
+test(t => {
+ t.add_cleanup(cleanup);
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+
+ block.style.setProperty("height", "200px");
+ assert_equals(scroller.scrollTop, 200);
+ assert_equals(scroller.scrollLeft, 100);
+}, "Changing the layout of other elements should be able to cause resnapping to \
+the target.");
+
+test(t => {
+ t.add_cleanup(cleanup);
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+
+ // TODO(alsan): Chrome currently doesn't correctly re-snap due to transform.
+ // It seems to be an invalidation issue. http://crbug.com/1028316
+ initial_target.style.setProperty("transform", "translate(0,100px)");
+ assert_equals(scroller.scrollTop, 200);
+ assert_equals(scroller.scrollLeft, 100);
+}, "Transforming the current snap target should make the scroller resnap to it.");
+
+test(t => {
+ t.add_cleanup(cleanup);
+ initial_target.style.setProperty("top", "100px");
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 200);
+ assert_equals(scroller.scrollLeft, 100);
+
+ initial_target.style.setProperty("transform", "translate(0,100px)");
+ initial_target.style.setProperty("top", "0");
+ assert_equals(scroller.scrollTop, 200);
+ assert_equals(scroller.scrollLeft, 100);
+}, "Applying two property changes that do not change the visual offset of the \
+target should not change the scroll offset.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target.html
new file mode 100644
index 00000000000..82bddf80748
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/remove-current-target.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<title>
+ Removing the current snap target should make the scroller snap to a new target.
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+}
+
+#initial-target {
+ width: 300px;
+ height: 300px;
+ top: 100px;
+ left: 100px;
+ background-color: red;
+ scroll-snap-align: start;
+}
+
+#other-target {
+ width: 300px;
+ height: 300px;
+ top: 300px;
+ left: 300px;
+ background-color: green;
+ scroll-snap-align: start;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="initial-target"></div>
+ <div id="other-target"></div>
+</div>
+
+<script>
+const initial_target = document.getElementById("initial-target");
+const other_target = document.getElementById("other-target");
+const scroller = document.getElementById("scroller");
+
+test(() => {
+ scroller.scrollTo(0,0);
+ assert_equals(scroller.scrollTop, 100);
+ assert_equals(scroller.scrollLeft, 100);
+
+ scroller.removeChild(initial_target);
+ assert_equals(scroller.scrollTop, 300);
+ assert_equals(scroller.scrollLeft, 300);
+}, "Removing the current snap target should make the scroller snap to a new target.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html
new file mode 100644
index 00000000000..6ceab295e4c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-after-relayout/snap-to-different-targets.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<title>
+ The scroller should try to resnap to targets for both axes if possible.
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap/#re-snap" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ position: absolute;
+ margin: 0;
+}
+
+#scroller {
+ height: 500px;
+ width: 500px;
+ overflow: hidden;
+ scroll-snap-type: both mandatory;
+}
+
+#x-axis-target {
+ scroll-snap-align: none start;
+ background-color: blue;
+ width: 100px;
+ height: 100px;
+ top: 400px;
+ left: 200px;
+}
+
+#y-axis-target {
+ scroll-snap-align: start none;
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ top: 200px;
+ left: 400px;
+}
+
+#far-x-axis-target {
+ scroll-snap-align: none start;
+ background-color: blue;
+ width: 100px;
+ height: 100px;
+ top: 1200px;
+ left: 300px;
+}
+
+#far-y-axis-target {
+ scroll-snap-align: start none;
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ top: 300px;
+ left: 1200px;
+}
+
+.area {
+ width: 2000px;
+ height: 2000px;
+}
+</style>
+
+<div id="scroller">
+ <div class="area"></div>
+ <div id="x-axis-target"></div>
+ <div id="y-axis-target"></div>
+ <div id="far-x-axis-target"></div>
+ <div id="far-y-axis-target"></div>
+</div>
+
+<script>
+
+const x_target = document.getElementById("x-axis-target");
+const y_target = document.getElementById("y-axis-target");
+const scroller = document.getElementById("scroller");
+
+test(() => {
+ // The scroller should be snapped to the two closest points on first layout.
+ assert_equals(scroller.scrollTop, 200);
+ assert_equals(scroller.scrollLeft, 200);
+ x_target.style.setProperty("left", "1000px");
+ y_target.style.setProperty("top", "1000px");
+
+ // The style change makes it impossible for the scroller to snap to both
+ // targets, but at least one of the targets should be preserved. The scroller
+ // should then re-evaluate the snap point for the other axis.
+ const snapped_to_x = scroller.scrollLeft == 1000 && scroller.scrollTop == 300;
+ const snapped_to_y = scroller.scrollTop == 1000 && scroller.scrollLeft == 300;
+ assert_true(snapped_to_x || snapped_to_y);
+}, "Scroller should snap to at least one of the targets if unable to snap to\
+both after a layout change.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-caputring-add-scroll-container.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container.html
index d0453676392..15f44ed8b7b 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-caputring-add-scroll-container.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-add-scroll-container.html
@@ -89,7 +89,7 @@ const document_scroller = document.scrollingElement;
test(() => {
// Confirm that the document-level scroller is the snap container for all of
// the snap areas.
- document_scroller.scrollBy(0, 10);
+ document_scroller.scrollTo(0, 10);
assert_equals(document_scroller.scrollTop, 500);
// Snaps to the inner snap area.
document_scroller.scrollBy(0, 75);
@@ -121,9 +121,13 @@ test(() => {
// Test that attaching a new snap container also properly assigns snap areas.
test(() => {
+ // All containers should capture snap areas.
+ middle_scroller.style.setProperty("overflow", "scroll");
+ inner_scroller.style.setProperty("overflow", "scroll");
+
// Sanity check that the scrollers still snap to the snap areas.
- document_scroller.scrollBy(0, 10);
- inner_scroller.scrollBy(0,10);
+ document_scroller.scrollTo(0, 10);
+ inner_scroller.scrollTo(0,10);
assert_equals(inner_scroller.scrollTop, 300);
assert_equals(document_scroller.scrollTop, 500);
@@ -142,7 +146,7 @@ test(() => {
assert_equals(document_scroller.scrollTop, 400);
// Inserted scroller snaps.
- inserted_scroller.scrollBy(0, 10);
+ inserted_scroller.scrollTo(0, 10);
assert_equals(inserted_scroller.scrollTop, 500);
}, "Attaching a new element that is scrollable should assign the correct snap\
areas to it.");
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html
index 9b824071599..d3750abdd7e 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html
@@ -80,16 +80,14 @@ test(() => {
const middle_scroller = document.getElementById("middle-scroller");
const document_scroller = document.scrollingElement;
+ // Inner scroller should snap to its captured area.
// Middle scroller doesn't snap.
// Document scroller should snap to its only captured area.
- document_scroller.scrollBy(0, 100);
+ inner_scroller.scrollBy(0,10);
middle_scroller.scrollBy(0, 10);
- assert_equals(inner_scroller.scrollTop, 0);
- assert_equals(middle_scroller.scrollTop, 10);
- assert_equals(document_scroller.scrollTop, 500);
-
- // Inner scroller snaps.
- inner_scroller.scrollBy(0, 10);
+ // Scroll to (0,600), where we would expect the inner snap area to be relative
+ // to the document scroller.
+ document_scroller.scrollTo(0, 600);
assert_equals(inner_scroller.scrollTop, 300);
assert_equals(middle_scroller.scrollTop, 10);
assert_equals(document_scroller.scrollTop, 500);
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html
deleted file mode 100644
index d4f0281ae48..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001-ref.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: unsized div</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- height: 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001.html
deleted file mode 100644
index 4d17602a95f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-001.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: unsized div</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-001-ref.html">
-<meta name="assert" content="intrinsic-size is used to size the div as if it had a single child of this size">
-
-<style>
-#target {
- background: lightblue;
- intrinsic-size: 111px 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html
deleted file mode 100644
index ab847fc36e5..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002-ref.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: div with max-content parent</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#border {
- width: max-content;
- border: 1px solid black;
-}
-#target {
- background: lightblue;
- width: 111px;
- height: 222px;
-}
-</style>
-
-<div id=border>
- <div id=target></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002.html
deleted file mode 100644
index 55f20949412..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-002.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: div with max-content parent</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-002-ref.html">
-<meta name="assert" content="intrinsic-size is used to size the div, with parent's max-content width respecting it">
-
-<style>
-#border {
- width: max-content;
- border: 1px solid black;
-}
-#target {
- background: lightblue;
- intrinsic-size: 111px 222px;
-}
-</style>
-
-<div id=border>
- <div id=target></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html
deleted file mode 100644
index 6a2d0514989..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: width specified</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- width: 50px;
- height: 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003.html
deleted file mode 100644
index 3dd41ba1d2c..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-003.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: width specified</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-003-ref.html">
-<meta name="assert" content="intrinsic-size's width is ignored if width is specified">
-
-<style>
-#target {
- background: lightblue;
- intrinsic-size: 111px 222px;
- width: 50px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html
deleted file mode 100644
index 6e710943de9..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: width is min-content</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- width: 111px;
- height: 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004.html
deleted file mode 100644
index 9cce7ae25fc..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-004.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: width is min-content</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-004-ref.html">
-<meta name="assert" content="div is sized to intrinsic-width if width is min-content">
-
-<style>
-#target {
- background: lightblue;
- intrinsic-size: 111px 222px;
- width: min-content;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005-ref.html
deleted file mode 100644
index 950f7190cac..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: width is max-content</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- width: 111px;
- height: 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005.html
deleted file mode 100644
index 92b777d22e0..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-005.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: width is max-content</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-004-ref.html">
-<meta name="assert" content="div is sized to intrinsic-width if width is max-content">
-
-<style>
-#target {
- background: lightblue;
- intrinsic-size: 111px 222px;
- width: max-content;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html
deleted file mode 100644
index d545093e2db..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006-ref.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: unsized div, intrinsic-size is small</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- height: 6px;
- contain: size;
-}
-</style>
-
-<div id=target>Lorem ipsum</div>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006.html
deleted file mode 100644
index 82c6e8eef85..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-006.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: unsized div, intrinsic-size is small</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-006-ref.html">
-<meta name="assert" content="content dimensions are ignored if intrinsic-size is specified">
-
-<style>
-#target {
- background: lightblue;
- intrinsic-size: 5px 6px;
-}
-</style>
-
-<div id=target>Lorem ipsum</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html
deleted file mode 100644
index 6b3f63685ac..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007-ref.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: div with border</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#border {
- border: 1px solid blue;
- width: max-content;
-}
-
-#target {
- background: lightblue;
- box-sizing: content-box;
- width: 55px;
- height: 66px;
-
- border-style: solid;
- border-color: black;
- border-width: 2px 3px 5px 7px;
-}
-</style>
-
-<div id=border>
- <div id=target></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007.html
deleted file mode 100644
index 85fcae6cd91..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-007.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: div with border</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-007-ref.html">
-<meta name="assert" content="intrinsic-size sizes the content box, not the border box">
-
-<style>
-#border {
- border: 1px solid blue;
- width: max-content;
-}
-
-#target {
- background: lightblue;
- intrinsic-size: 55px 66px;
- border-style: solid;
- border-color: black;
- border-width: 2px 3px 5px 7px;
-}
-</style>
-
-<div id=border>
- <div id=target></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html
deleted file mode 100644
index 5c6186fd48c..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008-ref.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: writing modes</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.border {
- border: 1px solid blue;
- width: max-content;
- margin: 5px;
-}
-
-.box {
- background: lightblue;
- box-sizing: content-box;
- width: 55px;
- height: 66px;
- border-style: solid;
- border-color: black;
- border-width: 2px 3px 5px 7px;
- padding: 11px 13px 17px 19px;
-}
-.verticalrl {
- writing-mode: vertical-rl;
-}
-.verticallr {
- writing-mode: vertical-lr;
-}
-.horizontaltb {
- writing-mode: horizontal-tb;
-}
-</style>
-
-<div class=border><div class="box verticalrl">Lorem</div></div>
-<div class=border><div class="box verticallr">Ipsum</div></div>
-<div class=border><div class="box horizontaltb">Dolor</div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008.html
deleted file mode 100644
index f3b344f6b0a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-008.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: writing modes</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-008-ref.html">
-<meta name="assert" content="intrinsic-size specifies physical dimensions, and respects writing modes">
-
-<style>
-.border {
- border: 1px solid blue;
- width: max-content;
- margin: 5px;
-}
-
-.box {
- background: lightblue;
- intrinsic-size: 55px 66px;
- border-style: solid;
- border-color: black;
- border-width: 2px 3px 5px 7px;
- padding: 11px 13px 17px 19px;
-}
-.verticalrl {
- writing-mode: vertical-rl;
-}
-.verticallr {
- writing-mode: vertical-lr;
-}
-.horizontaltb {
- writing-mode: horizontal-tb;
-}
-</style>
-
-<div class=border><div class="box verticalrl">Lorem</div></div>
-<div class=border><div class="box verticallr">Ipsum</div></div>
-<div class=border><div class="box horizontaltb">Dolor</div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html
deleted file mode 100644
index 223e0c8a33a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009-ref.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: select multiple</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.border {
- border: 1px solid blue;
- width: max-content;
- margin: 5px;
-}
-
-select {
- background: lightblue;
- box-sizing: content-box;
- width: 55px;
- height: 66px;
- overflow: visible;
-}
-</style>
-
-<select multiple></select>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009.html
deleted file mode 100644
index 06a02fe78bd..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-009.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: select multiple</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-009-ref.html">
-<meta name="assert" content="intrinsic-size sizes select multiple">
-
-<style>
-.border {
- border: 1px solid blue;
- width: max-content;
- margin: 5px;
-}
-
-select {
- intrinsic-size: 55px 66px;
- background: lightblue;
- overflow: visible;
-}
-</style>
-
-<select multiple></select>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html
deleted file mode 100644
index eaaa0977f13..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010-ref.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex row</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#flex {
- display: flex;
- flex-direction: row;
- width: 500px;
- height: 100px;
-}
-.item {
- border: 1px solid black;
- box-sizing: content-box;
-}
-#one {
- background: lightblue;
- width: 55px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- width: 66px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- width: 77px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010.html
deleted file mode 100644
index eea76ffb073..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-010.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex row</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-010-ref.html">
-<meta name="assert" content="items are flexed correctly when they are sized by intrinsic-size in a flex row">
-
-<style>
-#flex {
- display: flex;
- flex-direction: row;
- width: 500px;
- height: 100px;
-}
-.item {
- border: 1px solid black;
-}
-#one {
- background: lightblue;
- intrinsic-size: 55px 11px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- intrinsic-size: 66px 22px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- intrinsic-size: 77px 33px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html
deleted file mode 100644
index 29d1f4e2d1a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011-ref.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex column</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#flex {
- display: flex;
- flex-direction: column;
- width: 100px;
- height: 200px;
-}
-.item {
- border: 1px solid black;
- box-sizing: content-box;
-}
-#one {
- background: lightblue;
- height: 11px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- height: 22px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- height: 33px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011.html
deleted file mode 100644
index c7888f906f8..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-011.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex column</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-011-ref.html">
-<meta name="assert" content="items are flexed correctly when they are sized by intrinsic-size in a flex column">
-
-<style>
-#flex {
- display: flex;
- flex-direction: column;
- width: 100px;
- height: 200px;
-}
-.item {
- border: 1px solid black;
-}
-#one {
- background: lightblue;
- intrinsic-size: 55px 11px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- intrinsic-size: 66px 22px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- intrinsic-size: 77px 33px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html
deleted file mode 100644
index ed9857aa256..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012-ref.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- width: 100px;
- height: 200px;
-}
-</style>
-
-<img id=target src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012.html
deleted file mode 100644
index 889b07ace92..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-012.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-012-ref.html">
-<meta name="assert" content="intrinsic-size overrides replaced content's intrinsic dimensions">
-
-<style>
-#target {
- intrinsic-size: 100px 200px;
-}
-</style>
-
-<img id=target src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html
deleted file mode 100644
index 9f8334c03d5..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013-ref.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-size changes</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#border {
- width: max-content;
- border: 1px solid black;
-}
-#border > div {
- width: 77px;
- height: 88px;
-}
-</style>
-
-<div id=border><div id=target></div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013.html
deleted file mode 100644
index 1082100012f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-013.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!doctype html>
-<html class="reftest-wait">
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-size changes.</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-013-ref.html">
-<meta name="assert" content="changes in intrinsic-size cause reflow">
-<script src="/common/reftest-wait.js"></script>
-
-<style>
-#border {
- width: max-content;
- border: 1px solid black;
-}
-#border > div {
- intrinsic-size: 55px 66px;
-}
-</style>
-
-<div id=border><div id=target></div></div>
-
-<script>
-function changeStyle() {
- document.getElementById("target").style = "intrinsic-size: 77px 88px;";
- requestAnimationFrame(takeScreenshot);
-}
-
-onload = () => requestAnimationFrame(() => requestAnimationFrame(changeStyle));
-
-</script>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html
deleted file mode 100644
index 66c10824893..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014-ref.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: fieldset</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-fieldset {
- box-sizing: content-box;
- width: 111px;
- height: 222px;
-}
-</style>
-
-<fieldset>
- <legend>This is a legend</legend>
- This is some content.
-</fieldset>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014.html
deleted file mode 100644
index 4dd45a2da40..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-014.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: fieldset</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-014-ref.html">
-<meta name="assert" content="intrinsic-size sizes fieldsets">
-
-<style>
-fieldset {
- width: max-content;
- intrinsic-size: 111px 222px;
-}
-</style>
-
-<fieldset>
- <legend>This is a legend</legend>
- This is some content.
-</fieldset>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html
deleted file mode 100644
index ae65a3b5ca5..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015-ref.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS intrinsic-size: inline flex</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
-<style>
-div {
- display: inline-flex;
- border: 5px solid green;
- width: 111px;
- height: 222px;
- box-sizing: content-box;
-}
-</style>
-
-<div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015.html
deleted file mode 100644
index 5ca5e49992e..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-015.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS intrinsic-size: inline flex</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
-<link rel="match" href="intrinsic-size-015-ref.html">
-<meta name="assert" content="intrinsic-size sizes an inline-flex element">
-<style>
-div {
- display: inline-flex;
- border: 5px solid green;
- intrinsic-size: 111px 222px;
- color: transparent;
-}
-</style>
-
-<div>test</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html
deleted file mode 100644
index f80510f6306..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016-ref.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex row, items with size containment (ref)</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#flex {
- display: flex;
- flex-direction: row;
- width: 500px;
- height: 100px;
-}
-.item {
- border: 1px solid black;
- box-sizing: content-box;
-}
-#one {
- background: lightblue;
- width: 55px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- width: 66px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- width: 77px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016.html
deleted file mode 100644
index ce6ac5c56e4..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-016.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex row, items with size containment</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-016-ref.html">
-<meta name="assert" content="intrinsic-size take 'priority' over size-containment in flex">
-
-<style>
-#flex {
- display: flex;
- flex-direction: row;
- width: 500px;
- height: 100px;
-}
-.item {
- border: 1px solid black;
- contain: size;
-}
-#one {
- background: lightblue;
- intrinsic-size: 55px 11px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- intrinsic-size: 66px 22px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- intrinsic-size: 77px 33px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html
deleted file mode 100644
index 553451a7075..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017-ref.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content (vertical-lr)</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-body {
- writing-mode: vertical-lr;
-}
-#target {
- width: 100px;
- height: 200px;
-}
-</style>
-
-<img id=target src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017.html
deleted file mode 100644
index 5e2122f34ec..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-017.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content (vertical-lr)</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-017-ref.html">
-<meta name="assert" content="intrinsic-size specifies physical dimensions on replaced content">
-
-<style>
-body {
- writing-mode: vertical-lr;
-}
-#target {
- intrinsic-size: 100px 200px;
- inline-size: min-content;
- block-size: auto;
-}
-</style>
-
-<img id=target src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html
deleted file mode 100644
index 17261caa8af..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: sized div</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- width: 55px;
- height: 66px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018.html
deleted file mode 100644
index 68931834d63..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-018.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: sized div</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-018-ref.html">
-<meta name="assert" content="width / height ignore intrinsic-size">
-
-<style>
-#target {
- background: lightblue;
- width: 55px;
- height: 66px;
- intrinsic-size: 111px 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html
deleted file mode 100644
index 8e55d7b02f9..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: div with fit-content width</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- width: 111px;
- height: 222px;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019.html
deleted file mode 100644
index cae8e0739fe..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-019.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: div with fit-content width</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-019-ref.html">
-<meta name="assert" content="div is sized to intrinsic-width when width is fit-content">
-
-<style>
-#target {
- background: lightblue;
- intrinsic-size: 111px 222px;
- width: fit-content;
-}
-</style>
-
-<div id=target></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html
deleted file mode 100644
index 1ee5ba8376d..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020-ref.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content (min-content)</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- width: 100px;
- height: 200px;
-}
-</style>
-
-<img id=target src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020.html
deleted file mode 100644
index a7286ce1054..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-020.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content (min-content)</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-020-ref.html">
-<meta name="assert" content="replaced content is sized to intrinsic-width when width is min-content">
-
-<style>
-#target {
- intrinsic-size: 100px 200px;
- inline-size: min-content;
- block-size: auto;
-}
-</style>
-
-<img id=target src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html
deleted file mode 100644
index 35db43fcf44..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021-ref.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex row, flex height based on children</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#flex {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- align-items: flex-start;
- width: 250px;
-}
-.item {
- border: 1px solid black;
- box-sizing: content-box;
-}
-#one {
- background: lightblue;
- width: 55px;
- height: 21px;
-}
-#two {
- background: lightgreen;
- width: 66px;
- height: 42px;
-}
-#three {
- background: lightgrey;
- align-self: stretch;
- width: 77px;
- height: 63px;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021.html
deleted file mode 100644
index 04591924f65..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-021.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex row, flex height based on children</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-021-ref.html">
-<meta name="assert" content="flex container is sized by the largest intrinsic-height of content, even with align-self: stretch">
-
-<style>
-#flex {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- align-items: flex-start;
- width: 250px;
-}
-.item {
- border: 1px solid black;
-}
-#one {
- background: lightblue;
- intrinsic-size: 55px 21px;
-}
-#two {
- background: lightgreen;
- intrinsic-size: 66px 42px;
-}
-#three {
- background: lightgrey;
- align-self: stretch;
- intrinsic-size: 77px 63px;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one></div>
- <div class=item id=two></div>
- <div class=item id=three></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html
deleted file mode 100644
index b0df1992834..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022-ref.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- box-sizing: content-box;
- width: 70px;
- height: 80px;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- opacity: 0.5;
- height: 100%;
-}
-</style>
-
-<div id=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022.html
deleted file mode 100644
index 3593b9cce38..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-022.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-022-ref.html">
-<meta name="assert" content="grid container is sized by intrinsic-size, even if definite track sizes overflow">
-
-<style>
-#grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- intrinsic-size: 70px 80px;
- width: max-content;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- opacity: 0.5;
- height: 100%;
-}
-</style>
-
-<div id=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html
deleted file mode 100644
index 800e4ae7064..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023-ref.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#grid {
- border: 3px solid black;
- display: grid;
- grid-template: 1fr 2fr / 3fr 4fr;
- box-sizing: content-box;
- width: 70px;
- height: 80px;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- height: 100%;
-}
-</style>
-
-<div id=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023.html
deleted file mode 100644
index c64ef66a03f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-023.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-023-ref.html">
-<meta name="assert" content="grid container is sized by intrinsic-size, with fr-tracks using that space">
-
-<style>
-#grid {
- border: 3px solid black;
- display: grid;
- grid-template: 1fr 2fr / 3fr 4fr;
- intrinsic-size: 70px 80px;
- width: max-content;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- height: 100%;
-}
-</style>
-
-<div id=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html
deleted file mode 100644
index 02ec85a0084..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024-ref.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size, large size</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- box-sizing: content-box;
- width: 200px;
- height: 300px;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- opacity: 0.5;
- height: 100%;
-}
-</style>
-
-<div id=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024.html
deleted file mode 100644
index b11317d96b0..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-024.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size, large size</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-024-ref.html">
-<meta name="assert" content="intrinsic-size sizes grid container, even if definite tracks are smaller">
-
-<style>
-#grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- intrinsic-size: 200px 300px;
- width: max-content;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- opacity: 0.5;
- height: 100%;
-}
-</style>
-
-<div id=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html
deleted file mode 100644
index 60d5cc9cd9a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025-ref.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size, auto-fit</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- width: 70px;
- height: 80px;
- box-sizing: content-box;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- grid-template: repeat(auto-fit, 10px) / 3fr 4fr;
-}
-.two {
- grid-template: 1fr 2fr / repeat(auto-fit, 15px);
-}
-.three {
- grid-template: repeat(auto-fit, 10px) / repeat(auto-fit, 15px);
-}
-
-.item {
- background: green;
- height: 100%;
-}
-</style>
-
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid three">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025.html
deleted file mode 100644
index ab9c56fc528..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-025.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size, auto-fit</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-025-ref.html">
-<meta name="assert" content="definite size auto-fit uses intrinsic-size for the available space">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- intrinsic-size: 70px 80px;
- width: max-content;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- grid-template: repeat(auto-fit, 10px) / 3fr 4fr;
-}
-.two {
- grid-template: 1fr 2fr / repeat(auto-fit, 15px);
-}
-.three {
- grid-template: repeat(auto-fit, 10px) / repeat(auto-fit, 15px);
-}
-
-.item {
- background: green;
- height: 100%;
-}
-</style>
-
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid three">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html
deleted file mode 100644
index 2e456b43422..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026-ref.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid auto-fit, min- max- size interactions</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.grid {
- display: inline-grid;
- border: 1px solid black;
- grid-template-columns: repeat(auto-fit, 100px);
-}
-.one {
- width: 200px;
-}
-.two {
- width: 200px;
-}
-.three {
- width: 200px;
-}
-.four {
- width: 150px;
-}
-.item {
- background: green;
- height: 100%;
-}
-</style>
-
-<p>min-width larger than intrinsic-width:
-<div class="grid one">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
-
-<p>min-width smaller than intrinsic-width:
-<div class="grid two">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
-
-<p>max-width ignored since min-width is larger:
-<div class="grid three">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
-
-<p>min-width shrinks grid since it overrides intrinsic-width:
-<div class="grid four">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026.html
deleted file mode 100644
index 100f542b783..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-026.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid auto-fit, min- max- size interactions</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-026-ref.html">
-<meta name="assert" content="auto-fit columns, with intrinsic-size interacting with min- and max- width">
-
-<style>
-.grid {
- display: inline-grid;
- border: 1px solid black;
- grid-template-columns: repeat(auto-fit, 100px);
-}
-.one {
- intrinsic-width: 100px;
- min-width: 200px;
-}
-.two {
- intrinsic-width: 200px;
- min-width: 100px;
-}
-.three {
- intrinsic-width: 100px;
- min-width: 200px;
- max-width: 150px;
-}
-.four {
- intrinsic-width: 200px;
- min-width: 100px;
- max-width: 150px;
-}
-.item {
- background: green;
- height: 100%;
-}
-</style>
-
-<p>min-width larger than intrinsic-width:
-<div class="grid one">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
-
-<p>min-width smaller than intrinsic-width:
-<div class="grid two">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
-
-<p>max-width ignored since min-width is larger:
-<div class="grid three">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
-
-<p>min-width shrinks grid since it overrides intrinsic-width:
-<div class="grid four">
- <div class="item">one</div>
- <div class="item">two</div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html
deleted file mode 100644
index 99e86d0c38f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001-ref.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-width auto</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-body > div {
- box-sizing: content-box;
- border: 1px solid black;
- width: max-content;
- height: 111px;
-}
-#one {
- overflow: hidden;
- width: 0px;
-}
-#two {
- overflow-x: scroll;
- height: auto;
-}
-#two > div {
- height: 111px;
-}
-#three {
- height: auto;
-}
-#three > div {
- height: 111px;
-}
-</style>
-
-<div id=one></div>
-<br>
-<div id=two><div></div></div>
-<br>
-<div id=three><div>Lorem ipsum</div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html
deleted file mode 100644
index 9c2dac07da2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-001.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-width auto</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-auto-001-ref.html">
-<meta name="assert" content="intrinsic-size auto is treated as 0 when overflow is not 'visible'">
-
-<style>
-div {
- width: max-content;
- intrinsic-size: auto 111px;
- border: 1px solid black;
-}
-#one {
- overflow: hidden;
-}
-#two {
- overflow-x: scroll;
-}
-/* We can't have overflow-x: visible without overflow-y not being visible and vice versa
- (see Computed value in https://www.w3.org/TR/css-overflow-3/#overflow-properties).
- Hence, we set both overflow directions.
-*/
-#three {
- overflow: visible;
-}
-</style>
-
-<div id=one>Lorem ipsum</div>
-<br>
-<div id=two>Lorem ipsum</div>
-<br>
-<div id=three>Lorem ipsum</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html
deleted file mode 100644
index 70a245469b7..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002-ref.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-width auto</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-body > div {
- box-sizing: content-box;
- border: 1px solid black;
- width: 111px;
-}
-#one {
- overflow: hidden;
- height: 0px;
-}
-#two {
- overflow-y: scroll;
- width: max-content;
-}
-#two > div {
- width: 111px;
-}
-</style>
-
-<div id=one></div>
-<br>
-<div id=two><div></div></div>
-<br>
-<div id=three>Lorem ipsum</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html
deleted file mode 100644
index 5b3902455bd..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-002.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-width auto</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-auto-002-ref.html">
-<meta name="assert" content="intrinsic-size auto is treated as 0 when overflow is not 'visible'">
-
-<style>
-div {
- width: max-content;
- intrinsic-size: 111px auto;
- border: 1px solid black;
-}
-#one {
- overflow: hidden;
-}
-#two {
- overflow-y: scroll;
-}
-/* We can't have overflow-x: visible without overflow-y not being visible and vice versa
- (see Computed value in https://www.w3.org/TR/css-overflow-3/#overflow-properties).
- Hence, we set both overflow directions.
-*/
-#three {
- overflow: visible;
-}
-</style>
-
-<div id=one>Lorem ipsum</div>
-<br>
-<div id=two>Lorem ipsum</div>
-<br>
-<div id=three>Lorem ipsum</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html
deleted file mode 100644
index 246a5bad51e..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003-ref.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content with auto</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-img {
- border: 1px solid black;
- box-sizing: content-box;
-}
-#target1 {
- height: 200px;
- /* the source img is 320x240, and the intrinsic size only adjusted the height */
- width: 320px;
-}
-#target2 {
- width: 100px;
- /* the source img is 320x240, and the intrinsic size only adjusted the width */
- height: 240px;
-}
-#target3 {
- width: 0px;
- height: 200px;
- overflow: hidden;
-}
-#target4 {
- width: 100px;
- height: 0px;
- overflow: hidden;
-}
-</style>
-
-<img id=target1 src="resources/dice.png"></img>
-<img id=target2 src="resources/dice.png"></img>
-<img id=target3 src="resources/dice.png"></img>
-<img id=target4 src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html
deleted file mode 100644
index 07ec0326787..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-auto-003.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content with auto</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-auto-003-ref.html">
-<meta name="assert" content="intrinsic-size auto is treated as 0 when overflow is not 'visible'">
-
-<style>
-img {
- border: 1px solid black;
-}
-#target1 {
- intrinsic-size: auto 200px;
-}
-#target2 {
- intrinsic-size: 100px auto;
-}
-#target3 {
- intrinsic-size: auto 200px;
- overflow: hidden;
-}
-#target4 {
- intrinsic-size: 100px auto;
- overflow: hidden;
-}
-</style>
-
-<img id=target1 src="resources/dice.png"></img>
-<img id=target2 src="resources/dice.png"></img>
-<img id=target3 src="resources/dice.png"></img>
-<img id=target4 src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html
deleted file mode 100644
index 39c6abdcf8e..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-width legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#target {
- background: lightblue;
- width: max-content;
- height: 222px;
-}
-</style>
-
-<div id=target>Lorem ipsum</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html
deleted file mode 100644
index df662e5c7f1..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-001.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: intrinsic-width legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-001-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-#target {
- background: lightblue;
- width: max-content;
- intrinsic-size: legacy 222px;
-}
-</style>
-
-<div id=target>Lorem ipsum</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html
deleted file mode 100644
index 535915a7a7b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002-ref.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex with legacy intrinsic dimensions</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#flex {
- display: flex;
- flex-direction: column;
- height: 500px;
-}
-.item {
- width: max-content;
-}
-#one {
- background: lightblue;
- flex-grow: 3;
-}
-#one > div {
- height: 222px;
-}
-#two {
- background: lightgreen;
- width: 333px;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- flex-grow: 1;
-}
-#three > div {
- height: 444px;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one><div>Lorem ipsum</div></div>
- <div class=item id=two>dolor sit amet</div>
- <div class=item id=three><div>consectetur adipiscing elit</div></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html
deleted file mode 100644
index 66d008ce6ce..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-002.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: flex with legacy intrinsic dimensions</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-002-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-#flex {
- display: flex;
- flex-direction: column;
- height: 500px;
-}
-.item {
- width: max-content;
-}
-#one {
- background: lightblue;
- intrinsic-size: legacy 222px;
- flex-grow: 3;
-}
-#two {
- background: lightgreen;
- intrinsic-size: 333px legacy;
- flex-grow: 2;
-}
-#three {
- background: lightgrey;
- intrinsic-size: legacy 444px;
- flex-grow: 1;
-}
-</style>
-
-<div id=flex>
- <div class=item id=one>Lorem ipsum</div>
- <div class=item id=two>dolor sit amet</div>
- <div class=item id=three>consectetur adipiscing elit</div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html
deleted file mode 100644
index eb6394fe284..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003-ref.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: select multiple with legacy sizing</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-#one {
- box-sizing: content-box;
- height: 222px;
-}
-#two {
- box-sizing: content-box;
- width: 111px;
- overflow: visible;
-}
-</style>
-
-<select multiple id=one></select>
-<select multiple id=two></select>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html
deleted file mode 100644
index 90e4f53bf64..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-003.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: select multiple with legacy sizing</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-003-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-#one {
- intrinsic-size: legacy 222px;
-}
-#two {
- intrinsic-size: 111px legacy;
- overflow: visible;
-}
-</style>
-
-<select multiple id=one></select>
-<select multiple id=two></select>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html
deleted file mode 100644
index d5e7c9ff9bb..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004-ref.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-img {
- border: 1px solid black;
- box-sizing: content-box;
-}
-#target1 {
- height: 200px;
- /* the source img is 320x240, and the intrinsic size only adjusted the height */
- width: 320px;
-}
-#target2 {
- width: 100px;
- /* the source img is 320x240, and the intrinsic size only adjusted the width */
- height: 240px;
-}
-</style>
-
-<img id=target1 src="resources/dice.png"></img>
-<img id=target2 src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html
deleted file mode 100644
index dfeed45d73b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-004.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: replaced content with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-004-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-img {
- border: 1px solid black;
-}
-#target1 {
- intrinsic-size: legacy 200px;
-}
-#target2 {
- intrinsic-size: 100px legacy;
-}
-</style>
-
-<img id=target1 src="resources/dice.png"></img>
-<img id=target2 src="resources/dice.png"></img>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html
deleted file mode 100644
index c23984f5f1a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005-ref.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- box-sizing: content-box;
- width: 70px;
- height: 80px;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- opacity: 0.5;
- height: 100%;
-}
-</style>
-
-<div class=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html
deleted file mode 100644
index baf9bef3aca..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-005.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-005-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- intrinsic-size: legacy 80px;
- width: 70px;
-}
-.two {
- intrinsic-size: 70px legacy;
- height: 80px;
- width: min-content;
-}
-.item {
- background: lightgreen;
- opacity: 0.5;
- height: 100%;
-}
-</style>
-
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html
deleted file mode 100644
index 9b9e25d3c8d..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006-ref.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- grid-template: 1fr 2fr / 3fr 4fr;
- box-sizing: content-box;
- width: 70px;
- height: 80px;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- height: 100%;
-}
-</style>
-
-<div class=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html
deleted file mode 100644
index 41ef1fddc19..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-006.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-006-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- grid-template: 1fr 2fr / 3fr 4fr;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- intrinsic-size: legacy 80px;
- width: 70px;
-}
-.two {
- intrinsic-size: 70px legacy;
- width: min-content;
- height: 80px;
-}
-.item {
- background: lightgreen;
- height: 100%;
-}
-</style>
-
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html
deleted file mode 100644
index 6894b4643ad..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007-ref.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size, large size with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- box-sizing: content-box;
- width: 200px;
- height: 300px;
- background: lightblue;
- grid-gap: 5px;
-}
-.item {
- background: lightgreen;
- height: 100%;
-}
-</style>
-
-<div class=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class=grid>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html
deleted file mode 100644
index df2c57b5d8a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-007.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid definite size, large size with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-007-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- grid-template: 55px 66px / 77px 88px;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- intrinsic-size: legacy 300px;
- width: 200px;
-}
-.two {
- intrinsic-size: 200px legacy;
- width: max-content;
- height: 300px;
-}
-.item {
- background: lightgreen;
- height: 100%;
-}
-</style>
-
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html
deleted file mode 100644
index 5cce1902759..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008-ref.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size, auto-fit with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- width: 70px;
- height: 80px;
- box-sizing: content-box;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- grid-template: repeat(auto-fit, 10px) / 3fr 4fr;
-}
-.two {
- grid-template: 1fr 2fr / repeat(auto-fit, 15px);
-}
-.three {
- grid-template: repeat(auto-fit, 10px) / repeat(auto-fit, 15px);
-}
-
-.item {
- background: green;
- height: 100%;
-}
-</style>
-
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid three">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid one">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid three">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html
deleted file mode 100644
index 45b8fbdd244..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/intrinsic-size-with-legacy-008.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!doctype html>
-<meta charset="utf8">
-<title>CSS intrinsic-size: grid indefinite size, auto-fit with legacy</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<link rel="match" href="intrinsic-size-with-legacy-008-ref.html">
-<meta name="assert" content="intrinsic-size legacy is treated the same as if it was not specified.">
-
-<style>
-.grid {
- border: 3px solid black;
- display: grid;
- background: lightblue;
- grid-gap: 5px;
-}
-.one {
- grid-template: repeat(auto-fit, 10px) / 3fr 4fr;
-}
-.two {
- grid-template: 1fr 2fr / repeat(auto-fit, 15px);
-}
-.three {
- grid-template: repeat(auto-fit, 10px) / repeat(auto-fit, 15px);
-}
-.width {
- intrinsic-size: 70px legacy;
- width: max-content;
- height: 80px;
-}
-.height {
- intrinsic-size: legacy 80px;
- width: 70px;
-}
-.item {
- background: green;
- height: 100%;
-}
-</style>
-
-<div class="grid one width">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two width">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid three width">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid one height">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid two height">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
-<div class="grid three height">
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
- <div class=item></div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html
deleted file mode 100644
index e9a073ca2aa..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-computed.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-block-size with computed values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-block-size supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id=target></div>
-<div id=scratch></div>
-<script>
-
-function length_ref(length) {
- document.getElementById("scratch").style.width = length;
- return getComputedStyle(document.getElementById("scratch")).getPropertyValue("width");
-}
-
-test_computed_value("intrinsic-block-size", "auto");
-test_computed_value("intrinsic-block-size", "legacy");
-test_computed_value("intrinsic-block-size", "1px");
-test_computed_value("intrinsic-block-size", "2vw", length_ref("2vw"));
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html
deleted file mode 100644
index 1b6cba20f88..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-invalid.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-block-size with invalid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-block-size supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("intrinsic-block-size", "none");
-test_invalid_value("intrinsic-block-size", "10%");
-test_invalid_value("intrinsic-block-size", "-1px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html
deleted file mode 100644
index b34c73b230f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-block-size-valid.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-block-size with valid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-block-size supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("intrinsic-block-size", "auto");
-test_valid_value("intrinsic-block-size", "legacy");
-test_valid_value("intrinsic-block-size", "1px");
-test_valid_value("intrinsic-block-size", "2vw");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html
deleted file mode 100644
index 6f95274c637..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-computed.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-height with computed values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-height supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id=target></div>
-<div id=scratch></div>
-<script>
-
-function length_ref(length) {
- document.getElementById("scratch").style.width = length;
- return getComputedStyle(document.getElementById("scratch")).getPropertyValue("width");
-}
-
-test_computed_value("intrinsic-height", "auto");
-test_computed_value("intrinsic-height", "legacy");
-test_computed_value("intrinsic-height", "1px");
-test_computed_value("intrinsic-height", "2vw", length_ref("2vw"));
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html
deleted file mode 100644
index 1f801124a2b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-invalid.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-height with invalid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-height supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("intrinsic-height", "none");
-test_invalid_value("intrinsic-height", "10%");
-test_invalid_value("intrinsic-height", "-1px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html
deleted file mode 100644
index e4614762118..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-height-valid.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-height with valid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-height supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("intrinsic-height", "auto");
-test_valid_value("intrinsic-height", "legacy");
-test_valid_value("intrinsic-height", "1px");
-test_valid_value("intrinsic-height", "2vw");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html
deleted file mode 100644
index c53a77e5631..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-computed.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-inline-size with computed values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-inline-size supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id=target></div>
-<div id=scratch></div>
-<script>
-
-function length_ref(length) {
- document.getElementById("scratch").style.width = length;
- return getComputedStyle(document.getElementById("scratch")).getPropertyValue("width");
-}
-
-test_computed_value("intrinsic-inline-size", "auto");
-test_computed_value("intrinsic-inline-size", "legacy");
-test_computed_value("intrinsic-inline-size", "1px");
-test_computed_value("intrinsic-inline-size", "2vw", length_ref("2vw"));
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html
deleted file mode 100644
index 6ad224d11d3..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-invalid.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-inline-size with invalid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-inline-size supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("intrinsic-inline-size", "none");
-test_invalid_value("intrinsic-inline-size", "10%");
-test_invalid_value("intrinsic-inline-size", "-1px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html
deleted file mode 100644
index ad5aef95dca..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-inline-size-valid.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-inline-size with valid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-inline-size supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("intrinsic-inline-size", "auto");
-test_valid_value("intrinsic-inline-size", "legacy");
-test_valid_value("intrinsic-inline-size", "1px");
-test_valid_value("intrinsic-inline-size", "2vw");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html
deleted file mode 100644
index 29be33d4a3d..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-computed.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-size with computed values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-size supports the full grammar '[auto | legacy | <length>]{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id=target></div>
-<div id=scratch></div>
-<script>
-
-function length_ref(length) {
- document.getElementById("scratch").style.width = length;
- return getComputedStyle(document.getElementById("scratch")).getPropertyValue("width");
-}
-
-test_computed_value("intrinsic-size", "auto");
-test_computed_value("intrinsic-size", "legacy");
-test_computed_value("intrinsic-size", "legacy auto");
-test_computed_value("intrinsic-size", "auto legacy");
-test_computed_value("intrinsic-size", "1px");
-test_computed_value("intrinsic-size", "1px auto");
-test_computed_value("intrinsic-size", "1px legacy");
-test_computed_value("intrinsic-size", "auto 1px");
-test_computed_value("intrinsic-size", "legacy 1px");
-test_computed_value("intrinsic-size", "2vw 3px", length_ref("2vw") + " 3px");
-test_computed_value("intrinsic-size", "2px 3vh", "2px " + length_ref("3vh"));
-test_computed_value("intrinsic-size", "5px 5px", "5px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html
deleted file mode 100644
index b4cb2dbffd2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-invalid.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-size with invalid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-size supports the full grammar '[auto | legacy | <length>]{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("intrinsic-size", "auto legacy auto");
-test_invalid_value("intrinsic-size", "10%");
-test_invalid_value("intrinsic-size", "2em 3px 5px");
-test_invalid_value("intrinsic-size", "1px 1%");
-test_invalid_value("intrinsic-size", "1px auto auto");
-test_invalid_value("intrinsic-size", "-1px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html
deleted file mode 100644
index e70c3179223..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-sets-computed-dimensions.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-size sets component dimensions.</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-size sets component dimensions.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-<style>
-#horizontal-target {
- writing-mode: horizontal-tb;
-}
-#vertical-target {
- writing-mode: vertical-rl;
-}
-</style>
-</head>
-<body>
-<div id=horizontal-target></div>
-<div id=vertical-target></div>
-<script>
-
-const horizontal = document.getElementById("horizontal-target");
-const vertical = document.getElementById("vertical-target");
-
-function runTest() {
- const horizontal_style = getComputedStyle(horizontal);
- const vertical_style = getComputedStyle(vertical);
- test(() => {
- assert_equals(horizontal_style["intrinsic-width"], "1px");
- assert_equals(vertical_style["intrinsic-width"], "1px");
- }, 'intrinsic-width set correctly');
-
- test(() => {
- assert_equals(horizontal_style["intrinsic-height"], "2px");
- assert_equals(vertical_style["intrinsic-height"], "2px");
- }, 'intrinsic-height set correctly');
-
- test(() => {
- assert_equals(horizontal_style["intrinsic-inline-size"], "1px");
- assert_equals(vertical_style["intrinsic-inline-size"], "2px");
- }, 'intrinsic-inline-size set correctly');
-
- test(() => {
- assert_equals(horizontal_style["intrinsic-block-size"], "2px");
- assert_equals(vertical_style["intrinsic-block-size"], "1px");
- }, 'intrinsic-block-size set correctly');
-}
-
-window.onload = () => {
- horizontal.style["intrinsic-size"] = "1px 2px";
- vertical.style["intrinsic-size"] = "1px 2px";
- runTest();
-};
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html
deleted file mode 100644
index 7ab13c7d798..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-size-valid.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-size with valid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-size supports the full grammar '[auto | legacy | <length>]{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("intrinsic-size", "auto");
-test_valid_value("intrinsic-size", "legacy");
-test_valid_value("intrinsic-size", "auto legacy");
-test_valid_value("intrinsic-size", "auto auto", "auto");
-test_valid_value("intrinsic-size", "legacy legacy", "legacy");
-test_valid_value("intrinsic-size", "1px");
-test_valid_value("intrinsic-size", "2em 3px");
-test_valid_value("intrinsic-size", "5px 5px", "5px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html
deleted file mode 100644
index 08602e5347f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-computed.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-width with computed values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-width supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id=target></div>
-<div id=scratch></div>
-<script>
-
-function length_ref(length) {
- document.getElementById("scratch").style.width = length;
- return getComputedStyle(document.getElementById("scratch")).getPropertyValue("width");
-}
-
-test_computed_value("intrinsic-width", "auto");
-test_computed_value("intrinsic-width", "legacy");
-test_computed_value("intrinsic-width", "1px");
-test_computed_value("intrinsic-width", "2vw", length_ref("2vw"));
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html
deleted file mode 100644
index b89f6567ae2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-invalid.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-width with invalid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-width supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("intrinsic-width", "none");
-test_invalid_value("intrinsic-width", "10%");
-test_invalid_value("intrinsic-width", "-1px");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html
deleted file mode 100644
index e2d23eabe5d..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/parsing/intrinsic-width-valid.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Intrinsic Size Test: intrinsic-width with valid values</title>
-<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override">
-<meta name="assert" content="intrinsic-width supports the full grammar 'auto | legacy | <length>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("intrinsic-width", "auto");
-test_valid_value("intrinsic-width", "legacy");
-test_valid_value("intrinsic-width", "1px");
-test_valid_value("intrinsic-width", "2vw");
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/resources/dice.png b/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/resources/dice.png
deleted file mode 100644
index c82d01517cd..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/intrinsic-size/resources/dice.png
+++ /dev/null
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001-ref.html b/tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001-ref.html
deleted file mode 100644
index a4e7f1ece46..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001-ref.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Sizing: Test that percentages don't resolve against min-content</title>
-<link rel="author" title="Google Inc." href="https://www.google.com/" />
-
-<style>
-.inner {
- background-color: green;
-}
-</style>
-
-<body>
- <div class="outer">
- <div class="inner">This should be a single-line green background with no red visible.</div>
- </div>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001.html b/tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001.html
deleted file mode 100644
index b2cc727ca7a..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/percentage-resolution-001.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Sizing: Test that percentages don't resolve against min-content</title>
-<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#percentage-sizing" />
-<link rel="author" title="Google Inc." href="https://www.google.com/" />
-<link rel="match" href="percentage-resolution-001-ref.html" />
-
-<style>
-.outer {
- min-height: min-content;
- max-height: min-content;
- height: 500px;
- background-color: red;
-}
-
-.inner {
- height: 50%;
- background-color: green;
-}
-</style>
-
-<body>
- <div class="outer">
- <div class="inner">This should be a single-line green background with no red visible.</div>
- </div>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-overflow-001.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-overflow-001.html
index 4154e5e1181..948b728254a 100644
--- a/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-overflow-001.html
+++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/hyphens-overflow-001.html
@@ -9,7 +9,6 @@ div {
font-size: 10px;
font-family: Ahem;
width: 5.1ch;
- border: 1px solid blue;
}
</style>
<body>
@@ -19,7 +18,4 @@ div {
<div>1234&shy;xx</div>
<div>12345&shy;xx</div>
<div>123456&shy;xx</div>
-
- <div style="width: 10ch"><span>ren&shy;for&shy;cer</span>99999</div>
- <div><span>00&shy;1</span>222</div>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-overflow-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-overflow-001-ref.html
index db002ce45d8..08d521d3396 100644
--- a/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-overflow-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-text/hyphens/reference/hyphens-overflow-001-ref.html
@@ -4,8 +4,6 @@
div {
font-size: 10px;
font-family: Ahem;
- width: 5.1ch;
- border: 1px solid blue;
}
</style>
<body>
@@ -15,7 +13,4 @@ div {
<div>1234-<br>xx</div>
<div>12345-<br>xx</div>
<div>123456-<br>xx</div>
-
- <div style="width: 10ch">renfor-<br>cer99999</div>
- <div>00-<br>1222</div>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-computed.html b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-computed.html
new file mode 100644
index 00000000000..b12922924ad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-computed.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text: getComputedStyle().wordBoundaryDetection</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<meta name="assert" content="word-boundary-detection computed value is specified keyword.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("word-boundary-detection", "normal");
+test_computed_value("word-boundary-detection", "manual");
+/* Not sure how to test for auto(<lang>) generically, as which one will parse depends on languages actually supported */
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-invalid.html b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-invalid.html
new file mode 100644
index 00000000000..a844566b8ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text Module Test: parsing word-boundary-detection with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<meta name="assert" content="word-boundary-detection supports only the grammar 'normal | manual | auto(<lang>)'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("word-boundary-detection", "auto"); /*needs a language*/
+test_invalid_value("word-boundary-detection", "auto()"); /*needs a language*/
+test_invalid_value("word-boundary-detection", "none");
+test_invalid_value("word-boundary-detection", "normal manual");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-valid.html b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-valid.html
new file mode 100644
index 00000000000..81a8ea32b99
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-detection-valid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text Module Test: parsing word-boundary-detection with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<meta name="assert" content="word-boundary-detection supports the full grammar 'normal | manual | auto(<lang>) '.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("word-boundary-detection", "normal");
+test_valid_value("word-boundary-detection", "manual");
+/* Not sure how to test for auto(<lang>) generically, as which one will parse depends on languages actually supported */
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-computed.html b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-computed.html
new file mode 100644
index 00000000000..054a298ae78
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-computed.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text: getComputedStyle().wordBoundaryExpansion</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<meta name="assert" content="word-boundary-expansion computed value is specified keyword.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("word-boundary-expansion", "none");
+test_computed_value("word-boundary-expansion", "space");
+test_computed_value("word-boundary-expansion", "ideographic-space");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-invalid.html b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-invalid.html
new file mode 100644
index 00000000000..6b68e578d4d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text Module Test: parsing word-boundary-expansion with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<meta name="assert" content="word-boundary-expansion supports only the grammar 'none | space | ideographic-space'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("word-boundary-expansion", "auto");
+test_invalid_value("word-boundary-expansion", "normal");
+test_invalid_value("word-boundary-expansion", "spaces");
+test_invalid_value("word-boundary-expansion", "space ideographic-space");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-valid.html b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-valid.html
new file mode 100644
index 00000000000..cf1128a5f72
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/parsing/word-boundary-expansion-valid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text Module Test: parsing word-boundary-expansion with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<meta name="assert" content="word-boundary-expansion supports the full grammar 'none | space | ideographic-space'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("word-boundary-expansion", "none");
+test_valid_value("word-boundary-expansion", "space");
+test_valid_value("word-boundary-expansion", "ideographic-space");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-001-ref.html
new file mode 100644
index 00000000000..620079f6ad4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-001-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div>あ い う</div>
+<div>あ い う</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-002-ref.html
new file mode 100644
index 00000000000..70a1a6528e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-002-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div>a b c</div>
+<div>a b c</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-004-ref.html
new file mode 100644
index 00000000000..fbe74942b14
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-004-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div>ab c</div>
+<div>ab c</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-007-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-007-ref.html
new file mode 100644
index 00000000000..b0cb8913084
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-007-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div>a b c d e f g h i j</div>
+<div>a b c d e f g h i j</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-008-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-008-ref.html
new file mode 100644
index 00000000000..ff73104a004
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-008-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ white-space: pre;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div>a b c d e f g h i j</div>
+<div>a b c d e f g h i j</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-009-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-009-ref.html
new file mode 100644
index 00000000000..815fe800e3d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-009-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div>a b c d e f g</div>
+<div>a b c d e f g</div>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-010-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-010-ref.html
new file mode 100644
index 00000000000..2ca6b8db7e4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-010-ref.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ float: left;
+ margin: 1px;
+ padding: 0 1em;
+}
+</style>
+
+<p>Test passes if the all boxes below are identical.
+
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+<div>あ い</div>
+
+<div>あ い</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-011-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-011-ref.html
new file mode 100644
index 00000000000..e1af62ffdf0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-011-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ float: left;
+ margin: 1px;
+}
+</style>
+
+<p>Test passes if the all boxes below are identical.
+
+<div id=ref>あ い<br>う</div>
+<div id=ref>あ い<br>う</div>
+
+<div id=ref>あ い<br>う</div>
+<div id=ref>あ い<br>う</div>
+
+<div id=ref>あ い<br>う</div>
+<div id=ref>あ い<br>う</div>
+
+<div id=ref>あ い<br>う</div>
+<div id=ref>あ い<br>う</div>
+
+<div id=ref>あ い<br>う</div>
+<div id=ref>あ い<br>う</div>
+
+<div id=ref>あ い<br>う</div>
+<div id=ref>あ い<br>う</div>
+
+<div id=ref>あ い<br>う</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-012-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-012-ref.html
new file mode 100644
index 00000000000..016dc5968c0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-012-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ float: left;
+ margin: 1px;
+}
+</style>
+
+<p>Test passes if the all boxes below are identical.
+
+<div id=ref>あい うえ</div>
+<div id=ref>あい うえ</div>
+<div id=ref>あい うえ</div>
+
+<div id=ref>あい うえ</div>
+<div id=ref>あい うえ</div>
+<div id=ref>あい うえ</div>
+
+<div id=ref>あい うえ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-013-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-013-ref.html
new file mode 100644
index 00000000000..9490e52d1ba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-013-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ width: 7em;
+ border: solid blue;
+ margin: 1em;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div>ああ いい <br>うう</div>
+<div>ああ いい <br>うう</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-014-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-014-ref.html
new file mode 100644
index 00000000000..dbec99b0827
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-014-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ width: 7ch;
+ font-family: monospace;
+ border: solid blue;
+ margin: 1em;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div>aa bb <br>cc</div>
+<div>aa bb <br>cc</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-101-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-101-ref.html
new file mode 100644
index 00000000000..f51208ab95f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-101-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=th>กรุงเทพคือสวยงาม</div>
+<div lang=th>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-102-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-102-ref.html
new file mode 100644
index 00000000000..df308cee75c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-102-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div lang=th>กรุงเทพคือสวยงาม</div>
+<div lang=th>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-103-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-103-ref.html
new file mode 100644
index 00000000000..64f2b231c04
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-103-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div lang=de>กรุงเทพคือสวยงาม</div>
+<div lang=de>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-104-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-104-ref.html
new file mode 100644
index 00000000000..15843b7296e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-104-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div>กรุงเทพคือสวยงาม</div>
+<div>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-105-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-105-ref.html
new file mode 100644
index 00000000000..3ba4c6f143c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-105-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div lang=ja>กรุงเทพคือสวยงาม</div>
+<div lang=ja>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-106-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-106-ref.html
new file mode 100644
index 00000000000..04d54ca20a8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-106-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div>กรุงเทพคือสวยงาม</div>
+<div>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-107-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-107-ref.html
new file mode 100644
index 00000000000..2decfe1cc09
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-107-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=zh>東京へ行きましょう。</div>
+<div lang=zh>東京へ行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-108-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-108-ref.html
new file mode 100644
index 00000000000..45497690fe4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-108-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div>東京へ行きましょう。</div>
+<div>東京へ行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-a-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-a-ref.html
new file mode 100644
index 00000000000..3cf81f6175d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-a-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+.wrap {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+ word-break: keep-all;
+}
+.wrap > div {
+ width: 0;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+</style>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 class=wrap>
+ <div lang=ja>東京へ<wbr>行きましょう。</div>
+</div>
+<div class=wrap>
+ <div lang=ja>東京へ<wbr>行きましょう。</div>
+</div>
+<div id=ref2 class=wrap>
+ <div lang=ja>東京<wbr>へ<wbr>行きましょう。</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-b-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-b-ref.html
new file mode 100644
index 00000000000..3b787b91581
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-109-b-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+.wrap {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+ word-break: keep-all;
+}
+.wrap > div {
+ width: 0;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+</style>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 class=wrap>
+ <div lang=ja>東京へ<wbr>行きましょう。</div>
+</div>
+<div class=wrap>
+ <div lang=ja>東京<wbr>へ<wbr>行きましょう。</div>
+</div>
+<div id=ref2 class=wrap>
+ <div lang=ja>東京<wbr>へ<wbr>行きましょう。</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-a-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-a-ref.html
new file mode 100644
index 00000000000..3347778df6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-a-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+</style>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 lang=ja>東京へ 行きましょう。</div>
+<div id=test lang=ja>東京へ 行きましょう。</div>
+<div id=ref2 lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-b-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-b-ref.html
new file mode 100644
index 00000000000..550c9e88880
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-110-b-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+</style>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 lang=ja>東京へ 行きましょう。</div>
+<div id=test lang=ja>東京 へ 行きましょう。</div>
+<div id=ref2 lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-111-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-111-ref.html
new file mode 100644
index 00000000000..fbb536e5659
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-111-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+.wrap {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+.wrap > div {
+ width: 0;
+}
+#ref {
+ border-color: blue;
+}
+</style>
+
+<!--
+This test should pass even in UAs that don't support word-boundary-detection:auto(th)
+since allowing south-east-asian languages to wrap is the default behavior.
+-->
+
+<p>Test passes if the black box is identical to either the blue one.
+
+<div class=wrap>
+ <div lang=th>กรุงเทพ<wbr>คือ<wbr>สวยงาม</div>
+</div>
+<div id=ref class=wrap>
+ <div lang=th>กรุงเทพ<wbr>คือ<wbr>สวยงาม</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-112-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-112-ref.html
new file mode 100644
index 00000000000..f7f79390810
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-112-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+.wrap {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#ref {
+ border-color: blue;
+}
+</style>
+<!--
+
+This test should pass even in UAs that don't support word-boundary-detection:auto(th)
+since inserting virtual word boundaries is the default for south-east-asian languages.
+-->
+
+<p>Test passes if the black box is identical to the blue one.
+
+<div lang=th>กรุงเทพ คือ สวยงาม</div>
+<div id=ref lang=th>กรุงเทพ คือ สวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-113-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-113-ref.html
new file mode 100644
index 00000000000..738c600f5b4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-113-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#ref {
+ border-color: blue;
+}
+u { background: silver; }
+b { background: green; }
+em { background: gray; }
+</style>
+<!--
+
+This test should pass even in UAs that don't support word-boundary-detection:auto(th)
+since inserting virtual word boundaries is the default for south-east-asian languages.
+-->
+
+<p>Test passes if the black box is identical to the blue one.
+
+<div lang=th>กรุงเทพ <b><u>คือ</u> <em>สวยง</em></b>าม</div>
+<div id=ref lang=th>กรุงเทพ <b><u>คือ</u> <em>สวยง</em></b>าม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-a-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-a-ref.html
new file mode 100644
index 00000000000..4ff39ee4f3f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-a-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+u { background: silver; }
+b { background: green; }
+em { background: gray; }
+</style>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 lang=ja>東京<b><u>へ</u> <em>行きましょ</em></b>う。</div>
+<div lang=ja>東京<b><u>へ</u> <em>行きましょ</em></b>う。</div>
+<div id=ref2 lang=ja>東京 <b><u>へ</u> <em>行きましょ</em></b>う。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-b-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-b-ref.html
new file mode 100644
index 00000000000..5b58e078dcf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-114-b-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+u { background: silver; }
+b { background: green; }
+em { background: gray; }
+</style>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 lang=ja>東京<b><u>へ</u> <em>行きましょ</em></b>う。</div>
+<div lang=ja>東京 <b><u>へ</u> <em>行きましょ</em></b>う。</div>
+<div id=ref2 lang=ja>東京 <b><u>へ</u> <em>行きましょ</em></b>う。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-115-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-115-ref.html
new file mode 100644
index 00000000000..a7d1dffcd9f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-115-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京へ行きましょう。</div>
+<div lang=ja>東京へ行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-116-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-116-ref.html
new file mode 100644
index 00000000000..62d26d6a4b5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-116-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京 へ 行きましょう。</div>
+<div lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-117-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-117-ref.html
new file mode 100644
index 00000000000..81d1f0601dd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-117-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京 へ 行きましょう。</div>
+<div lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-119-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-119-ref.html
new file mode 100644
index 00000000000..e198dafafa1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-119-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京&nbsp;へ&nbsp;行きましょう。</div>
+<div lang=ja>東京&nbsp;へ&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-120-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-120-ref.html
new file mode 100644
index 00000000000..e9cecd792b0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-120-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京&#x2060;へ&#x2060;行きましょう。</div>
+<div lang=ja>東京&#x2060;へ&#x2060;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-121-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-121-ref.html
new file mode 100644
index 00000000000..86ecdba9129
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-121-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京&#x200D;へ&#x200D;行きましょう。</div>
+<div lang=ja>東京&#x200D;へ&#x200D;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-122-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-122-ref.html
new file mode 100644
index 00000000000..27170553468
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-122-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京}&nbsp;へ}&nbsp;行きましょう。</div>
+<div lang=ja>東京}&nbsp;へ}&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-123-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-123-ref.html
new file mode 100644
index 00000000000..35b0e5f05a7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-123-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京)&nbsp;へ)&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京)&nbsp;へ)&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-124-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-124-ref.html
new file mode 100644
index 00000000000..fd732b44ec4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-124-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京.&nbsp;へ.&nbsp;行きましょう。</div>
+<div lang=ja>東京.&nbsp;へ.&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-125-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-125-ref.html
new file mode 100644
index 00000000000..aad7d3d4d95
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-125-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京!&nbsp;へ!&nbsp;行きましょう。</div>
+<div lang=ja>東京!&nbsp;へ!&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-126-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-126-ref.html
new file mode 100644
index 00000000000..91f2ec7b193
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-126-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京&nbsp;(へ&nbsp;(行きましょう。</div>
+<div lang=ja>東京&nbsp;(へ&nbsp;(行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-127-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-127-ref.html
new file mode 100644
index 00000000000..b354a4f12dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-127-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京%&nbsp;へ%&nbsp;行きましょう。</div>
+<div lang=ja>東京%&nbsp;へ%&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-128-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-128-ref.html
new file mode 100644
index 00000000000..8dcabb01e29
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-128-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div lang=ja>東京‼&nbsp;へ‼&nbsp;行きましょう。</div>
+<div lang=ja>東京‼&nbsp;へ‼&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-129-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-129-ref.html
new file mode 100644
index 00000000000..5d7d5577aec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/reference/word-boundary-129-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&nbsp;$へ&nbsp;$行きましょう。</div>
+<div id=ref lang=ja>東京&nbsp;$へ&nbsp;$行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-001.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-001.html
new file mode 100644
index 00000000000..08ad0d1a988
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-001.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion:ideographic-space </title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-001-ref.html">
+<meta name="assert" content="Both zero-width-spaces and <wbr> are expanded by word-boundary-expansion: ideographic-space">
+<style>
+div {
+ font-size: 2em;
+}
+#test {
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>あ<wbr>い&#x200B;う</div>
+<div id=ref>あ い う</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-002.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-002.html
new file mode 100644
index 00000000000..58dede44b2c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-002.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion:space</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-002-ref.html">
+<meta name="assert" content="Both zero-width-spaces and <wbr> are expanded by word-boundary-expansion: space">
+<style>
+div {
+ font-size: 2em;
+}
+#test {
+ word-boundary-expansion: space;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>a<wbr>b&#x200B;c</div>
+<div id=ref>a b c</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-003.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-003.html
new file mode 100644
index 00000000000..41151753f92
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-003.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion inherits</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-001-ref.html">
+<meta name="assert" content="word-boundary-expansion inherits">
+<style>
+div {
+ font-size: 2em;
+}
+#wrap {
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=wrap>
+ <div id=test>あ<wbr>い&#x200B;う</div>
+</div>
+<div id=ref>あ い う</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-004.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-004.html
new file mode 100644
index 00000000000..ad7f19fdb99
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-004.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion off on wbr</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-004-ref.html">
+<meta name="assert" content="word-boundary-expansion can be turned off on a <wbr>">
+<style>
+div {
+ font-size: 2em;
+}
+#test {
+ word-boundary-expansion: space;
+}
+wbr {
+ word-boundary-expansion: none;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>a<wbr>b&#x200B;c</div>
+<div id=ref>ab c</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-005.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-005.html
new file mode 100644
index 00000000000..f124c3737ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-005.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion off on inline</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-004-ref.html">
+<meta name="assert" content="word-boundary-expansion can be turned off on a inlines">
+<style>
+div {
+ font-size: 2em;
+}
+#test {
+ word-boundary-expansion: space;
+}
+span {
+ word-boundary-expansion: none;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test><span>a&#x200B;b</span>&#x200B;c</div>
+<div id=ref>ab c</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-006.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-006.html
new file mode 100644
index 00000000000..587847b75cd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-006.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: turn on word-boundary-expansion on wbr and inlines</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-002-ref.html">
+<meta name="assert" content="word-boundary-expansion applies to inlines, including wbr">
+<style>
+div {
+ font-size: 2em;
+}
+wbr, span {
+ word-boundary-expansion: space;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>a<wbr>b<span>&#x200B;c</span></div>
+<div id=ref>a b c</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-007.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-007.html
new file mode 100644
index 00000000000..912188c7404
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-007.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion space collapsing</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="help" href="https://www.w3.org/TR/css-text-3/#white-space-phase-1">
+<link rel="match" href="reference/word-boundary-007-ref.html">
+<meta name="assert" content="word-boundary-expnasion happens before phase 1 of white space processing, so inserted spaces collapse with adjacent ones">
+<style>
+div {
+ font-size: 2em;
+}
+#test {
+ word-boundary-expansion: space;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>a<wbr> b <wbr>c &#x200B;d&#x200B; e<wbr><wbr>f&#x200B;&#x200B;g<wbr>&#x200B;h&#x200B;<wbr>i <wbr> &#x200B; j</div>
+<div id=ref>a b c d e f g h i j</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-008.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-008.html
new file mode 100644
index 00000000000..a1dfb828f25
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-008.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion space non collapsing</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="help" href="https://www.w3.org/TR/css-text-3/#white-space-phase-1">
+<link rel="match" href="reference/word-boundary-008-ref.html">
+<meta name="assert" content="word-boundary-expnasion happens before phase 1 of white space processing, so inserted spaces can be preserved by white-space:pre">
+<style>
+div {
+ font-size: 2em;
+ white-space: pre;
+}
+#test {
+ word-boundary-expansion: space;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>a<wbr> b <wbr>c &#x200B;d&#x200B; e<wbr><wbr>f&#x200B;&#x200B;g<wbr>&#x200B;h&#x200B;<wbr>i <wbr> &#x200B; j</div>
+<div id=ref>a b c d e f g h i j</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-009.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-009.html
new file mode 100644
index 00000000000..cb8ec84fc2b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-009.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion and text-transform:full-width</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-1">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#text-transform-property">
+<link rel="match" href="reference/word-boundary-009-ref.html">
+<meta name="assert" content="word-boundary-expansion:space happens at the right stage of the white space processing pipeline to interact properly with text-transform:full-width">
+<style>
+div {
+ font-size: 2em;
+}
+#test {
+ word-boundary-expansion: space;
+ text-transform: full-width;
+}
+</style>
+
+<p>Test passes if the two lines below are identical.
+
+<div id=test>a b<wbr>c&#x200B;d <wbr>e &#x200B;f<wbr>&#x200B;g</div>
+<div id=ref>a b c d e f g</div>
+
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-010.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-010.html
new file mode 100644
index 00000000000..6e1cc1ccf27
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-010.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion and forced line breaks</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-010-ref.html">
+<meta name="assert" content="must not replace instances of U+200B immediately preceding or following a forced line break (ignoring any intervening inline box boundaries, and associated margin/border/padding)">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ float: left;
+ margin: 1px;
+}
+.pad { padding: 0 1em; }
+.spad { padding: 0 0.5em; }
+.margin { margin: 0 1em; }
+.smargin { margin: 0 0.5em; }
+.border { border: solid transparent; border-width: 0 1em; }
+.sborder { border: solid transparent; border-width: 0 0.5em; }
+.test {
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p>Test passes if the all boxes below are identical.
+
+<div class="test pad"><wbr>あ<wbr>い<wbr></div>
+<div class="test pad">&#x200B;あ&#x200B;い&#x200B;</div>
+<div class="test pad"><span><wbr>あ<wbr>い<wbr><span></div>
+<div class="test pad"><span>&#x200B;あ&#x200B;い&#x200B;</span></div>
+<div class="test pad"><span></span><wbr>あ<wbr>い<wbr><span></span></div>
+<div class="test pad"><span></span>&#x200B;あ&#x200B;い&#x200B;<span></span></div>
+
+<div class="test"><span class=pad><wbr>あ<wbr>い<wbr><span></div>
+<div class="test"><span class=pad>&#x200B;あ&#x200B;い&#x200B;</span></div>
+<div class="test"><span class=spad></span><wbr>あ<wbr>い<wbr><span class=spad></span></div>
+<div class="test"><span class=spad></span>&#x200B;あ&#x200B;い&#x200B;<span class=spad></span></div>
+
+<div class="test"><span class=margin><wbr>あ<wbr>い<wbr><span></div>
+<div class="test"><span class=margin>&#x200B;あ&#x200B;い&#x200B;</span></div>
+<div class="test"><span class=smargin></span><wbr>あ<wbr>い<wbr><span class=smargin></span></div>
+<div class="test"><span class=smargin></span>&#x200B;あ&#x200B;い&#x200B;<span class=smargin></span></div>
+
+<div class="test"><span class=border><wbr>あ<wbr>い<wbr><span></div>
+<div class="test"><span class=border>&#x200B;あ&#x200B;い&#x200B;</span></div>
+<div class="test"><span class=sborder></span><wbr>あ<wbr>い<wbr><span class=sborder></span></div>
+<div class="test"><span class=sborder></span>&#x200B;あ&#x200B;い&#x200B;<span class=sborder></span></div>
+
+<div id=ref class=pad>あ い</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-011.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-011.html
new file mode 100644
index 00000000000..4da3a7a5c9d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-011.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion and forced line breaks (br and preserved new lines)</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-011-ref.html">
+<meta name="assert" content="must not replace instances of U+200B immediately preceding or following a forced line break (br and preserved new lines)">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ float: left;
+ margin: 1px;
+}
+.test {
+ word-boundary-expansion: ideographic-space;
+}
+.pre {
+ white-space: pre;
+}
+.mbp span {
+ padding: 0 5px;
+ border: solid transparent;
+ border-width: 0 5px;
+ margin: 0 -10px;
+}
+</style>
+
+<p>Test passes if the all boxes below are identical.
+
+<div class="test">あ<wbr>い<wbr><br><wbr>う</div>
+<div class="test">あ&#x200B;い&#x200B;<br>&#x200B;う</div>
+
+<div class="test">あ<wbr>い<span><wbr></span><span></span><span><br></span><span></span><span><wbr></span>う</div>
+<div class="test">あ&#x200B;い<span>&#x200B;</span><span></span><span><br></span><span></span><span>&#x200B;</span>う</div>
+
+<div class="test mbp">あ<wbr>い<span><wbr></span><span></span><span><br></span><span></span><span><wbr></span>う</div>
+<div class="test mbp">あ&#x200B;い<span>&#x200B;</span><span></span><span><br></span><span></span><span>&#x200B;</span>う</div>
+
+<div class="test pre">あ<wbr>い<wbr>
+<wbr>う</div>
+<div class="test pre">あ&#x200B;い&#x200B;
+&#x200B;う</div>
+
+<div class="test pre">あ<wbr>い<span><wbr></span><span></span><span>
+</span><span></span><span><wbr></span>う</div>
+<div class="test pre">あ&#x200B;い<span>&#x200B;</span><span></span><span>
+</span><span></span><span>&#x200B;</span>う</div>
+
+<div class="test pre mbp">あ<wbr>い<span><wbr></span><span></span><span>
+</span><span></span><span><wbr></span>う</div>
+<div class="test pre mbp">あ&#x200B;い<span>&#x200B;</span><span></span><span>
+</span><span></span><span>&#x200B;</span>う</div>
+
+<div id=ref>あ い<br>う</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-012.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-012.html
new file mode 100644
index 00000000000..aabc8d6861e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-012.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion and forced line breaks (inline blocks)</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-012-ref.html">
+<meta name="assert" content="must not replace instances of U+200B immediately preceding or following a forced line break (inline block boundaries)">
+<style>
+div {
+ font-size: 2em;
+ border: solid blue;
+ float: left;
+ margin: 1px;
+}
+.test {
+ word-boundary-expansion: ideographic-space;
+}
+a { display: inline-block; }
+.mbp span {
+ padding: 0 5px;
+ border: solid transparent;
+ border-width: 0 5px;
+ margin: 0 -10px;
+}
+</style>
+
+<p>Test passes if the all boxes below are identical.
+
+<div class=test>あ<a><wbr>い<wbr>う<wbr></a>え</div>
+<div class=test>あ<a><span></span><span><wbr></span>い<wbr>う<span><wbr></span><span></span></a>え</div>
+<div class="test mbp">あ<a><span></span><span><wbr></span>い<wbr>う<span><wbr></span><span></span></a>え</div>
+
+<div class=test>あ<a>&#x200B;い&#x200B;う&#x200B;</a>え</div>
+<div class=test>あ<a><span></span><span>&#x200B;</span>い&#x200B;う<span>&#x200B;</span><span></span></a>え</div>
+<div class="test mbp">あ<a><span></span><span>&#x200B;</span>い&#x200B;う<span>&#x200B;</span><span></span></a>え</div>
+
+<div id=ref>あい うえ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-013.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-013.html
new file mode 100644
index 00000000000..f0d96417987
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-013.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion and keep-all</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="match" href="reference/word-boundary-013-ref.html">
+<meta name="assert" content="ideographic spaces inserted by word-boundary-expansion provide soft wrapping opportunities, even with keep-all">
+<style>
+div {
+ font-size: 2em;
+ width: 7em;
+ border: solid blue;
+ margin: 1em;
+}
+#test {
+ word-boundary-expansion: ideographic-space;
+ word-break: keep-all;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test>ああ<wbr>いい<wbr>うう</div>
+<div id=ref>ああ いい <br>うう</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-014.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-014.html
new file mode 100644
index 00000000000..f4400647985
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-014.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion and keep-all</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="match" href="reference/word-boundary-014-ref.html">
+<meta name="assert" content="spaces inserted by word-boundary-expansion provide soft wrapping opportunities, even with keep-all">
+<style>
+div {
+ font-size: 2em;
+ width: 7ch;
+ font-family: monospace;
+ border: solid blue;
+ margin: 1em;
+}
+#test {
+ word-boundary-expansion: space;
+ word-break: keep-all;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test>aa<wbr>bb<wbr>cc</div>
+<div id=ref>aa bb <br>cc</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-015-manual.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-015-manual.html
new file mode 100644
index 00000000000..8b7c6d98eeb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-015-manual.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-expansion copy-pasting</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<meta name="assert" content="word-boundary-expansion does not affect copy and paste">
+<style>
+div, textarea {
+ font-size: 2em;
+ margin: 1em;
+ font-family: monospace;
+ resize: none;
+ overflow: hidden;
+ height: 2em;
+ width: 20ch;
+ padding: 0px;
+}
+#test {
+ border: solid blue;
+ word-boundary-expansion: space;
+}
+#ref {
+ border: solid orange;
+}
+textarea {
+ border: solid pink;
+}
+
+</style>
+
+<p>Copy the text from the blue box, and paste it into the pink one.
+The test passes if the pink and orange boxes are identical.
+
+<div id=test>no<wbr>space&#x200B;here</div>
+<textarea spellcheck="false"></textarea>
+<div id=ref>nospacehere</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-101.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-101.html
new file mode 100644
index 00000000000..40a66a4271a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-101.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:manual </title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="match" href="reference/word-boundary-101-ref.html">
+<meta name="assert" content="word-boundary-detection:manual turns off detection of word boundaries in south east asian scripts">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ width: 0;
+ word-boundary-detection: manual;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=wrap lang=th>
+ <div id=test>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref lang=th>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-102.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-102.html
new file mode 100644
index 00000000000..e3f9828f320
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-102.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:normal</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="mismatch" href="reference/word-boundary-102-ref.html">
+<meta name="assert" content="word-boundary-detection:normal turns on detection of word boundaries in south east asian scripts. Preferably in a smart, word-by-word basis, but if the UA doesn't support that, on a per character basis. Eitherway, lines should wrap">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ width: 0;
+ word-boundary-detection: normal;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div id=wrap lang=th>
+ <div id=test>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref lang=th>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-103.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-103.html
new file mode 100644
index 00000000000..114c6f1367c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-103.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:normal mistagged</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="mismatch" href="reference/word-boundary-103-ref.html">
+<meta name="assert" content="word-boundary-detection:normal turns on detection of word boundaries in south east asian scripts, even if the language tagging is incorrect">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ width: 0;
+ word-boundary-detection: normal;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div id=wrap lang=de>
+ <div id=test>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref lang=de>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-104.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-104.html
new file mode 100644
index 00000000000..a7a2f38fda1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-104.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:normal untagged</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="mismatch" href="reference/word-boundary-104-ref.html">
+<meta name="assert" content="word-boundary-detection:normal turns on detection of word boundaries in south east asian scripts, even if the language tagging is missing">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ width: 0;
+ word-boundary-detection: normal;
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div id=wrap>
+ <div id=test>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-105.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-105.html
new file mode 100644
index 00000000000..fa991221e52
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-105.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(th) mistagged</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="mismatch" href="reference/word-boundary-105-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(th), if supported, does the same as normal (insert soft wraps for south east asian) on content tagged as the wrong language.">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid orange;
+ margin: 5px;
+ width: 30ch;
+}
+@supports (word-boundary-detection: auto(th)) {
+ #test {
+ word-boundary-detection: manual;
+ }
+}
+#test {
+ width: 0;
+ word-boundary-detection: auto(th);
+}
+</style>
+
+<p>Test passes if the two boxes below are <em>different</em>.
+
+<div id=wrap lang=ja>
+ <div id=test>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref lang=ja>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-106.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-106.html
new file mode 100644
index 00000000000..a968af77672
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-106.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(th) untagged</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="match" href="reference/word-boundary-106-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(th), if supported, does the same as normal (insert soft wraps for south east asian) on content not language tagged.">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+@supports (word-boundary-detection: auto(th)) {
+ #test {
+ word-boundary-detection: manual;
+ }
+}
+#test {
+ width: 0;
+ word-boundary-detection: auto(th);
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=wrap>
+ <div id=test>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref>กรุงเทพคือสวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-107.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-107.html
new file mode 100644
index 00000000000..591c1afb8d4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-107.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(ja) mistagged</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="match" href="reference/word-boundary-107-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(ja), if supported, does not affect (i.e. same as normal) content tagged as something other than Japanese">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ width: 0;
+ word-boundary-detection: auto(ja);
+ word-break: keep-all;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=wrap lang=zh>
+ <div id=test>東京へ行きましょう。</div>
+</div>
+<div id=ref lang=zh>東京へ行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-108.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-108.html
new file mode 100644
index 00000000000..c23a6fe2b2b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-108.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(ja) untagged</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="match" href="reference/word-boundary-108-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(ja), if supported, does not affect (i.e. same as normal) on content not language tagged.">
+<style>
+#wrap, #ref {
+ font-size: 2em;
+ border: solid blue;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ width: 0;
+ word-boundary-detection: auto(ja);
+ word-break: keep-all;
+}
+</style>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=wrap>
+ <div id=test>東京へ行きましょう。</div>
+</div>
+<div id=ref>東京へ行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-109.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-109.html
new file mode 100644
index 00000000000..c5694cc153f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-109.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(ja) and line breaking</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="match" href="reference/word-boundary-109-a-ref.html">
+<link rel="match" href="reference/word-boundary-109-b-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(ja) inserts virtual word boundaries at reasonable points, creating soft wrapping opportunities">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+.wrap {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+ word-break: keep-all;
+}
+.wrap > div {
+ width: 0;
+}
+#test {
+ word-boundary-detection: auto(ja);
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 class=wrap>
+ <div lang=ja>東京へ<wbr>行きましょう。</div>
+</div>
+<div class=wrap>
+ <div id=test lang=ja>東京へ行きましょう。</div>
+</div>
+<div id=ref2 class=wrap>
+ <div lang=ja>東京<wbr>へ<wbr>行きましょう。</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-110.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-110.html
new file mode 100644
index 00000000000..bdfedf19e61
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-110.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(ja) and expansion</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-110-a-ref.html">
+<link rel="match" href="reference/word-boundary-110-b-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(ja) inserts virtual word boundaries at reasonable points, which can then be expanded into ideographic spaces">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 lang=ja>東京へ 行きましょう。</div>
+<div id=test lang=ja>東京へ行きましょう。</div>
+<div id=ref2 lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-111.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-111.html
new file mode 100644
index 00000000000..d2d3df27085
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-111.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(th) and line breaking</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="match" href="reference/word-boundary-111-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(th) inserts virtual word boundaries at reasonable points, creating soft wrapping opportunities">
+<style>
+.wrap {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+.wrap > div {
+ width: 0;
+}
+#test {
+ word-boundary-detection: auto(th);
+}
+#ref {
+ border-color: blue;
+}
+</style>
+
+<!--
+This test should pass even in UAs that don't support word-boundary-detection:auto(th)
+since allowing south-east-asian languages to wrap is the default behavior.
+-->
+
+<p>Test passes if the black box is identical to either the blue one.
+
+<div class=wrap>
+ <div id=test lang=th>กรุงเทพคือสวยงาม</div>
+</div>
+<div id=ref class=wrap>
+ <div lang=th>กรุงเทพ<wbr>คือ<wbr>สวยงาม</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-112.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-112.html
new file mode 100644
index 00000000000..73c2763d836
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-112.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(th) and expansion</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-112-ref.html">
+<meta name="assert" content="word-boundary-detection:auto(th) inserts virtual word boundaries at reasonable points, which can then be expanded into spaces">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(th);
+ word-boundary-expansion: space;
+}
+#ref {
+ border-color: blue;
+}
+</style>
+<!--
+
+This test should pass even in UAs that don't support word-boundary-detection:auto(th)
+since inserting virtual word boundaries is the default for south-east-asian languages.
+-->
+
+<p>Test passes if the black box is identical to the blue one.
+
+<div id=test lang=th>กรุงเทพคือสวยงาม</div>
+<div id=ref lang=th>กรุงเทพ คือ สวยงาม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-113.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-113.html
new file mode 100644
index 00000000000..f5e0cdf046d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-113.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(th) outermost placement</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-113-ref.html">
+<meta name="assert" content="If a word boundary is found at the same position as one or more inline box boundaries, the virtual word boundary must be inserted in the outermost element that participates in this inline box boundary.">
+<style>
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(th);
+ word-boundary-expansion: space;
+}
+#ref {
+ border-color: blue;
+}
+u { background: silver; }
+b { background: green; }
+em { background: gray; }
+</style>
+<!--
+
+This test should pass even in UAs that don't support word-boundary-detection:auto(th)
+since inserting virtual word boundaries is the default for south-east-asian languages.
+-->
+
+<p>Test passes if the black box is identical to the blue one.
+
+<div id=test lang=th>กรุงเทพ<b><u>คือ</u><em>สวยง</em></b>าม</div>
+<div id=ref lang=th>กรุงเทพ <b><u>คือ</u> <em>สวยง</em></b>าม</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-114.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-114.html
new file mode 100644
index 00000000000..b18e1e53caf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-114.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto(ja) and outermost placement</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-114-a-ref.html">
+<link rel="match" href="reference/word-boundary-114-b-ref.html">
+<meta name="assert" content="If a word boundary is found at the same position as one or more inline box boundaries, the virtual word boundary must be inserted in the outermost element that participates in this inline box boundary.">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+#ref1 {
+ border-color: blue;
+}
+#ref2 {
+ border-color: orange;
+}
+u { background: silver; }
+b { background: green; }
+em { background: gray; }
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the black box is identical to either the blue or orange one.
+
+<div id=ref1 lang=ja>東京<b><u>へ</u> <em>行きましょ</em></b>う。</div>
+<div id=test lang=ja>東京<b><u>へ</u><em>行きましょ</em></b>う。</div>
+<div id=ref2 lang=ja>東京 <b><u>へ</u> <em>行きましょ</em></b>う。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-115.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-115.html
new file mode 100644
index 00000000000..b1266c53dbd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-115.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-115-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary at the beginning or end of any box whose parent box has a used value of manual.">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: manual;
+}
+#test span {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京<span>へ</span>行きましょう。</div>
+<div id=ref lang=ja>東京へ行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-116.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-116.html
new file mode 100644
index 00000000000..4b152173b7c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-116.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-116-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary immediately adjacent to a word-separator character">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京 へ 行きましょう。</div>
+<div id=ref lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-117.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-117.html
new file mode 100644
index 00000000000..558b6a981f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-117.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-117-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary immediately adjacent to an other space separator.">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京 へ 行きましょう。</div>
+<div id=ref lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-118.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-118.html
new file mode 100644
index 00000000000..e20bc354105
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-118.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-117-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary immediately adjacent to ZERO WIDTH SPACE (U+200B) character.">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&#x200B;へ&#X200B;行きましょう。</div>
+<div id=ref lang=ja>東京 へ 行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-119.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-119.html
new file mode 100644
index 00000000000..fb3aaebc92a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-119.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-119-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and an adjacent typographic character unit from the [UAX14] GL line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&nbsp;へ&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京&nbsp;へ&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-120.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-120.html
new file mode 100644
index 00000000000..8f2bff5b229
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-120.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-120-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and an adjacent typographic character unit from the [UAX14] WJ line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&#x2060;へ&#x2060;行きましょう。</div>
+<div id=ref lang=ja>東京&#x2060;へ&#x2060;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-121.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-121.html
new file mode 100644
index 00000000000..667e1e068e2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-121.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-121-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and an adjacent typographic character unit from the [UAX14] ZWJ line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&#x200D;へ&#x200D;行きましょう。</div>
+<div id=ref lang=ja>東京&#x200D;へ&#x200D;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-122.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-122.html
new file mode 100644
index 00000000000..a9d3a999307
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-122.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-122-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and a subsequent typographic character unit from the [UAX14] CL line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京}&nbsp;へ}&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京}&nbsp;へ}&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-123.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-123.html
new file mode 100644
index 00000000000..bcf1f0245e8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-123.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-123-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and a subsequent typographic character unit from the [UAX14] CP line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京)&nbsp;へ)&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京)&nbsp;へ)&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-124.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-124.html
new file mode 100644
index 00000000000..a4a4902ba29
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-124.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-124-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and a subsequent typographic character unit from the [UAX14] IS line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京.&nbsp;へ.&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京.&nbsp;へ.&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-125.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-125.html
new file mode 100644
index 00000000000..a04ec4f075c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-125.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-125-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and a subsequent typographic character unit from the [UAX14] EX line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京!&nbsp;へ!&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京!&nbsp;へ!&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-126.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-126.html
new file mode 100644
index 00000000000..e4a5c6b0fb4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-126.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-126-ref.html">
+<meta name="assert" content="The UA must not insert a virtual word boundary between a typographic letter unit and a preceeding typographic character unit from the [UAX14] OP line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&nbsp;(へ&nbsp;(行きましょう。</div>
+<div id=ref lang=ja>東京&nbsp;(へ&nbsp;(行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-127.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-127.html
new file mode 100644
index 00000000000..21f00e664b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-127.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-127-ref.html">
+<meta name=flags content=should>
+<meta name="assert" content="The UA should not insert a virtual word boundary between a typographic letter unit and a subsequent typographic character unit from the [UAX14] PO line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+#test {
+ word-boundary-detection: auto(ja);
+ word-boundary-expansion: ideographic-space;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京%&nbsp;へ%&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京%&nbsp;へ%&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-128.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-128.html
new file mode 100644
index 00000000000..cb2d1ee4e78
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-128.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-128-ref.html">
+<meta name=flags content=should>
+<meta name="assert" content="The UA should not insert a virtual word boundary between a typographic letter unit and a subsequent typographic character unit from the [UAX14] NS line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京‼&nbsp;へ‼&nbsp;行きましょう。</div>
+<div id=ref lang=ja>東京‼&nbsp;へ‼&nbsp;行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-129.html b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-129.html
new file mode 100644
index 00000000000..6e137177029
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-boundary/word-boundary-129.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 4 Test: word-boundary-detection:auto() forbidden</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-detection">
+<link rel="help" href="https://drafts.csswg.org/css-text-4/#word-boundary-expansion">
+<link rel="match" href="reference/word-boundary-129-ref.html">
+<meta name=flags content=should>
+<meta name="assert" content="The UA should not insert a virtual word boundary between a typographic letter unit and a preceeding typographic character unit from the [UAX14] PR line breaking class">
+<style>
+@supports (word-boundary-detection:auto(ja)) {
+ .warn { display:none; }
+}
+div {
+ font-size: 2em;
+ border: solid black;
+ margin: 5px;
+ width: 30ch;
+}
+</style>
+
+<p class=warn><strong>This test is not relevant, because this UA does not support <code>word-boundary-detection:auto(ja)</code>.</strong>
+
+<p>Test passes if the two boxes below are identical.
+
+<div id=test lang=ja>東京&nbsp;$へ&nbsp;$行きましょう。</div>
+<div id=ref lang=ja>東京&nbsp;$へ&nbsp;$行きましょう。</div>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/external-styles/support/svg-external-styles.css b/tests/wpt/web-platform-tests/css/css-transforms/external-styles/support/svg-external-styles.css
index 22978f89b04..ad60fd81174 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/external-styles/support/svg-external-styles.css
+++ b/tests/wpt/web-platform-tests/css/css-transforms/external-styles/support/svg-external-styles.css
@@ -2,10 +2,6 @@
transform: rotate(90deg);
}
-.rotate-3-args {
- transform: rotate(90deg,20px,20px);
-}
-
.translateY {
transform: translateY(-100px);
}
@@ -13,7 +9,3 @@
.invalid {
transform: scale(invalid);
}
-
-.rotate-3-args {
- transform: rotate(90deg,20px,20px);
-} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/external-styles/svg-external-styles-012.html b/tests/wpt/web-platform-tests/css/css-transforms/external-styles/svg-external-styles-012.html
deleted file mode 100644
index 575693dc58b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transforms/external-styles/svg-external-styles-012.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>CSS Transforms Test: External style of rotate with three arguments on SVG element with presentation attribute style on the same element</title>
- <link rel="author" title="David Alcala" href="mailto:dalcala@adobe.com">
- <link rel="help" href="http://www.w3.org/TR/css-transforms-1/#svg-transform">
- <link rel="help" href="http://www.w3.org/TR/css-transforms-1/#transform-attribute-specificity">
- <link rel="help" href="http://www.w3.org/TR/css-transforms-1/#svg-transform-functions">
- <link rel="match" href="reference/svg-external-styles-ref.html">
- <link rel="stylesheet" href="support/svg-external-styles.css">
- <meta name="flags" content="svg">
- <meta name="assert" content="Rotate with three arguments external style on SVG elements should override presentation attribute styles on the same element. The rect in the test should be rotated by 90 degrees clockwise after the transform origin is translated by 20 pixels in both the vertical and horizontal directions and not scaled.">
- <style type="text/css">
- svg {
- height: 300px;
- width: 300px;
- }
- </style>
-</head>
-<body>
- <p>The test passes if there is a vertical green stripe to the left of a yellow vertical stripe. You should see no red.</p>
- <svg>
- <!-- Fill with Gradient to avoid false positive. -->
- <defs>
- <linearGradient id="grad" x2="0%" y2="100%">
- <stop offset="50%" stop-color="yellow"/>
- <stop offset="50%" stop-color="green"/>
- </linearGradient>
- </defs>
- <rect x="1" y="1" width="98" height="98" fill="red"/>
- <rect class="rotate-3-args" y="-60" width="100" height="100" fill="url(#grad)" transform="scale(0.5)"/>
- </svg>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html
index bbd443a717a..9055e7dfd5f 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html
@@ -14,14 +14,28 @@
test_valid_value("scale", "none");
test_valid_value("scale", "1");
+test_valid_value("scale", "1%", "0.01");
test_valid_value("scale", "100");
+test_valid_value("scale", "100%", "1");
test_valid_value("scale", "100 100", "100");
+test_valid_value("scale", "100% 100%", "1");
test_valid_value("scale", "100 100 1", "100");
+test_valid_value("scale", "100% 100% 1", "1");
+
+test_valid_value("scale", "-100");
+test_valid_value("scale", "-100%", "-1");
+test_valid_value("scale", "-100 -100", "-100");
+test_valid_value("scale", "-100% -100%", "-1");
+test_valid_value("scale", "-100 -100 1", "-100");
+test_valid_value("scale", "-100% -100% 1", "-1");
test_valid_value("scale", "100 200");
+test_valid_value("scale", "100% 200%", "1 2");
test_valid_value("scale", "100 200 1", "100 200");
+test_valid_value("scale", "100% 200% 1", "1 2");
test_valid_value("scale", "100 200 300");
+
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-invalid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-invalid.html
index 25aeeae4e5d..8985720622c 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-invalid.html
@@ -23,10 +23,13 @@ test_invalid_value("transform", "translateX(-4px, 5px)");
test_invalid_value("transform", "translateY(4%, 5%)");
test_invalid_value("transform", "scale(6, 7, 8)");
+test_invalid_value("transform", "scale(6%, 7%, 8%)");
test_invalid_value("transform", "scaleX(1, 2)");
+test_invalid_value("transform", "scaleX(1%, 2%)");
test_invalid_value("transform", "scaleY(3, 4)");
+test_invalid_value("transform", "scaleY(3%, 4%)");
test_invalid_value("transform", "rotate(0, 0)");
test_invalid_value("transform", "rotate(0, 0, 0)");
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html
index 8237a9a4a68..ce32e2b44e6 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html
@@ -26,11 +26,27 @@ test_valid_value("transform", "translateY(5%)");
test_valid_value("transform", "scale(2)");
test_valid_value("transform", "scale(3, 4)");
+
+test_valid_value("transform", "scale(-2)");
test_valid_value("transform", "scale(-5, -6)");
+test_valid_value("transform", "scale(250%)", "scale(2.5)");
+test_valid_value("transform", "scale(325%, 475%)", "scale(3.25, 4.75)");
+
+test_valid_value("transform", "scale(-250%)", "scale(-2.5)");
+test_valid_value("transform", "scale(-500%, -620%)", "scale(-5, -6.2)");
+
test_valid_value("transform", "scaleX(7)");
+test_valid_value("transform", "scaleX(720%)", "scaleX(7.2)");
test_valid_value("transform", "scaleY(-8)");
+test_valid_value("transform", "scaleY(-85%)", "scaleY(-0.85)");
+
+test_valid_value("transform", "scale3d(0.5, 2.5, 3)");
+test_valid_value("transform", "scale3d(50%, 250%, 300%)", "scale3d(0.5, 2.5, 3)");
+
+test_valid_value("transform", "scale3d(-0.5, 2.5, -3)");
+test_valid_value("transform", "scale3d(-50%, 250%, -300%)", "scale3d(-0.5, 2.5, -3)");
test_valid_value("transform", "rotate(0)", "rotate(0deg)");
test_valid_value("transform", "rotate(90deg)");
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-001.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-001.html
index 79d32b5c045..09874988628 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-001.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-001.html
@@ -6,15 +6,15 @@
<link rel="author" title="Aryeh Gregor" href="mailto:ayg@aryeh.name">
<link rel="help" href="http://www.w3.org/TR/css-transforms-1/#two-d-transform-functions">
<link rel="help" href="http://www.w3.org/TR/css-transforms-1/#funcdef-scale">
- <meta name="assert" content='This tests that scale(50%, 50%) does nothing,
- because scale() is defined to take numbers and not percentages.'>
+ <meta name="assert" content='This tests that scale(50%, 75%) is equivalent to scale(0.5, 0.75),
+ because scale() is defined to accept both numbers and percentages.'>
<link rel="match" href="transform-scale-percent-ref.html">
<style>
div {
background: green;
width: 100px;
height: 100px;
- transform: scale(50%, 50%);
+ transform: scale(50%, 75%);
}
</style>
</head>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-ref.html
index be0bac656b6..f6bd0141353 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-scale-percent-ref.html
@@ -9,6 +9,7 @@
background: green;
width: 100px;
height: 100px;
+ transform: scale(0.5, 0.75)
}
</style>
</head>
diff --git a/tests/wpt/web-platform-tests/css/css-values/animations/calc-interpolation.html b/tests/wpt/web-platform-tests/css/css-values/animations/calc-interpolation.html
new file mode 100644
index 00000000000..de76386e0da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/animations/calc-interpolation.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>calc interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-values-3/#calc-notation">
+<meta name="assert" content="calc supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.container {
+ position: relative;
+ width: 50px;
+ height: 50px;
+ border: black solid 2px;
+ display: inline-block;
+ margin-left: 10px;
+ margin-right: 10px;
+ background-color: white;
+}
+.target {
+ position: absolute;
+ width: 10px;
+ height: 50px;
+ background-color: black;
+}
+.expected {
+ background-color: green;
+}
+</style>
+
+<body>
+<template id="target-template">
+ <div class="container">
+ <div class="target"></div>
+ </div>
+</template>
+<script>
+test_interpolation({
+ property: 'left',
+ from: 'calc(50% - 25px)',
+ to: 'calc(100% - 10px)'
+}, [
+ {at: -0.25, expect: '-10px'},
+ {at: 0, expect: '0px'},
+ {at: 0.25, expect: '10px'},
+ {at: 0.5, expect: '20px'},
+ {at: 0.75, expect: '30px'},
+ {at: 1, expect: '40px'},
+ {at: 1.25, expect: '50px'}
+]);
+
+test_interpolation({
+ property: 'text-indent',
+ from: 'calc(50% - 25px)',
+ to: 'calc(100% - 10px)'
+}, [
+ {at: -0.25, expect: 'calc(((50% - 25px) * 1.25) + ((100% - 10px) * -0.25))'},
+ {at: 0, expect: 'calc(50% - 25px)'},
+ {at: 0.25, expect: 'calc(((50% - 25px) * 0.75) + ((100% - 10px) * 0.25))'},
+ {at: 0.5, expect: 'calc(((50% - 25px) * 0.5) + ((100% - 10px) * 0.5))'},
+ {at: 0.75, expect: 'calc(((50% - 25px) * 0.25) + ((100% - 10px) * 0.75))'},
+ {at: 1, expect: 'calc(100% - 10px)'},
+ {at: 1.25, expect: 'calc(((50% - 25px) * -0.25) + ((100% - 10px) * 1.25))'}
+]);
+
+test_interpolation({
+ property: 'text-indent',
+ from: '0em',
+ to: '100px'
+}, [
+ {at: -0.25, expect: '-25px'},
+ {at: 0, expect: '0em'},
+ {at: 0.25, expect: '25px'},
+ {at: 0.5, expect: '50px'},
+ {at: 0.75, expect: '75px'},
+ {at: 1, expect: '100px'},
+ {at: 1.25, expect: '125px'}
+]);
+
+test_interpolation({
+ property: 'text-indent',
+ from: '0%',
+ to: '100px'
+}, [
+ {at: -0.25, expect: 'calc(0% + -25px)'},
+ {at: 0, expect: '0%'},
+ {at: 0.25, expect: 'calc(0% + 25px)'},
+ {at: 0.5, expect: 'calc(0% + 50px)'},
+ {at: 0.75, expect: 'calc(0% + 75px)'},
+ {at: 1, expect: 'calc(0% + 100px)'},
+ {at: 1.25, expect: 'calc(0% + 125px)'}
+]);
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
index 3c9754c6941..d1cb7cfbeb0 100644
--- a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
@@ -18,6 +18,7 @@
var cssAnimationsInterpolation = {
name: 'CSS Animations',
+ isSupported: function() {return true;},
supportsProperty: function() {return true;},
supportsValue: function() {return true;},
setup: function() {},
@@ -43,6 +44,7 @@
var cssTransitionsInterpolation = {
name: 'CSS Transitions',
+ isSupported: function() {return true;},
supportsProperty: function() {return true;},
supportsValue: function() {return true;},
setup: function(property, from, target) {
@@ -64,6 +66,7 @@
var cssTransitionAllInterpolation = {
name: 'CSS Transitions with transition: all',
+ isSupported: function() {return true;},
// The 'all' value doesn't cover custom properties.
supportsProperty: function(property) {return property.indexOf('--') !== 0;},
supportsValue: function() {return true;},
@@ -86,6 +89,7 @@
var webAnimationsInterpolation = {
name: 'Web Animations',
+ isSupported: function() {return 'animate' in Element.prototype;},
supportsProperty: function(property) {return true;},
supportsValue: function(value) {return value !== '';},
setup: function() {},
@@ -96,6 +100,10 @@
this.interpolateComposite(property, from, 'replace', to, 'replace', at, target);
},
interpolateComposite: function(property, from, fromComposite, to, toComposite, at, target) {
+ // This case turns into a test error later on.
+ if (!this.isSupported())
+ return;
+
// Convert standard properties to camelCase.
if (!property.startsWith('--')) {
for (var i = property.length - 2; i > 0; --i) {
@@ -272,6 +280,8 @@
target.measure = function() {
var expectedValue = getComputedStyle(expectedTargetContainer.target).getPropertyValue(property);
test(function() {
+ assert_true(interpolationMethod.isSupported(), `${interpolationMethod.name} should be supported`);
+
if (from && from !== neutralKeyframe) {
assert_true(CSS.supports(property, from), '\'from\' value should be supported');
}
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/reftests.md b/tests/wpt/web-platform-tests/docs/writing-tests/reftests.md
index 845d6f8dc4f..6dbe3a1aa9d 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/reftests.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/reftests.md
@@ -96,16 +96,31 @@ leaf nodes.)
## Controlling When Comparison Occurs
-By default reftest screenshots are taken after the `load` event has
-fired, and web fonts (if any) are loaded. In some cases it is
-necessary to delay the screenshot later than this, for example because
-some DOM manipulation is required to set up the desired test
-conditions. To enable this, the test may have a `class="reftest-wait"`
-attribute specified on the root element. This will cause the
-screenshot to be delayed until the `load` event has fired and the
-`reftest-wait` class has been removed from the root element. Note that
-in neither case is exact timing of the screenshot guaranteed: it is
-only guaranteed to be after those events.
+By default, reftest screenshots are taken after the following
+conditions are met:
+
+* The `load` event has fired
+* Web fonts (if any) are loaded
+* Pending paints have completed
+
+In some cases it is necessary to delay the screenshot later than this,
+for example because some DOM manipulation is required to set up the
+desired test conditions. To enable this, the test may have a
+`class="reftest-wait"` attribute specified on the root element. In
+this case the harness will run the following sequence of steps:
+
+* Wait for the `load` event to fire and fonts to load.
+* Wait for pending paints to complete.
+* Fire an event named `TestRendered` at the root element, with the
+ `bubbles` attribute set to true.
+* Wait for the `reftest-wait` class to be removed from the root
+ element.
+* Wait for pending paints to complete.
+* Screenshot the viewport.
+
+The `TestRendered` event provides a hook for tests to make
+modifications to the test document that are not batched into the
+initial layout/paint.
## Fuzzy Matching
diff --git a/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html
new file mode 100644
index 00000000000..d572dcb0465
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<body>
+<script>
+// This document will contain an iframe which will either host echo-policy.py,
+// or will host another copy of this document, with the nesting level reduced
+// by one. This way, an arbitrary nesting depth can be achieved, with the
+// final inner-most frame reporting back the advertised required policy.
+
+// The 'id' URL parameter will be passed to the nested document.
+// The 'level' URL paramater will be reduced by 1 and passed to the nested
+// document if it was at least 1. (If it was 0, then echo-policy.py will be
+// nested instead, and the level parameter will not be passed.)
+
+// This document is served with a Document Policy header that should satisfy
+// any requests that include a required policy for the
+// 'unoptimized-lossless-images' feature.
+const params = new URLSearchParams(window.location.search);
+const id = params.get('id');
+const level = params.get('level');
+
+const iframe = document.createElement('iframe');
+var hostname;
+if (level >= 1) {
+ params.set('level',level-1);
+ hostname = document.location.pathname + "?" + params.toString();
+} else {
+ params.delete('level');
+ hostname = "/document-policy/echo-policy.py?" + params.toString();
+}
+iframe.src = hostname;
+document.body.appendChild(iframe);
+</script>
diff --git a/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers
new file mode 100644
index 00000000000..fe839ef5bb6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers
@@ -0,0 +1 @@
+Document-Policy: unoptimized-lossless-images;bpp=0.0
diff --git a/tests/wpt/web-platform-tests/document-policy/echo-policy.py b/tests/wpt/web-platform-tests/document-policy/echo-policy.py
new file mode 100644
index 00000000000..52a2bf97124
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/echo-policy.py
@@ -0,0 +1,28 @@
+# This will echo the 'Sec-Required-Document-Policy' request header in the body
+# of the response, as well as in the 'Document-Policy' response header (to
+# ensure the response is loaded by a user agent which is implementing document
+# policy.)
+import json
+
+def main(request, response):
+ msg = {}
+ headers = [('Content-Type', 'text/html')]
+
+ srdp = request.headers.get('Sec-Required-Document-Policy')
+ if srdp:
+ msg['requiredPolicy'] = srdp
+ headers.append(('Document-Policy', srdp))
+
+ frameId = request.GET.first('id',None)
+ if frameId:
+ msg['id'] = frameId
+
+ content = """<!DOCTYPE html>
+<script>
+top.postMessage(%s, "*");
+</script>
+%s
+""" % (json.dumps(msg), srdp)
+
+ return (200, 'OK'), headers, content
+
diff --git a/tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html b/tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html
new file mode 100644
index 00000000000..d6bf3e9a6d4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Test advertised required document policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script> </head>
+ <body>
+ <h1>Test advertised required document policy</h1>
+<script>
+// The top-level document has a document policy, but not a required document
+// policy. A request for a document in a frame should not include a
+// `Sec-Required-Document-Policy` header, unless that frame requires it
+// explicitly through the `policy` attribute.
+
+callbacks = {};
+
+window.addEventListener('message', ev => {
+ var id = ev.data.id;
+ if (id && callbacks[id]) {
+ callbacks[id](ev.data.requiredPolicy || null);
+ }
+});
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=1";
+ callbacks["1"] = t.step_func_done(result => {
+ assert_equals(result, null);
+ });
+ document.body.appendChild(iframe);
+}, "Top-level document's policy should not affect child frame requests");
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=2";
+ iframe.policy = "no-font-display-late-swap";
+ callbacks["2"] = t.step_func_done(result => {
+ assert_equals(result, "no-font-display-late-swap");
+ });
+ document.body.appendChild(iframe);
+}, "Child frame can have a required policy independent of the parent document.");
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=3";
+ iframe.policy = "unoptimized-lossless-images;bpp=4";
+ callbacks["3"] = t.step_func_done(result => {
+ assert_equals(result, "unoptimized-lossless-images;bpp=4");
+ });
+ document.body.appendChild(iframe);
+}, "Child frame can have a required policy which is less strict than the parent document's policy.");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html.headers b/tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html.headers
new file mode 100644
index 00000000000..d321c265d15
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/required-policy/document-policy.html.headers
@@ -0,0 +1 @@
+Document-Policy: unoptimized-lossless-images;bpp=1.1
diff --git a/tests/wpt/web-platform-tests/document-policy/required-policy/no-document-policy.html b/tests/wpt/web-platform-tests/document-policy/required-policy/no-document-policy.html
new file mode 100644
index 00000000000..9af2e51c2ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/required-policy/no-document-policy.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Test advertised required document policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script> </head>
+ <body>
+ <h1>Test advertised required document policy</h1>
+<script>
+// The top-level document does not have any document-policy-related headers.
+// A request for a document in a frame should not include a
+// `Sec-Required-Document-Policy` header, unless that frame requires it
+// explicitly through the `policy` attribute.
+
+callbacks = {};
+
+window.addEventListener('message', ev => {
+ var id = ev.data.id;
+ if (id && callbacks[id]) {
+ callbacks[id](ev.data.requiredPolicy || null);
+ }
+});
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=1";
+ callbacks["1"] = t.step_func_done(result => {
+ assert_equals(result, null);
+ });
+ document.body.appendChild(iframe);
+}, "Child frame should have no required policy by default.");
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=2";
+ iframe.policy = "no-font-display-late-swap";
+ callbacks["2"] = t.step_func_done(result => {
+ assert_equals(result, "no-font-display-late-swap");
+ });
+ document.body.appendChild(iframe);
+}, "Child frame can have an explicit required policy.");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy-nested.html b/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy-nested.html
new file mode 100644
index 00000000000..39e2a92f773
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy-nested.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Test advertised required document policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script> </head>
+ <body>
+ <h1>Test advertised required document policy</h1>
+<script>
+// The top-level document has no required document policy. Its child frames may,
+// though, and those policies should be set for any subframes.
+
+callbacks = {};
+
+window.addEventListener('message', ev => {
+ var id = ev.data.id;
+ if (id && callbacks[id]) {
+ callbacks[id](ev.data.requiredPolicy || null);
+ }
+});
+
+// Frame tree should be:
+// Top:
+// <iframe>
+// <iframe>
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy-nested.html?id=1";
+ callbacks["1"] = t.step_func_done(result => {
+ assert_equals(result, null);
+ });
+ document.body.appendChild(iframe);
+}, "test nested required document policy");
+
+// Frame tree should be:
+// Top:
+// <iframe policy="unoptimized-lossless-images;bpp=1.1">
+// <iframe>
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy-nested.html?id=2";
+ iframe.policy = "unoptimized-lossless-images;bpp=1.1";
+ callbacks["2"] = t.step_func_done(result => {
+ assert_equals(result, "unoptimized-lossless-images;bpp=1.1");
+ });
+ document.body.appendChild(iframe);
+}, "test nested required document policy when set by nested frame");
+
+// Frame tree should be:
+// Top:
+// <iframe policy="unoptimized-lossless-images;bpp=1.1">
+// <iframe>
+// <iframe>
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy-nested.html?id=3&level=1";
+ iframe.policy = "unoptimized-lossless-images;bpp=1.1";
+ callbacks["3"] = t.step_func_done(result => {
+ assert_equals(result, "unoptimized-lossless-images;bpp=1.1");
+ });
+ document.body.appendChild(iframe);
+}, "test nested required document policy when set by intermediate nested frame");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html b/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html
new file mode 100644
index 00000000000..12cebdd292a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Test advertised required document policy</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script> </head>
+ <body>
+ <h1>Test advertised required document policy</h1>
+<script>
+// The top-level document has a required document policy. Any requests for
+// documents in child frames must be sent with a required policy header
+// indicating a required policy at least as strict. (In this case, "at least as
+// strict" means that the 'bpp' parameter must be less than or equal to the
+// parent document's required value.)
+
+callbacks = {};
+
+window.addEventListener('message', ev => {
+ var id = ev.data.id;
+ if (id && callbacks[id]) {
+ callbacks[id](ev.data.requiredPolicy || null);
+ }
+});
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=1";
+ callbacks["1"] = t.step_func_done(result => {
+ assert_equals(result, "unoptimized-lossless-images;bpp=1.1");
+ });
+ document.body.appendChild(iframe);
+}, "Child frame with no explicit policy should have the same required policy as its parent.");
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=2";
+ iframe.policy = "unoptimized-lossless-images;bpp=4";
+ callbacks["2"] = t.step_func_done(result => {
+ assert_equals(result, "unoptimized-lossless-images;bpp=1.1");
+ });
+ document.body.appendChild(iframe);
+}, "Child frame with a less strict required policy should have the stricter value from the parent's policy applied.");
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=3";
+ iframe.policy = "unoptimized-lossless-images;bpp=1.0";
+ callbacks["3"] = t.step_func_done(result => {
+ assert_equals(result, "unoptimized-lossless-images;bpp=1.0");
+ });
+ document.body.appendChild(iframe);
+}, "Child frame may have a stricter policy than the parent.");
+
+async_test(t => {
+ var iframe = document.createElement('iframe');
+ iframe.src = "/document-policy/echo-policy.py?id=4";
+ iframe.policy = "no-font-display-late-swap";
+ callbacks["4"] = t.step_func_done(result => {
+ assert_equals(result, "no-font-display-late-swap, unoptimized-lossless-images;bpp=1.1");
+ });
+ document.body.appendChild(iframe);
+}, "Any unrelated policy directives should combine with the parent's required policy.");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html.headers b/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html.headers
new file mode 100644
index 00000000000..066c0f8339e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/document-policy/required-policy/required-document-policy.html.headers
@@ -0,0 +1 @@
+Required-Document-Policy: unoptimized-lossless-images;bpp=1.1
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-redispatch.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-redispatch.html
index 4027587bff4..dc180c61567 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-redispatch.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-redispatch.html
@@ -3,26 +3,128 @@
<title>EventTarget#dispatchEvent(): redispatching a native event</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>
+<button>click me!</button>
<div id=log></div>
<script>
-async_test(function() {
- var event;
- document.addEventListener("DOMContentLoaded", this.step_func(function(e) {
- assert_true(e.isTrusted, "Should be trusted when first handled");
- event = e;
- }), true);
-
- window.onload = this.step_func_done(function() {
- var received = 0;
- var target = document.createElement("span");
- target.addEventListener("DOMContentLoaded", this.step_func(function(e) {
- assert_false(e.isTrusted, "Should not be trusted during redispatching");
- ++received;
- }), true);
- assert_true(event.isTrusted, "Should be trusted before redispatching");
- target.dispatchEvent(event);
- assert_false(event.isTrusted, "Should not be trusted after redispatching");
- assert_equals(received, 1);
- });
+var test_contentLoaded_redispatching = async_test("Redispatching DOMContentLoaded event after being dispatched");
+var test_mouseup_redispatching = async_test("Redispatching mouseup event whose default action dispatches a click event");
+var test_redispatching_of_dispatching_event = async_test("Redispatching event which is being dispatched");
+
+var buttonElement = document.querySelector("button");
+var contentLoadedEvent;
+
+var waitForLoad = new Promise(resolve => {
+ window.addEventListener("load", () => { requestAnimationFrame(resolve); }, {capture: false, once: true});
});
+
+document.addEventListener("DOMContentLoaded", event => {
+ contentLoadedEvent = event;
+ test_redispatching_of_dispatching_event.step(() => {
+ assert_throws("InvalidStateError", () => {
+ document.dispatchEvent(contentLoadedEvent);
+ }, "Trusted DOMContentLoaded event");
+ });
+}, {capture: true, once: true});
+
+window.addEventListener("load", loadEvent => {
+ let untrustedContentLoadedEvent;
+ buttonElement.addEventListener("DOMContentLoaded", event => {
+ untrustedContentLoadedEvent = event;
+ test_contentLoaded_redispatching.step(() => {
+ assert_false(untrustedContentLoadedEvent.isTrusted, "Redispatched DOMContentLoaded event shouldn't be trusted");
+ });
+ test_redispatching_of_dispatching_event.step(() => {
+ assert_throws("InvalidStateError", () => {
+ document.dispatchEvent(untrustedContentLoadedEvent);
+ }, "Untrusted DOMContentLoaded event");
+ });
+ });
+
+ test_contentLoaded_redispatching.step(() => {
+ assert_true(contentLoadedEvent.isTrusted, "Received DOMContentLoaded event should be trusted before redispatching");
+ buttonElement.dispatchEvent(contentLoadedEvent);
+ assert_false(contentLoadedEvent.isTrusted, "Received DOMContentLoaded event shouldn't be trusted after redispatching");
+ assert_true(untrustedContentLoadedEvent !== undefined, "Untrusted DOMContentLoaded event should've been fired");
+ test_contentLoaded_redispatching.done();
+ });
+}, {capture: true, once: true});
+
+async function testMouseUpAndClickEvent() {
+ let mouseupEvent;
+ buttonElement.addEventListener("mouseup", event => {
+ mouseupEvent = event;
+ test_mouseup_redispatching.step(() => {
+ assert_true(mouseupEvent.isTrusted, "First mouseup event should be trusted");
+ });
+ test_redispatching_of_dispatching_event.step(() => {
+ assert_throws("InvalidStateError", () => {
+ buttonElement.dispatchEvent(mouseupEvent);
+ }, "Trusted mouseup event");
+ });
+ }, {once: true});
+
+ let clickEvent;
+ buttonElement.addEventListener("click", event => {
+ clickEvent = event;
+ test_mouseup_redispatching.step(() => {
+ assert_true(clickEvent.isTrusted, "First click event should be trusted");
+ });
+ test_redispatching_of_dispatching_event.step(() => {
+ assert_throws("InvalidStateError", function() {
+ buttonElement.dispatchEvent(event);
+ }, "Trusted click event");
+ });
+ buttonElement.addEventListener("mouseup", event => {
+ test_mouseup_redispatching.step(() => {
+ assert_false(event.isTrusted, "Redispatched mouseup event shouldn't be trusted");
+ });
+ test_redispatching_of_dispatching_event.step(() => {
+ assert_throws("InvalidStateError", function() {
+ buttonElement.dispatchEvent(event);
+ }, "Untrusted mouseup event");
+ });
+ }, {once: true});
+ function onClick() {
+ test_mouseup_redispatching.step(() => {
+ assert_true(false, "click event shouldn't be fired for dispatched mouseup event");
+ });
+ }
+ test_mouseup_redispatching.step(() => {
+ assert_true(mouseupEvent.isTrusted, "Received mouseup event should be trusted before redispatching from click event listener");
+ buttonElement.addEventListener("click", onClick);
+ buttonElement.dispatchEvent(mouseupEvent);
+ buttonElement.removeEventListener("click", onClick);
+ assert_false(mouseupEvent.isTrusted, "Received mouseup event shouldn't be trusted after redispatching");
+ assert_true(clickEvent.isTrusted, "First click event should still be trusted even after redispatching mouseup event");
+ });
+ }, {once: true});
+
+ await waitForLoad;
+ let bounds = buttonElement.getBoundingClientRect();
+ test(() => { assert_true(true); }, `Synthesizing click on button... (button width / height: ${bounds.width} / ${bounds.height})`);
+ new test_driver.Actions()
+ .pointerMove(Math.floor(bounds.width / 5),
+ Math.floor(bounds.height / 2),
+ {origin: buttonElement})
+ .pointerDown({button: test_driver.Actions.prototype.ButtonType.LEFT})
+ .pointerUp({button: test_driver.Actions.prototype.ButtonType.LEFT})
+ .send()
+ .then(() => {
+ test_mouseup_redispatching.step(() => {
+ assert_true(clickEvent !== undefined, "mouseup and click events should've been fired");
+ });
+ test_mouseup_redispatching.done();
+ test_redispatching_of_dispatching_event.done();
+ }, (reason) => {
+ test_mouseup_redispatching.step(() => {
+ assert_true(false, `Failed to send mouse click due to ${reason}`);
+ });
+ test_mouseup_redispatching.done();
+ test_redispatching_of_dispatching_event.done();
+ });
+}
+testMouseUpAndClickEvent();
</script>
diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js
index 5d4de7ebaad..ade38e9ac7b 100644
--- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js
@@ -18,7 +18,7 @@ function corsPreflightRedirect(desc, redirectUrl, redirectLocation, redirectStat
urlParameters += "&allow_headers=x-force-preflight";
promise_test(function(test) {
- fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) {
+ return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) {
assert_equals(resp.status, 200, "Clean stash response's status is 200");
return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
});
diff --git a/tests/wpt/web-platform-tests/fetch/api/idlharness.any.js b/tests/wpt/web-platform-tests/fetch/api/idlharness.any.js
index ccd4d2c0b46..7b3c694e16a 100644
--- a/tests/wpt/web-platform-tests/fetch/api/idlharness.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/idlharness.any.js
@@ -1,6 +1,7 @@
// META: global=window,worker
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
+// META: timeout=long
idl_test(
['fetch'],
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html
index 8912548ab1c..5e35472fcfd 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html
@@ -8,16 +8,27 @@
<body></body>
<script>
async_test(t => {
- window.applicationCache.oncached = window.applicationCache.onnoupdate = window.applicationCache.onerror = t.step_func(e => {
- fetch("/fetch/metadata/resources/record-header.py?retrieve=true&file=appcache-manifest{{$id}}")
- .then(t.step_func(response => response.text()))
- .then(t.step_func_done(text => assert_header_equals(text, {
- "site": "same-origin",
- "user": "",
- "mode": "no-cors",
- "dest": ""
- })))
- .catch(t.unreached_func("Fetching and verifying the results should succeed."));
-});
-}, "Appcache!");
+ const expected = {"site": "same-origin", "user": "", "mode": "no-cors", "dest": "empty"};
+ window.applicationCache.oncached = window.applicationCache.onnoupdate = window.applicationCache.onerror = t.step_func(async e => {
+ try {
+ let response = await fetch(
+ "/fetch/metadata/resources/record-header.py?retrieve=true&file=appcache-manifest{{$id}}");
+ let text = await response.text();
+ assert_header_equals(text, expected, "Appcache manifest");
+
+ response = await fetch(
+ "/fetch/metadata/resources/record-header.py?retrieve=true&file=appcache-resource{{$id}}");
+ text = await response.text();
+ assert_header_equals(text, expected, "Appcache resource");
+ } catch (e) {
+ t.step_func(e => {
+ if (e instanceof AssertionError) {
+ throw e;
+ }
+ assert_unreached(`Unhandled rejection with value: ${e}`);
+ });
+ }
+ t.done();
+ });
+ }, "Appcache!");
</script>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/navigation.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/navigation.tentative.https.sub.html
index 32c9cf77f90..32c9cf77f90 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/navigation.https.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/navigation.tentative.https.sub.html
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html
new file mode 100644
index 00000000000..e2715a65854
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/fetch/metadata/resources/helper.js></script>
+<script src=/fetch/metadata/resources/redirectTestHelper.sub.js></script>
+<body>
+<script>
+ "use strict";
+ let nonce = "{{uuid()}}";
+ let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": ""};
+
+ testPrefetch(nonce, "Https downgrade-upgrade", MultipleRedirectTo, expected);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html
new file mode 100644
index 00000000000..45fd4efaace
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/fetch/metadata/resources/helper.js></script>
+<script src=/fetch/metadata/resources/redirectTestHelper.sub.js></script>
+<body>
+<script>
+ "use strict";
+ let nonce = "{{uuid()}}";
+ let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": ""};
+
+ testPrefetch(nonce, "Http upgrade", upgradeRedirectTo, expected);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html
new file mode 100644
index 00000000000..a446cbad840
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/fetch/metadata/resources/helper.js></script>
+<script src=/fetch/metadata/resources/redirectTestHelper.sub.js></script>
+<body>
+<script>
+ "use strict";
+ let nonce = "{{uuid()}}";
+ let expected = {"site": "", "user": "", "mode": "", "dest": ""};
+
+ testPrefetch(nonce, "Https downgrade", downgradeRedirectTo, expected);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js
index a344c94106a..608a5297881 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js
+++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/helper.js
@@ -1,7 +1,3 @@
-function wrap_by_tag(tag, text) {
- return tag ? `${tag}: ${text}`: text;
-}
-
function validate_expectations(key, expected, tag) {
return fetch("/fetch/metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py
index 99115475683..3bfb1fcdfaa 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py
+++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/record-header.py
@@ -117,6 +117,20 @@ def main(request, response):
response.headers.set("Content-Type", "application/javascript")
return "self.postMessage('loaded');"
+ ## Return an appcache manifest
+ if key.startswith("appcache-manifest"):
+ response.headers.set("Content-Type", "text/cache-manifest")
+ return """CACHE MANIFEST
+/fetch/metadata/resources/record-header.py?file=appcache-resource%s
+
+NETWORK:
+*""" % key[17:]
+
+ ## Return an appcache resource
+ if key.startswith("appcache-resource"):
+ response.headers.set("Content-Type", "text/html")
+ return "<html>Appcache!</html>"
+
## Return a valid XSLT
if key.startswith("xslt"):
response.headers.set("Content-Type", "text/xsl")
@@ -128,4 +142,3 @@ def main(request, response):
</xsl:copy>
</xsl:template>
</xsl:stylesheet>"""
-
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js
index c40b5a5e17e..e5547e7ac79 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js
+++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js
@@ -38,6 +38,34 @@ function downgradeRedirectTo(partialPath) {
return secureRedirectURL + encodeURIComponent(insecureTestURL + partialPath);
}
+// Helper to test the behavior of the `prefetch` Link type [1]. Because the the
+// behavior under test is optional [2], this function should only be used in
+// tests which have been denoted as "optional" [3].
+//
+// [1] https://html.spec.whatwg.org/#link-type-prefetch
+// [2] https://w3c.github.io/resource-hints/#load-and-error-events
+// [3] https://web-platform-tests.org/writing-tests/file-names.html
+function testPrefetch(nonce, testNamePrefix, urlHelperMethod, expectedResults) {
+ async_test(t => {
+ let key = 'prefetch' + nonce;
+ let e = document.createElement('link');
+ e.rel = 'prefetch';
+ e.crossOrigin = 'anonymous';
+ e.href = urlHelperMethod('resources/record-header.py?file=' + key) + '&simple=true';
+ e.onload = t.step_func(e => {
+ let expectation = { ...expectedResults };
+ if (expectation['mode'] != '')
+ expectation['mode'] = 'cors';
+ fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key)
+ .then(t.step_func(response => response.text()))
+ .then(t.step_func_done(text => assert_header_equals(text, expectation, testNamePrefix + ' prefetch => No headers')))
+ .catch(t.unreached_func('Fetching and verifying the results should succeed.'));
+ });
+ e.onerror = t.unreached_func();
+ document.head.appendChild(e);
+ }, testNamePrefix + ' prefetch => No headers');
+}
+
// Helper to run common redirect test cases that don't require special setup on
// the test page itself.
function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults) {
@@ -124,27 +152,6 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
});
}, testNamePrefix + ' object');
- if (document.createElement('link').relList.supports('prefetch')) {
- async_test(t => {
- let key = 'prefetch' + nonce;
- let e = document.createElement('link');
- e.rel = 'prefetch';
- e.crossOrigin = 'anonymous';
- e.href = urlHelperMethod('resources/record-header.py?file=' + key) + '&simple=true';
- e.onload = t.step_func(e => {
- let expectation = { ...expectedResults };
- if (expectation['mode'] != '')
- expectation['mode'] = 'cors';
- fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key)
- .then(t.step_func(response => response.text()))
- .then(t.step_func_done(text => assert_header_equals(text, expectation, testNamePrefix + ' prefetch => No headers')))
- .catch(t.unreached_func('Fetching and verifying the results should succeed.'));
- });
- e.onerror = t.unreached_func();
- document.head.appendChild(e);
- }, testNamePrefix + ' prefetch => No headers');
- }
-
if (document.createElement('link').relList.supports('preload')) {
async_test(t => {
let key = 'preload' + nonce;
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.html b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.html
index 73390c7ad59..41ece6826ed 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.html
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>Tests Stale While Revalidate is not executed for fetch API</title>
+<title>Tests Stale While Revalidate is executed for fetch API</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html
index 7c939bc7746..106c3f97cb2 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html
@@ -2,7 +2,7 @@
<meta charset="utf-8">
<html>
<head>
- <title>Auxiliary Browing Contexts: window.opener when Opener Removed/Closed</title>
+ <title>Auxiliary Browsing Contexts: window.opener when Opener Removed/Closed</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedLocalStorage.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html
index eb356c55972..e71d4dc8687 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>Auxiliary Browing Contexts: window.opener, multiple</title>
+ <title>Auxiliary Browsing Contexts: window.opener, multiple</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedLocalStorage.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html
index fff10248fed..086a96442dd 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>Auxiliary Browing Contexts: window.opener noopener</title>
+ <title>Auxiliary Browsing Contexts: window.opener noopener</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedLocalStorage.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html
index f82aa6f0abe..b8226bd2b93 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>Auxiliary Browing Contexts: window.opener noreferrer</title>
+ <title>Auxiliary Browsing Contexts: window.opener noreferrer</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedLocalStorage.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html
index e6ff4a19d0d..ac6e47b846b 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>Auxiliary Browing Contexts: window.opener setter</title>
+ <title>Auxiliary Browsing Contexts: window.opener setter</title>
<meta name=timeout content=long>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html
index 5bbaee6a378..c43d3bd3bfb 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>Auxiliary Browing Contexts: window.opener</title>
+ <title>Auxiliary Browsing Contexts: window.opener</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedLocalStorage.js"></script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback.html
new file mode 100644
index 00000000000..3ade1effc4b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/resize-during-playback.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html>
+<head>
+<title>video element resizing during playback</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/media.html#concept-video-intrinsic-width">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<script>
+for (const format of ['mp4', 'webm']) {
+ promise_test(async (t) => {
+ const video = document.createElement('video');
+ assert_precondition(video.canPlayType(`video/${format}`), `${format} supported`);
+
+ // Load the video and wait for initial resize event.
+ video.src = `/media/400x300-red-resize-200x150-green.${format}`;
+ video.muted = true;
+ video.preload = 'auto';
+ document.body.appendChild(video);
+ const eventWatcher = new EventWatcher(t, video, ['resize', 'playing', 'error', 'ended']);
+ await eventWatcher.wait_for(['resize']);
+ assert_equals(video.videoWidth, 400, 'width after first resize event');
+ assert_equals(video.videoHeight, 300, 'height after first resize event');
+
+ // Now play and wait for a second resize event.
+ const playPromise = video.play();
+ if (playPromise) {
+ playPromise.catch(t.unreached_func("play rejected"));
+ }
+ await eventWatcher.wait_for(['playing', 'resize']);
+ assert_equals(video.videoWidth, 200, 'width after second resize event');
+ assert_equals(video.videoHeight, 150, 'height after second resize event');
+ }, `${format} video`);
+}
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/constraints/infinite_backtracking.html b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/infinite_backtracking.html
new file mode 100644
index 00000000000..52f6e316b1f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/constraints/infinite_backtracking.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>The infinite pattern validation test</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<input type=text id=badinput value="12345678901234567890123456789123456789z" pattern="(\d+)*$">
+<script>
+ test(function(){
+ var elements = document.querySelectorAll(":invalid");
+ assert_array_equals(elements, [document.getElementById('badinput')]);
+ }, "Infinite backtracking pattern terminates");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/html_content_in_foreign_context.html b/tests/wpt/web-platform-tests/html/syntax/parsing/html_content_in_foreign_context.html
new file mode 100644
index 00000000000..611b71d0e6a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/syntax/parsing/html_content_in_foreign_context.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<title>Foreign contexts with HTML tag children</title>
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inbody">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+test(function() {
+ const contexts = ["svg", "math"];
+ const elements = ["/p", "/br", "b", "big", "blockquote", "br", "center", "code", "dd", "div", "dl", "dt", "em", "embed", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "img", "li", "listing", "menu", "meta", "nobr", "ol", "p", "pre", "ruby", "s", "small", "span", "strong", "strike", "sub", "sup", "table", "tt", "u", "ul", "var"];
+ contexts.forEach(c => {
+ elements.forEach(e => {
+ const wrapper = document.createElement('div');
+ const html = `<${c}><${e}></${c}`
+ wrapper.innerHTML = html;
+ assert_false(wrapper.innerHTML == html, "The inner HTML should get mutated");
+
+ const tagname = e[0]=='/' ? e.substr(1) : e;
+ const element = wrapper.getElementsByTagName(tagname)[0];
+ assert_true(element !== undefined,`Unable to locate the ${e} node in ${c}`)
+ const parent = element.parentNode
+ assert_true(element.parentNode === wrapper,`The ${e} tag did not exit the ${c}`)
+ });
+ });
+}, "HTML namespace nodes should exit foreign contexts");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
index 4a4f5946fad..1d63261c554 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
@@ -3,4 +3,4 @@
if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": ERROR
[TestDriver actions: two touch points with one moving one pause]
expected:
- if product == "chrome": FAIL
+ if product == "chrome" and os != "mac": FAIL
diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_wait_TestRendered.html b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_wait_TestRendered.html
new file mode 100644
index 00000000000..4316d338b5c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_wait_TestRendered.html
@@ -0,0 +1,14 @@
+<html class="reftest-wait">
+<title>Test with reftest-wait</title>
+<link rel=match href=green.html>
+<style>
+:root {background-color:red}
+</style>
+<script>
+document.addEventListener("TestRendered",
+ function() {
+ document.documentElement.style.backgroundColor = "green";
+ document.documentElement.className = "";
+ });
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/interfaces/cookie-store.idl b/tests/wpt/web-platform-tests/interfaces/cookie-store.idl
index 3e1a90ab63f..f6a413e54a2 100644
--- a/tests/wpt/web-platform-tests/interfaces/cookie-store.idl
+++ b/tests/wpt/web-platform-tests/interfaces/cookie-store.idl
@@ -19,12 +19,6 @@ interface CookieStore : EventTarget {
Promise<void> delete(USVString name);
Promise<void> delete(CookieStoreDeleteOptions options);
- [Exposed=ServiceWorker]
- Promise<void> subscribeToChanges(sequence<CookieStoreGetOptions> subscriptions);
-
- [Exposed=ServiceWorker]
- Promise<sequence<CookieStoreGetOptions>> getChangeSubscriptions();
-
[Exposed=Window]
attribute EventHandler onchange;
};
@@ -77,8 +71,7 @@ dictionary CookieListItem {
typedef sequence<CookieListItem> CookieList;
-[Exposed=Window,
- SecureContext]
+[Exposed=Window, SecureContext]
interface CookieChangeEvent : Event {
constructor(DOMString type, optional CookieChangeEventInit eventInitDict = {});
readonly attribute CookieList changed;
@@ -90,8 +83,8 @@ dictionary CookieChangeEventInit : EventInit {
CookieList deleted;
};
-[Exposed=ServiceWorker
-] interface ExtendableCookieChangeEvent : ExtendableEvent {
+[Exposed=ServiceWorker]
+interface ExtendableCookieChangeEvent : ExtendableEvent {
constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict = {});
readonly attribute CookieList changed;
readonly attribute CookieList deleted;
@@ -102,6 +95,13 @@ dictionary ExtendableCookieChangeEventInit : ExtendableEventInit {
CookieList deleted;
};
+[Exposed=(ServiceWorker,Window), SecureContext]
+interface CookieStoreManager {
+ Promise<void> subscribe(sequence<CookieStoreGetOptions> subscriptions);
+ Promise<sequence<CookieStoreGetOptions>> getSubscriptions();
+ Promise<void> unsubscribe(sequence<CookieStoreGetOptions> subscriptions);
+};
+
[SecureContext]
partial interface Window {
[Replaceable, SameObject] readonly attribute CookieStore cookieStore;
@@ -109,6 +109,10 @@ partial interface Window {
partial interface ServiceWorkerGlobalScope {
[Replaceable, SameObject] readonly attribute CookieStore cookieStore;
-
attribute EventHandler oncookiechange;
};
+
+[Exposed=(ServiceWorker,Window), SecureContext]
+partial interface ServiceWorkerRegistration {
+ readonly attribute CookieStoreManager cookies;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/resize-observer.idl b/tests/wpt/web-platform-tests/interfaces/resize-observer.idl
index 9ac157a6328..d53e9da55ee 100644
--- a/tests/wpt/web-platform-tests/interfaces/resize-observer.idl
+++ b/tests/wpt/web-platform-tests/interfaces/resize-observer.idl
@@ -21,7 +21,7 @@ interface ResizeObserver {
callback ResizeObserverCallback = void (sequence<ResizeObserverEntry> entries, ResizeObserver observer);
-[Exposed=Window, Constructor(Element target)]
+[Exposed=Window]
interface ResizeObserverEntry {
readonly attribute Element target;
readonly attribute DOMRectReadOnly contentRect;
diff --git a/tests/wpt/web-platform-tests/interfaces/wasm-js-api.idl b/tests/wpt/web-platform-tests/interfaces/wasm-js-api.idl
index 828729071e4..cc943610145 100644
--- a/tests/wpt/web-platform-tests/interfaces/wasm-js-api.idl
+++ b/tests/wpt/web-platform-tests/interfaces/wasm-js-api.idl
@@ -39,15 +39,17 @@ dictionary ModuleImportDescriptor {
required ImportExportKind kind;
};
-[LegacyNamespace=WebAssembly, Constructor(BufferSource bytes), Exposed=(Window,Worker,Worklet)]
+[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)]
interface Module {
+ constructor(BufferSource bytes);
static sequence<ModuleExportDescriptor> exports(Module moduleObject);
static sequence<ModuleImportDescriptor> imports(Module moduleObject);
static sequence<ArrayBuffer> customSections(Module moduleObject, DOMString sectionName);
};
-[LegacyNamespace=WebAssembly, Constructor(Module module, optional object importObject), Exposed=(Window,Worker,Worklet)]
+[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)]
interface Instance {
+ constructor(Module module, optional object importObject);
readonly attribute object exports;
};
@@ -56,8 +58,9 @@ dictionary MemoryDescriptor {
[EnforceRange] unsigned long maximum;
};
-[LegacyNamespace=WebAssembly, Constructor(MemoryDescriptor descriptor), Exposed=(Window,Worker,Worklet)]
+[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)]
interface Memory {
+ constructor(MemoryDescriptor descriptor);
unsigned long grow([EnforceRange] unsigned long delta);
readonly attribute ArrayBuffer buffer;
};
@@ -74,8 +77,9 @@ dictionary TableDescriptor {
[EnforceRange] unsigned long maximum;
};
-[LegacyNamespace=WebAssembly, Constructor(TableDescriptor descriptor), Exposed=(Window,Worker,Worklet)]
+[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)]
interface Table {
+ constructor(TableDescriptor descriptor);
unsigned long grow([EnforceRange] unsigned long delta);
Function? get([EnforceRange] unsigned long index);
void set([EnforceRange] unsigned long index, Function? value);
@@ -94,8 +98,9 @@ dictionary GlobalDescriptor {
boolean mutable = false;
};
-[LegacyNamespace=WebAssembly, Constructor(GlobalDescriptor descriptor, optional any v), Exposed=(Window,Worker,Worklet)]
+[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)]
interface Global {
+ constructor(GlobalDescriptor descriptor, optional any v);
any valueOf();
attribute any value;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index 455720c641e..de23fac0c11 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -13,6 +13,8 @@ dictionary NDEFMessageInit {
required sequence<NDEFRecordInit> records;
};
+typedef (DOMString or BufferSource or NDEFMessageInit) NDEFRecordDataSource;
+
[Exposed=Window]
interface NDEFRecord {
constructor(NDEFRecordInit recordInit);
@@ -36,7 +38,7 @@ dictionary NDEFRecordInit {
USVString encoding;
USVString lang;
- any data;
+ NDEFRecordDataSource data;
};
typedef (DOMString or BufferSource or NDEFMessageInit) NDEFMessageSource;
diff --git a/tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-scroll.html b/tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-scroll.html
new file mode 100644
index 00000000000..4fe5c6b7e7c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-scroll.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<title>Layout Instability: shift in pointerdown becoming scroll</title>
+<link rel="help" href="https://wicg.github.io/layout-instability/" />
+<style>
+
+body { margin: 0; height: 2000px; }
+#box {
+ left: 0px;
+ top: 0px;
+ width: 400px;
+ height: 500px;
+ background: yellow;
+ position: relative;
+}
+
+</style>
+<div id="box"></div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="resources/util.js"></script>
+<script>
+
+const box = document.querySelector("#box");
+box.addEventListener("pointerdown", (e) => {
+ // Generate a layout shift before we know what type of input this pointer
+ // event sequence will become.
+ box.style.top = "100px";
+ e.preventDefault();
+});
+
+generateScrollSequence = () => new test_driver.Actions()
+ .addPointer("tp1", "touch")
+ .pointerMove(0, 100, {sourceName: "tp1"})
+ .pointerDown({sourceName: "tp1"})
+ .pointerMove(0, 0, {sourceName: "tp1"})
+ .pause(100)
+ .pointerUp({sourceName: "tp1"})
+ .pause(100);
+
+promise_test(async () => {
+ const watcher = new ScoreWatcher;
+
+ // Wait for the initial render to complete.
+ await waitForAnimationFrames(2);
+
+ // Send pointer events for a touch scroll.
+ await generateScrollSequence().send();
+
+ // The box is 400 x 500 and moves by 100px.
+ const expectedScore = computeExpectedScore(400 * (500 + 100), 100);
+
+ // Both scores should increase (scroll doesn't count as input for the purpose
+ // of the LayoutShift.hadRecentInput bit).
+ assert_equals(watcher.score, expectedScore);
+ assert_equals(watcher.scoreWithInputExclusion, expectedScore);
+
+}, "Shift in pointerdown reported when it becomes a scroll.");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-tap.html b/tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-tap.html
new file mode 100644
index 00000000000..e2e7a911dc0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/layout-instability/pointerdown-becomes-tap.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<title>Layout Instability: shift in pointerdown becoming tap</title>
+<link rel="help" href="https://wicg.github.io/layout-instability/" />
+<style>
+
+body { margin: 0; height: 2000px; }
+#box {
+ left: 0px;
+ top: 0px;
+ width: 400px;
+ height: 500px;
+ background: yellow;
+ position: relative;
+}
+
+</style>
+<div id="box"></div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="resources/util.js"></script>
+<script>
+
+const box = document.querySelector("#box");
+box.addEventListener("pointerdown", (e) => {
+ // Generate a layout shift before we know what type of input this pointer
+ // event sequence will become.
+ box.style.top = "100px";
+ e.preventDefault();
+});
+
+generateTapSequence = () => new test_driver.Actions()
+ .addPointer("tp1", "touch")
+ .pointerMove(0, 0, {sourceName: "tp1"})
+ .pointerDown({sourceName: "tp1"})
+ .pause(100)
+ .pointerUp({sourceName: "tp1"})
+ .pause(100);
+
+promise_test(async () => {
+ const watcher = new ScoreWatcher;
+
+ // Wait for the initial render to complete.
+ await waitForAnimationFrames(2);
+
+ // Send pointer events for a tap.
+ await generateTapSequence().send();
+
+ // The box is 400 x 500 and moves by 100px.
+ const expectedExcludedScore = computeExpectedScore(400 * (500 + 100), 100);
+
+ // Only the score that ignores hadRecentInput should increase.
+ assert_equals(watcher.score, expectedExcludedScore);
+ assert_equals(watcher.scoreWithInputExclusion, 0);
+
+}, "Shift in pointerdown excluded when it becomes a tap.");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/layout-instability/resources/util.js b/tests/wpt/web-platform-tests/layout-instability/resources/util.js
index ca430d0a9e2..515914e11fa 100644
--- a/tests/wpt/web-platform-tests/layout-instability/resources/util.js
+++ b/tests/wpt/web-platform-tests/layout-instability/resources/util.js
@@ -47,6 +47,7 @@ ScoreWatcher = function() {
if (PerformanceObserver.supportedEntryTypes.indexOf("layout-shift") == -1)
throw new Error("Layout Instability API not supported");
this.score = 0;
+ this.scoreWithInputExclusion = 0;
const resetPromise = () => {
this.promise = new Promise(resolve => {
this.resolve = () => {
@@ -59,6 +60,8 @@ ScoreWatcher = function() {
const observer = new PerformanceObserver(list => {
list.getEntries().forEach(entry => {
this.score += entry.value;
+ if (!entry.hadRecentInput)
+ this.scoreWithInputExclusion += entry.value;
this.resolve();
});
});
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index 48d7e9d6a74..4f2ef9c005b 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -201,6 +201,7 @@ SET TIMEOUT: shadow-dom/slotchange-event.html
SET TIMEOUT: trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html
SET TIMEOUT: trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.html
SET TIMEOUT: user-timing/*
+SET TIMEOUT: web-animations/timing-model/animations/*
SET TIMEOUT: webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html
SET TIMEOUT: webauthn/*timeout.https.html
SET TIMEOUT: webdriver/*
diff --git a/tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.mp4 b/tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.mp4
new file mode 100644
index 00000000000..1058c1bf26a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.mp4
Binary files differ
diff --git a/tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.webm b/tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.webm
new file mode 100644
index 00000000000..53b6517849f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/media/400x300-red-resize-200x150-green.webm
Binary files differ
diff --git a/tests/wpt/web-platform-tests/portals/portals-adopt-predecessor.html b/tests/wpt/web-platform-tests/portals/portals-adopt-predecessor.html
index 70545458b46..96d0be9a401 100644
--- a/tests/wpt/web-platform-tests/portals/portals-adopt-predecessor.html
+++ b/tests/wpt/web-platform-tests/portals/portals-adopt-predecessor.html
@@ -62,4 +62,14 @@
});
window.open(`resources/portals-adopt-predecessor.html?test=${test}`);
}, "Tests that the adopted predecessor is destroyed if it isn't inserted");
+
+ async_test(t => {
+ var test = "adopt-to-disconnected-node";
+ var bc = new BroadcastChannel(`test-${test}`);
+ bc.onmessage = t.step_func_done(function(e) {
+ assert_equals(e.data, "passed");
+ bc.close();
+ });
+ window.open(`resources/portals-adopt-predecessor.html?test=${test}`);
+ }, "Tests that an adopted portal can be inserted into a disconnected node.");
</script>
diff --git a/tests/wpt/web-platform-tests/portals/resources/portals-adopt-predecessor-portal.html b/tests/wpt/web-platform-tests/portals/resources/portals-adopt-predecessor-portal.html
index b7eb3b96779..48e162b9714 100644
--- a/tests/wpt/web-platform-tests/portals/resources/portals-adopt-predecessor-portal.html
+++ b/tests/wpt/web-platform-tests/portals/resources/portals-adopt-predecessor-portal.html
@@ -64,5 +64,14 @@
});
});
}
+ if (test == "adopt-to-disconnected-node") {
+ var portal = e.adoptPredecessor();
+ document.body.appendChild(portal);
+ var node = document.createElement("div");
+ node.appendChild(portal);
+ var bc_test = new BroadcastChannel(`test-${test}`);
+ bc_test.postMessage("passed");
+ bc_test.close();
+ }
}
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html
new file mode 100644
index 00000000000..6ca92476195
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<script>
+// This is tentative because currently this feature only has an explainer and
+// no formal spec.
+// https://github.com/wanderview/fetchevent-worker-timing/blob/master/explainer.md
+
+async function wait_for_performance_entries(url, performance, entry_type) {
+ const entries = await performance.getEntriesByName(url);
+ if (entries.length > 0) {
+ return entries;
+ }
+ return new Promise((resolve) => {
+ new PerformanceObserver((list, observer) => {
+ const entries = list.getEntriesByName(url);
+ if (entries.length > 0) {
+ observer.disconnect();
+ resolve(entries);
+ }
+ }).observe({ entryTypes: [entry_type] });
+ });
+}
+
+function load_image(target_document, url) {
+ return new Promise((resolve, reject) => {
+ const image = target_document.createElement('img');
+ image.onload = () => { resolve(image); }
+ image.onerror = () => { reject(`Failed to load: ${url}`); };
+ image.src = url;
+ });
+}
+
+promise_test(async (t) => {
+ const registration = await service_worker_unregister_and_register(
+ t, 'resources/fetch-event-worker-timing.js', 'resources/');
+ promise_test(async (t) => registration.unregister(),
+ 'Unregister service worker');
+ await wait_for_state(t, registration.installing, 'activated');
+}, 'Set up an active service worker');
+
+promise_test(async (t) => {
+ const frame = await with_iframe('resources/empty.html?fallback');
+ t.add_cleanup(() => frame.remove());
+
+ const performance = frame.contentWindow.performance;
+
+ const entries = await wait_for_performance_entries(
+ frame.src, performance, 'navigation');
+ assert_equals(entries.length, 1, 'PerformanceNavigationTiming is observed');
+
+ const worker_timings = await entries[0].workerTiming;
+ const expected_worker_timings = [
+ {
+ name: "network-fallback mark 1",
+ entryType: "mark",
+ detail: { foo: 'foo' }
+ },
+ {
+ name: "network-fallback mark 2",
+ entryType: "mark",
+ detail: { bar: 'bar' }
+ },
+ {
+ name: "network-fallback measure",
+ entryType: "measure",
+ detail: { baz: 'baz' }
+ }
+ ];
+ assert_equals(worker_timings.length, expected_worker_timings.length,
+ 'workerTiming is completed when PerformanceResourceTiming is observed');
+
+ for (let i = 0; i < workerTimings.length; i++) {
+ assert_equals(worker_timings[i].name,
+ expected_worker_timings[i].name, 'entry name');
+ assert_equals(worker_timings[i].entryType,
+ expected_worker_timings[i].entryType, 'entry type');
+ assert_object_equals(worker_timings[i].detail,
+ expected_worker_timings[i].detail, 'entry detail');
+ }
+}, 'workerTiming for navigation in a frame with network fallback');
+
+promise_test(async (t) => {
+ const frame= await with_iframe('resources/empty.html?fetch-event');
+ t.add_cleanup(() => frame.remove());
+
+ const performance = frame.contentWindow.performance;
+
+ const entries = await wait_for_performance_entries(
+ frame.src, performance, 'navigation');
+ assert_equals(entries.length, 1, 'PerformanceNavigationTiming is observed');
+
+ const worker_timings = await entries[0].workerTiming;
+ const expected_worker_timings = [
+ {
+ name: "fetch-event mark 1",
+ entryType: "mark",
+ detail: { foo: 'foo' }
+ },
+ {
+ name: "fetch-event mark 2",
+ entryType: "mark",
+ detail: { bar: 'bar' }
+ },
+ {
+ name: "fetch-event measure",
+ entryType: "measure",
+ detail: { baz: 'baz' }
+ }
+ ];
+ assert_equals(worker_timings.length, expected_worker_timings.length,
+ 'workerTiming is completed when PerformanceResourceTiming is observed');
+
+ for (let i = 0; i < workerTimings.length; i++) {
+ assert_equals(worker_timings[i].name,
+ expected_worker_timings[i].name, 'entry name');
+ assert_equals(worker_timings[i].entryType,
+ expected_worker_timings[i].entryType, 'entry type');
+ assert_object_equals(worker_timings[i].detail,
+ expected_worker_timings[i].detail, 'entry detail');
+ }
+}, 'workerTiming for navigation in a frame for a response from a fetch ' +
+ 'handler');
+
+promise_test(async (t) => {
+ const frame = await with_iframe('resources/empty.html');
+ t.add_cleanup(() => frame.remove());
+
+ const performance = frame.contentWindow.performance;
+
+ const image_path = base_path() + 'resources/square.png?fallback';
+ const image_url = get_host_info()['HTTPS_ORIGIN'] + image_path;
+
+ let entries = await performance.getEntriesByName(image_url);
+ assert_equals(entries.length, 0, 'No PerformanceResourceTiming');
+
+ const image = await load_image(frame.contentDocument,
+ 'square.png?fetch-event');
+ entries = await wait_for_performance_entries(
+ image.src, performance, 'resource');
+ assert_equals(entries.length, 1, 'PerformanceResourceTiming is observed');
+
+ const worker_timings = await entries[0].workerTiming;
+ const expected_worker_timings = [
+ {
+ name: "network-fallback mark 1",
+ entryType: "mark",
+ detail: { foo: 'foo' }
+ },
+ {
+ name: "network-fallback mark 2",
+ entryType: "mark",
+ detail: { bar: 'bar' }
+ },
+ {
+ name: "network-fallback measure",
+ entryType: "measure",
+ detail: { baz: 'baz' }
+ }
+ ];
+ assert_equals(worker_timings.length, expected_worker_timings.length,
+ 'workerTiming is completed when PerformanceResourceTiming is observed');
+
+ for (let i = 0; i < workerTimings.length; i++) {
+ assert_equals(worker_timings[i].name,
+ expected_worker_timings[i].name, 'entry name');
+ assert_equals(worker_timings[i].entryType,
+ expected_worker_timings[i].entryType, 'entry type');
+ assert_object_equals(worker_timings[i].detail,
+ expected_worker_timings[i].detail, 'entry detail');
+ }
+}, 'workerTiming for subresources in a frame with network fallback');
+
+promise_test(async (t) => {
+ const frame = await with_iframe('resources/empty.html');
+ t.add_cleanup(() => frame.remove());
+
+ const performance = frame.contentWindow.performance;
+
+ const image_path = base_path() + 'resources/square.png?fetch-event';
+ const image_url = get_host_info()['HTTPS_ORIGIN'] + image_path;
+
+ let entries = await performance.getEntriesByName(image_url);
+ assert_equals(entries.length, 0, 'No PerformanceResourceTiming');
+
+ const image = await load_image(frame.contentDocument,
+ 'square.png?fetch-event');
+ entries = await wait_for_performance_entries(
+ image.src, performance, 'resource');
+ assert_equals(entries.length, 1, 'PerformanceResourceTiming is observed');
+
+ const worker_timings = await entries[0].workerTiming;
+ const expected_worker_timings = [
+ {
+ name: "fetch-event mark 1",
+ entryType: "mark",
+ detail: { foo: 'foo' }
+ },
+ {
+ name: "fetch-event mark 2",
+ entryType: "mark",
+ detail: { bar: 'bar' }
+ },
+ {
+ name: "fetch-event measure",
+ entryType: "measure",
+ detail: { baz: 'baz' }
+ }
+ ];
+ assert_equals(worker_timings.length, expected_worker_timings.length,
+ 'workerTiming is completed when PerformanceResourceTiming is observed');
+
+ for (let i = 0; i < workerTimings.length; i++) {
+ assert_equals(worker_timings[i].name,
+ expected_worker_timings[i].name, 'entry name');
+ assert_equals(worker_timings[i].entryType,
+ expected_worker_timings[i].entryType, 'entry type');
+ assert_object_equals(worker_timings[i].detail,
+ expected_worker_timings[i].detail, 'entry detail');
+ }
+}, 'workerTiming for subresources in a frame for a response from a fetch' +
+ 'handler');
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-worker-timing.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-worker-timing.js
new file mode 100644
index 00000000000..7f3b201ef76
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-worker-timing.js
@@ -0,0 +1,39 @@
+importScripts("/resources/testharness.js");
+
+self.addEventListener('fetch', event => {
+ if (event.request.url.indexOf('fallback') >= 0) {
+ event.addPerformanceEntry(
+ performance.mark("network-fallback mark 1",
+ { detail: { foo: 'foo' } }));
+ event.addPerformanceEntry(
+ performance.mark("network-fallback mark 2",
+ { detail: { bar: 'bar' } }));
+ event.addPerformanceEntry(performance.measure("network-fallback measure",
+ {
+ start: "network-fallback mark 1", end: "network-fallback mark 2",
+ detail: { baz: 'baz' }
+ }));
+ return;
+ } else if (event.request.url.indexOf('fetch-event') >= 0) {
+ event.respondWith((async () => {
+ event.addPerformanceEntry(performance.mark("fetch-event mark 1",
+ { detail: { foo: 'foo' } }));
+ const response = await fetch(event.request);
+
+ event.waitUntil(new Promise((resolve) => {
+ // Add performance entries after settling a promise for respondWith().
+ step_timeout(() => {
+ event.addPerformanceEntry(performance.mark("fetch-event mark 2",
+ { detail: { bar: 'bar' } }));
+ event.addPerformanceEntry(performance.measure("fetch-event measure",
+ {
+ start: "fetch-event mark 1", end: "fetch-event mark 2",
+ detail: { baz: 'baz' }
+ }));
+ resolve();
+ }, 100);
+ }));
+ return response;
+ })());
+ }
+});
diff --git a/tests/wpt/web-platform-tests/storage-access-api/META.yml b/tests/wpt/web-platform-tests/storage-access-api/META.yml
index cb059fe6bb1..83f07857538 100644
--- a/tests/wpt/web-platform-tests/storage-access-api/META.yml
+++ b/tests/wpt/web-platform-tests/storage-access-api/META.yml
@@ -1,2 +1,5 @@
+spec: https://github.com/whatwg/html/issues/3338
suggested_reviewers:
- Brandr0id
+ - ehsan
+ - johnwilander
diff --git a/tests/wpt/web-platform-tests/svg/META.yml b/tests/wpt/web-platform-tests/svg/META.yml
index 0836892864f..ee0fff087c4 100644
--- a/tests/wpt/web-platform-tests/svg/META.yml
+++ b/tests/wpt/web-platform-tests/svg/META.yml
@@ -6,3 +6,4 @@ suggested_reviewers:
- AmeliaBR
- svgeesus
- dirkschulze
+ - fsoder
diff --git a/tests/wpt/web-platform-tests/svg/painting/marker-009-ref.svg b/tests/wpt/web-platform-tests/svg/painting/marker-009-ref.svg
new file mode 100644
index 00000000000..968eba091c5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/marker-009-ref.svg
@@ -0,0 +1,19 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500">
+ <path d="M50,50 h100 v100 z m150,0 h100 v100 z m150,0 h100 v100 z"
+ fill="none" stroke="black" stroke-width="10"
+ />
+ <circle cx="50" cy="50" r="25" fill="green"/>
+ <circle cx="50" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="150" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="150" cy="150" r="20" fill="skyblue" opacity="0.9"/>
+
+ <circle cx="200" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="200" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="300" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="300" cy="150" r="20" fill="skyblue" opacity="0.9"/>
+
+ <circle cx="350" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="350" cy="50" r="15" fill="maroon" opacity="0.85"/>
+ <circle cx="450" cy="50" r="20" fill="skyblue" opacity="0.9"/>
+ <circle cx="450" cy="150" r="20" fill="skyblue" opacity="0.9"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/marker-009.svg b/tests/wpt/web-platform-tests/svg/painting/marker-009.svg
new file mode 100644
index 00000000000..9e6fe21d917
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/marker-009.svg
@@ -0,0 +1,23 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml" width="500" height="500">
+ <html:link rel="help" href="https://www.w3.org/TR/2016/CR-SVG2-20160915/painting.html#OrientAttribute"/>
+ <html:link rel="match" href="marker-009-ref.svg"/>
+ <html:meta name="assert" content="Tests correct number of markers are drawn on multiple sub-paths"/>
+ <defs>
+ <marker id="m1" markerUnits="userSpaceOnUse" overflow="visible">
+ <circle cx="0" cy="0" r="25" fill="green"/>
+ </marker>
+ <marker id="m2" markerUnits="userSpaceOnUse" overflow="visible">
+ <circle cx="0" cy="0" r="20" fill="skyblue" opacity="0.9"/>
+ </marker>
+ <marker id="m3" markerUnits="userSpaceOnUse" overflow="visible">
+ <circle cx="0" cy="0" r="15" fill="maroon" opacity="0.85"/>
+ </marker>
+ </defs>
+
+ <path d="M50,50 h100 v100 z m150,0 h100 v100 z m150,0 h100 v100 z"
+ fill="none" stroke="black" stroke-width="10"
+ marker-start="url(#m1)"
+ marker-mid="url(#m2)"
+ marker-end="url(#m3)"
+ />
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/marker-orient-001-ref.svg b/tests/wpt/web-platform-tests/svg/painting/marker-orient-001-ref.svg
new file mode 100644
index 00000000000..e328aa05462
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/marker-orient-001-ref.svg
@@ -0,0 +1,31 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500">
+ <defs>
+ <marker id="arrowNW" orient="225" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ <marker id="arrowNE" orient="315" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ <marker id="arrowSE" orient="45" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ <marker id="arrowSW" orient="135" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ <marker id="arrowW" orient="180" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ <marker id="arrowS" orient="90" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ <marker id="arrowAuto" orient="auto" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ </defs>
+ <!-- Test path, with markers -->
+ <path d="M 40,40 l140,140 240,240" marker-start="url(#arrowNW)" marker-mid="url(#arrowSE)" marker-end="url(#arrowSE)" stroke="black" stroke-width="2"/>
+ <path d="M 40,400 l100,-100 100,-100" marker-start="url(#arrowSW)" marker-mid="url(#arrowNE)" marker-end="url(#arrowNE)" stroke="black" stroke-width="2"/>
+ <path d="M 160,40 c40,0 40,0 40,40" marker-start="url(#arrowW)" marker-end="url(#arrowS)" stroke="black" fill="none" stroke-width="2"/>
+ <path d="M 260,140 a 100,100 0 1 1 100,100" marker-start="url(#arrowS)" marker-end="url(#arrowW)" stroke="black" fill="none" stroke-width="2"/>
+ <path d="M 340,100 h50 v50 h-50 z" marker-start="url(#arrowSW)" marker-mid="url(#arrowAuto)" marker-end="url(#arrowNE)" stroke="black" fill="none" stroke-width="2"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/marker-orient-001.svg b/tests/wpt/web-platform-tests/svg/painting/marker-orient-001.svg
new file mode 100644
index 00000000000..eefb1068391
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/marker-orient-001.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml" width="500" height="500">
+ <html:link rel="help" href="https://www.w3.org/TR/2016/CR-SVG2-20160915/painting.html#OrientAttribute"/>
+ <html:link rel="match" href="marker-orient-001-ref.svg"/>
+ <html:meta name="assert" content="Ensure orientation of auto and auto-start-reverse markers is correct."/>
+ <defs>
+ <marker id="arrow" orient="auto-start-reverse" markerUnits="userSpaceOnUse" style="overflow:visible">
+ <path d="M25,0 L 0,-25 L0,25 z" fill="green"/>
+ </marker>
+ </defs>
+ <!-- Test path, with markers -->
+ <path d="M 40,40 l140,140 240,240" marker-start="url(#arrow)" marker-mid="url(#arrow)" marker-end="url(#arrow)" stroke="black" stroke-width="2"/>
+ <path d="M 40,400 l100,-100 100,-100" marker-start="url(#arrow)" marker-mid="url(#arrow)" marker-end="url(#arrow)" stroke="black" stroke-width="2"/>
+ <path d="M 160,40 c40,0 40,0 40,40" marker-start="url(#arrow)" marker-mid="url(#arrow)" marker-end="url(#arrow)" stroke="black" fill="none" stroke-width="2"/>
+ <path d="M 260,140 a 100,100 0 1 1 100,100" marker-start="url(#arrow)" marker-mid="url(#arrow)" marker-end="url(#arrow)" stroke="black" fill="none" stroke-width="2"/>
+ <path d="M 340,100 h50 v50 h-50 z" marker-start="url(#arrow)" marker-mid="url(#arrow)" marker-end="url(#arrow)" stroke="black" fill="none" stroke-width="2"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/render/foreignObject-in-non-rendered-getComputedStyle.html b/tests/wpt/web-platform-tests/svg/render/foreignObject-in-non-rendered-getComputedStyle.html
new file mode 100644
index 00000000000..409f1044a33
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/render/foreignObject-in-non-rendered-getComputedStyle.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<title>SVG Test: Resolved width inside non-rendered foreignObject</title>
+<link rel="help" href="https://www.w3.org/TR/SVG2/render.html#Rendered-vs-NonRendered">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg>
+ <radialGradient>
+ <pattern>
+ <foreignObject id="foreignObject">
+ <div id="foRoot"></div>
+ </foreignObject>
+ </pattern>
+ </radialGradient>
+</svg>
+<script>
+ test(() => {
+ assert_equals(getComputedStyle(foreignObject).width, "auto", "Non-rendered foreignObject should have width computed to 'auto'.");
+ assert_equals(getComputedStyle(foRoot).width, "auto", "Non-rendered block inside foreignObject should have width computed to 'auto'.");
+ }, "Test that we don't generated boxes for foreignObject in non-rendered SVG.");
+</script>
diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/install_safari.yml b/tests/wpt/web-platform-tests/tools/ci/azure/install_safari.yml
index 10466e3278f..a8641465ac8 100644
--- a/tests/wpt/web-platform-tests/tools/ci/azure/install_safari.yml
+++ b/tests/wpt/web-platform-tests/tools/ci/azure/install_safari.yml
@@ -5,7 +5,7 @@ parameters:
steps:
- ${{ if eq(parameters.channel, 'preview') }}:
- script: |
- HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/safari-technology-preview.rb
+ HOMEBREW_NO_AUTO_UPDATE=1 brew cask install tools/ci/azure/safari-technology-preview.rb
sudo "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --enable
defaults write com.apple.SafariTechnologyPreview WebKitJavaScriptCanOpenWindowsAutomatically 1
defaults write com.apple.SafariTechnologyPreview ExperimentalServerTimingEnabled 1
diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb b/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb
new file mode 100644
index 00000000000..b32739be58a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/azure/safari-technology-preview.rb
@@ -0,0 +1,33 @@
+cask 'safari-technology-preview' do
+ if MacOS.version <= :mojave
+ version '96,061-44056-20191120-ac7bb196-2724-4840-bce9-6c83ecdbfb2c'
+ sha256 'e80ceacdff7e75218365993e5af1c81c9bcc4785291ae00abba3d14ac5614317'
+ else
+ version '96,061-47718-20191120-02bc7569-ee6b-4c28-9ec4-0ceeda3c3c3a'
+ sha256 'bbfcdc36bf9b55aec5838d66e34c41dd3f6a64091406bc38f45c888360f191fe'
+ end
+
+ url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
+ appcast 'https://developer.apple.com/safari/download/'
+ name 'Safari Technology Preview'
+ homepage 'https://developer.apple.com/safari/download/'
+
+ auto_updates true
+ depends_on macos: '>= :mojave'
+
+ pkg 'Safari Technology Preview.pkg'
+
+ uninstall delete: '/Applications/Safari Technology Preview.app'
+
+ zap trash: [
+ '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.apple.safaritechnologypreview.sfl*',
+ '~/Library/Caches/com.apple.SafariTechnologyPreview',
+ '~/Library/Preferences/com.apple.SafariTechnologyPreview.plist',
+ '~/Library/SafariTechnologyPreview',
+ '~/Library/Saved Application State/com.apple.SafariTechnologyPreview.savedState',
+ '~/Library/SyncedPreferences/com.apple.SafariTechnologyPreview-com.apple.Safari.UserRequests.plist',
+ '~/Library/SyncedPreferences/com.apple.SafariTechnologyPreview-com.apple.Safari.WebFeedSubscriptions.plist',
+ '~/Library/SyncedPreferences/com.apple.SafariTechnologyPreview.plist',
+ '~/Library/WebKit/com.apple.SafariTechnologyPreview',
+ ]
+end
diff --git a/tests/wpt/web-platform-tests/tools/ci/commands.json b/tests/wpt/web-platform-tests/tools/ci/commands.json
index 841fd855c80..c9cd7c45898 100644
--- a/tests/wpt/web-platform-tests/tools/ci/commands.json
+++ b/tests/wpt/web-platform-tests/tools/ci/commands.json
@@ -14,7 +14,7 @@
"virtualenv": false
},
"tc-download": {
- "path": "tcdownload.py",
+ "path": "tc/download.py",
"script": "run",
"parser": "get_parser",
"parse_known": true,
@@ -24,5 +24,27 @@
"requests",
"pygithub"
]
+ },
+ "tc-taskgraph": {
+ "path": "tc/taskgraph.py",
+ "script": "run",
+ "help": "Build the taskgraph",
+ "virtualenv": true,
+ "install": [
+ "requests",
+ "pyyaml"
+ ]
+ },
+ "tc-decision": {
+ "path": "tc/decision.py",
+ "parser": "get_parser",
+ "script": "run",
+ "help": "Run the decision task",
+ "virtualenv": true,
+ "install": [
+ "requests",
+ "pyyaml",
+ "taskcluster"
+ ]
}
}
diff --git a/tests/wpt/web-platform-tests/tools/ci/run_tc.py b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
index be7dbe082a1..b4cb2b01b97 100755
--- a/tests/wpt/web-platform-tests/tools/ci/run_tc.py
+++ b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
@@ -38,7 +38,6 @@ the serialization of a GitHub event payload.
import argparse
import json
import os
-import re
import subprocess
import sys
import tempfile
@@ -99,8 +98,12 @@ def get_parser():
help="Start xvfb")
p.add_argument("--checkout",
help="Revision to checkout before starting job")
- p.add_argument("job",
- help="Name of the job associated with the current event")
+ p.add_argument("--install-certificates", action="store_true", default=None,
+ help="Install web-platform.test certificates to UA store")
+ p.add_argument("--no-install-certificates", action="store_false", default=None,
+ help="Don't install web-platform.test certificates to UA store")
+ p.add_argument("--rev",
+ help="Revision that the task_head ref is expected to point to")
p.add_argument("script",
help="Script to run for the job")
p.add_argument("script_args",
@@ -116,11 +119,17 @@ def start_userspace_oom_killer():
def make_hosts_file():
- subprocess.check_call(["sudo", "sh", "-c", "./wpt make-hosts-file >> /etc/hosts"])
+ run(["sudo", "sh", "-c", "./wpt make-hosts-file >> /etc/hosts"])
def checkout_revision(rev):
- subprocess.check_call(["git", "checkout", "--quiet", rev])
+ run(["git", "checkout", "--quiet", rev])
+
+
+def install_certificates():
+ run(["sudo", "cp", "tools/certs/cacert.pem",
+ "/usr/local/share/ca-certificates/cacert.crt"])
+ run(["sudo", "update-ca-certificates"])
def install_chrome(channel):
@@ -213,29 +222,6 @@ def start_xvfb():
start(["sudo", "fluxbox", "-display", os.environ["DISPLAY"]])
-def get_extra_jobs(event):
- body = None
- jobs = set()
- if "commits" in event and event["commits"]:
- body = event["commits"][0]["message"]
- elif "pull_request" in event:
- body = event["pull_request"]["body"]
-
- if not body:
- return jobs
-
- regexp = re.compile(r"\s*tc-jobs:(.*)$")
-
- for line in body.splitlines():
- m = regexp.match(line)
- if m:
- items = m.group(1)
- for item in items.split(","):
- jobs.add(item.strip())
- break
- return jobs
-
-
def set_variables(event):
# Set some variables that we use to get the commits on the current branch
ref_prefix = "refs/heads/"
@@ -256,23 +242,13 @@ def set_variables(event):
os.environ["GITHUB_BRANCH"] = branch
-def include_job(job):
- # Special case things that unconditionally run on pushes,
- # assuming a higher layer is filtering the required list of branches
- if (os.environ["GITHUB_PULL_REQUEST"] == "false" and
- job == "run-all"):
- return True
-
- jobs_str = run([os.path.join(root, "wpt"),
- "test-jobs"], return_stdout=True)
- print(jobs_str)
- return job in set(jobs_str.splitlines())
-
-
def setup_environment(args):
if args.hosts_file:
make_hosts_file()
+ if args.install_certificates:
+ install_certificates()
+
if "chrome" in args.browser:
assert args.channel is not None
install_chrome(args.channel)
@@ -337,9 +313,33 @@ def fetch_event_data():
return json.loads(event_data)
+def include_job(job):
+ # Only for supporting pre decision-task PRs
+ # Special case things that unconditionally run on pushes,
+ # assuming a higher layer is filtering the required list of branches
+ if "GITHUB_PULL_REQUEST" not in os.environ:
+ return True
+
+ if (os.environ["GITHUB_PULL_REQUEST"] == "false" and
+ job == "run-all"):
+ return True
+
+ jobs_str = run([os.path.join(root, "wpt"),
+ "test-jobs"], return_stdout=True)
+ print(jobs_str)
+ return job in set(jobs_str.splitlines())
+
+
def main():
args = get_parser().parse_args()
+ if args.rev is not None:
+ task_head = run(["git", "rev-parse", "task_head"], return_stdout=True).strip()
+ if task_head != args.rev:
+ print("CRITICAL: task_head points at %s, expected %s. "
+ "This may be because the branch was updated" % (task_head, args.rev))
+ sys.exit(1)
+
if "TASK_EVENT" in os.environ:
event = json.loads(os.environ["TASK_EVENT"])
else:
@@ -350,24 +350,15 @@ def main():
setup_repository()
- extra_jobs = get_extra_jobs(event)
-
- job = args.job
-
- print("Job %s" % job)
-
- run_if = [(lambda: job == "all", "job set to 'all'"),
- (lambda:"all" in extra_jobs, "Manually specified jobs includes 'all'"),
- (lambda:job in extra_jobs, "Manually specified jobs includes '%s'" % job),
- (lambda:include_job(job), "CI required jobs includes '%s'" % job)]
-
- for fn, msg in run_if:
- if fn():
- print(msg)
- break
- else:
- print("Job not scheduled for this push")
- return
+ # Hack for backwards compatibility
+ if args.script in ["run-all", "lint", "update_built", "tools_unittest",
+ "wpt_integration", "resources_unittest",
+ "wptrunner_infrastructure", "stability", "affected_tests"]:
+ job = args.script
+ if not include_job(job):
+ return
+ args.script = args.script_args[0]
+ args.script_args = args.script_args[1:]
# Run the job
setup_environment(args)
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/README.md b/tests/wpt/web-platform-tests/tools/ci/tc/README.md
new file mode 100644
index 00000000000..11f367f986f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/README.md
@@ -0,0 +1,235 @@
+# Taskgraph Setup
+
+The taskgraph is built from a YAML file. This file has two top-level
+properties: `components` and `tasks`. The full list of tasks is
+defined by the `tasks` object; each task is an object with a single
+property representing the task with the corresponding value an object
+representing the task properties. Each task requires the following
+top-level properties:
+
+* `provisionerId`: String. Name of Taskcluster provisioner
+* `schedulerId`: String. Name of Taskcluster scheduler
+* `deadline`: String. Time until the task expires
+* `image`: String. Name of docker image to use for task
+* `maxRunTime`: Number. Maximum time in seconds for which the task can
+ run.
+* `artifacts`: Object. List of artifacts and directories to upload; see
+ Taskcluster documentation.
+* `command`: String. Command to run. This is automatically wrapped in a
+ run_tc command
+* `options`: Optional Object. Options to pass into run_tc
+ - xvfb: Boolean. Enable Xvfb for run
+ - oom-killer: Boolean. Enable xvfb for run
+ - hosts: Boolean. Update hosts file with wpt hosts before run
+ - install-certificates: Boolean. Install wpt certs into OS
+ certificate store for run
+ - browser: List. List of browser names for run
+ - channel: String. Browser channel for run
+* `trigger`: Object. Conditions on which to consider task. One or more
+ of following properties:
+ - branch: List. List of branch names on which to trigger.
+ - pull-request: No value. Trigger for pull request actions
+* `schedule-if`: Optional Object. Conditions on which task should be
+ scheduled given it meets the trigger conditions.
+ - `run-job`: List. Job names for which this task should be considered,
+ matching the output from `./wpt test-jobs`
+* `env`: Optional Object. Environment variables to set when running task.
+* `depends-on`: Optional list. List of task names that must be complete
+ before the current task is scheduled.
+* `description`: String. Task description.
+* `name`: Optional String. Name to use for the task overriding the
+ property name. This is useful in combination with substitutions
+ described below.
+
+## Task Expansions
+
+Using the above syntax it's possble to describe each task
+directly. But typically in a taskgraph there are many common
+properties between tasks so it's tedious and error prone to repeat
+information that's common to multiple tasks. Therefore the taskgraph
+format provides several mechanisms to reuse partial task definitions
+across multiple tasks.
+
+### Components
+
+The other top-level property in the taskgraph format is
+`components`. The value of this property is an object containing named
+partial task definitions. Each task definition may contain a property called
+`use` which is a list of components to use as the basis for the task
+definition. The components list is evaluated in order. If a property
+is not previously defined in the output it is added to the output. If
+it was previously defined, the value is updated according to the type:
+ * Strings and numbers are replaced with a new value
+ * Lists are extended with the additional values
+ * Objects are updated recursively following the above rules
+This means that types must always match between components and the
+final value.
+
+For example
+```
+components:
+ example-1:
+ list_prop:
+ - first
+ - second
+ object_prop:
+ key1: value1
+ key2: base_value
+ example-2:
+ list_prop:
+ - third
+ - fourth
+ object_prop:
+ key3:
+ - value3-1
+
+tasks:
+ - example-task:
+ use:
+ - example-1
+ - example-2
+ object_prop:
+ key2: value2
+ key3:
+ - value3-2
+```
+
+will evaluate to the following task:
+
+```
+example-task:
+ list_prop:
+ - first
+ - second
+ - third
+ - fourth
+ object_prop:
+ key1: value1
+ key2: value2
+ key3:
+ - value3-1
+ - value3-2
+```
+
+Note that components cannot currently define `use` properties of their own.
+
+## Substitutions
+
+Components and tasks can define a property `vars` that holds variables
+which are later substituted into the task definition using the syntax
+`${vars.property-name}`. For example:
+
+```
+components:
+ generic-component:
+ prop: ${vars.value}
+
+tasks:
+ - first:
+ use:
+ - generic-component
+ vars:
+ value: value1
+ - second:
+ use:
+ - generic-component
+ vars:
+ value: value2
+```
+
+Results in the following tasks:
+
+```
+first:
+ prop: value1
+second:
+ prop: value2
+```
+
+## Maps
+
+Instead of defining a task directly, an item in the tasks property may
+be an object with a single property `$map`. This object itself has two
+child properties; `for` and `do`. The value of `for` is a list of
+objects, and the value of `do` is either an object or a list of
+objects. For each object in the `for` property, a set of tasks is
+created by taking a copy of that object for each task in the `do`
+property, updating the object with the properties from the
+corresponding `do` object, using the same rules as for components
+above, and then processing as for a normal task. `$map` rules can also
+be nested.
+
+Note: Although `$map` shares a name with the `$map` used in json-e
+(used. in `.taskcluster.yml`), the semantics are different.
+
+For example
+
+```
+components: {}
+tasks:
+ $map:
+ for:
+ - vars:
+ example: value1
+ - vars:
+ example: value2
+ do:
+ example-${vars.example}
+ prop: ${vars.example}
+```
+
+Results in the tasks
+
+```
+example-value1:
+ prop: value1
+example-value2:
+ prop: value2
+```
+
+Note that in combination with `$map`, variable substitutions are
+applied *twice*; once after the `$map` is evaluated and once after the
+`use` statements are evaluated.
+
+## Chunks
+
+A common requirements for tasks is that they are "chunked" into N
+partial tasks. This is handled specially in the syntax. A top level
+property `chunks` can be used to define the number of individual
+chunks to create for a specific task. Each chunked task is created
+with a `chunks` property set to an object containing an `id` property
+containing the one-based index of the chunk an a `total` property
+containing the total number of chunks. These can be substituted into
+the task definition using the same syntax as for `vars` above
+e.g. `${chunks.id}`. Note that because task names must be unique, it's
+common to specify a `name` property on the task that will override the
+property name e.g.
+
+```
+components: {}
+tasks:
+ - chunked-task:
+ chunks:2
+ command: "task-run --chunk=${chunks.id} --totalChunks=${chunks.total}"
+ name: task-chunk-${chunks.id}
+```
+
+creates tasks:
+
+```
+task-chunk-1:
+ command: "task-run --chunk=1 --totalChunks=2"
+task-chunk-2:
+ command: "task-run --chunk=2 --totalChunks=2"
+```
+
+# Overall processing model
+
+The overall processing model for tasks is as follows:
+ * Evaluate maps
+ * Perform subsitutions
+ * Evaluate use statements
+ * Expand chunks
+ * Perform subsitutions
+
+At each point after maps are evaluated tasks must have a unique name.
diff --git a/tests/wpt/web-platform-tests/tools/taskcluster/__init__.py b/tests/wpt/web-platform-tests/tools/ci/tc/__init__.py
index e69de29bb2d..e69de29bb2d 100644
--- a/tests/wpt/web-platform-tests/tools/taskcluster/__init__.py
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/__init__.py
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/decision.py b/tests/wpt/web-platform-tests/tools/ci/tc/decision.py
new file mode 100644
index 00000000000..a3c47aa4049
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/decision.py
@@ -0,0 +1,323 @@
+import argparse
+import json
+import logging
+import os
+import re
+import subprocess
+from collections import OrderedDict
+
+import taskcluster
+from six import iteritems, itervalues
+
+from . import taskgraph
+
+
+here = os.path.abspath(os.path.dirname(__file__))
+
+
+logging.basicConfig()
+logger = logging.getLogger()
+
+
+def get_triggers(event):
+ # Set some variables that we use to get the commits on the current branch
+ ref_prefix = "refs/heads/"
+ is_pr = "pull_request" in event
+ branch = None
+ if not is_pr and "ref" in event:
+ branch = event["ref"]
+ if branch.startswith(ref_prefix):
+ branch = branch[len(ref_prefix):]
+
+ return is_pr, branch
+
+
+def fetch_event_data(queue):
+ try:
+ task_id = os.environ["TASK_ID"]
+ except KeyError:
+ logger.warning("Missing TASK_ID environment variable")
+ # For example under local testing
+ return None
+
+ task_data = queue.task(task_id)
+
+ return task_data.get("extra", {}).get("github_event")
+
+
+def filter_triggers(event, all_tasks):
+ is_pr, branch = get_triggers(event)
+ triggered = {}
+ for name, task in iteritems(all_tasks):
+ if "trigger" in task:
+ if is_pr and "pull-request" in task["trigger"]:
+ triggered[name] = task
+ elif branch is not None and "branch" in task["trigger"]:
+ for trigger_branch in task["trigger"]["branch"]:
+ if (trigger_branch == branch or
+ trigger_branch.endswith("*") and branch.startswith(trigger_branch[:-1])):
+ triggered[name] = task
+ logger.info("Triggers match tasks:\n * %s" % "\n * ".join(triggered.keys()))
+ return triggered
+
+
+def get_run_jobs(event):
+ from tools.ci import jobs
+ revish = "%s..%s" % (event["pull_request"]["base"]["sha"]
+ if "pull_request" in event
+ else event["before"],
+ event["pull_request"]["head"]["sha"]
+ if "pull_request" in event
+ else event["after"])
+ logger.info("Looking for changes in range %s" % revish)
+ paths = jobs.get_paths(revish=revish)
+ logger.info("Found changes in paths:%s" % "\n".join(paths))
+ path_jobs = jobs.get_jobs(paths)
+ all_jobs = path_jobs | get_extra_jobs(event)
+ logger.info("Including jobs:\n * %s" % "\n * ".join(all_jobs))
+ return all_jobs
+
+
+def get_extra_jobs(event):
+ body = None
+ jobs = set()
+ if "commits" in event and event["commits"]:
+ body = event["commits"][0]["message"]
+ elif "pull_request" in event:
+ body = event["pull_request"]["body"]
+
+ if not body:
+ return jobs
+
+ regexp = re.compile(r"\s*tc-jobs:(.*)$")
+
+ for line in body.splitlines():
+ m = regexp.match(line)
+ if m:
+ items = m.group(1)
+ for item in items.split(","):
+ jobs.add(item.strip())
+ break
+ return jobs
+
+
+def filter_schedule_if(event, tasks):
+ scheduled = {}
+ run_jobs = None
+ for name, task in iteritems(tasks):
+ if "schedule-if" in task:
+ if "run-job" in task["schedule-if"]:
+ if run_jobs is None:
+ run_jobs = get_run_jobs(event)
+ if "all" in run_jobs or any(item in run_jobs for item in task["schedule-if"]["run-job"]):
+ scheduled[name] = task
+ else:
+ scheduled[name] = task
+ logger.info("Scheduling rules match tasks:\n * %s" % "\n * ".join(scheduled.keys()))
+ return scheduled
+
+
+def get_fetch_rev(event):
+ is_pr, _ = get_triggers(event)
+ if is_pr:
+ # Try to get the actual rev so that all non-decision tasks are pinned to that
+ ref = "refs/pull/%s/merge" % event["pull_request"]["number"]
+ try:
+ output = subprocess.check_output(["git", "ls-remote", "origin", ref])
+ except subprocess.CalledProcessError:
+ import traceback
+ logger.error(traceback.format_exc())
+ logger.error("Failed to get merge commit sha1")
+ return ref, None
+ if not output:
+ logger.error("Failed to get merge commit")
+ return ref, None
+ return ref, output.split()[0]
+ else:
+ return event["ref"], event["after"]
+
+
+def build_full_command(event, task):
+ fetch_ref, fetch_sha = get_fetch_rev(event)
+ cmd_args = {
+ "task_name": task["name"],
+ "repo_url": event["repository"]["clone_url"],
+ "fetch_ref": fetch_ref,
+ "task_cmd": task["command"],
+ "install_str": "",
+ }
+
+ options = task.get("options", {})
+ options_args = []
+ if fetch_sha is not None:
+ options_args.append("--rev=%s" % fetch_sha)
+ if options.get("oom-killer"):
+ options_args.append("--oom-killer")
+ if options.get("xvfb"):
+ options_args.append("--xvfb")
+ if not options.get("hosts"):
+ options_args.append("--no-hosts")
+ else:
+ options_args.append("--hosts")
+ # Check out the expected SHA unless it is overridden (e.g. to base_head).
+ if options.get("checkout"):
+ options_args.append("--checkout=%s" % options["checkout"])
+ else:
+ options_args.append("--checkout=%s" % fetch_sha)
+ for browser in options.get("browser", []):
+ options_args.append("--browser=%s" % browser)
+ if options.get("channel"):
+ options_args.append("--channel=%s" % options["channel"])
+ if options.get("install-certificates"):
+ options_args.append("--install-certificates")
+
+ cmd_args["options_str"] = " ".join(str(item) for item in options_args)
+
+ install_packages = task.get("install")
+ if install_packages:
+ install_items = ["apt update -qqy"]
+ install_items.extend("apt install -qqy %s" % item
+ for item in install_packages)
+ cmd_args["install_str"] = "\n".join("sudo %s;" % item for item in install_items)
+
+ return ["/bin/bash",
+ "--login",
+ "-c",
+ """
+~/start.sh \
+ %(repo_url)s \
+ %(fetch_ref)s;
+%(install_str)s
+cd web-platform-tests;
+./tools/ci/run_tc.py %(options_str)s -- %(task_cmd)s;
+""" % cmd_args]
+
+
+def get_owner(event):
+ pusher = event.get("pusher", {}).get("email", "")
+ if "@" in pusher:
+ return pusher
+ return "web-platform-tests@users.noreply.github.com"
+
+
+def create_tc_task(event, task, taskgroup_id, depends_on_ids):
+ command = build_full_command(event, task)
+ task_id = taskcluster.slugId()
+ task_data = {
+ "taskGroupId": taskgroup_id,
+ "created": taskcluster.fromNowJSON(""),
+ "deadline": taskcluster.fromNowJSON(task["deadline"]),
+ "provisionerId": task["provisionerId"],
+ "schedulerId": task["schedulerId"],
+ "workerType": task["workerType"],
+ "metadata": {
+ "name": task["name"],
+ "description": task.get("description", ""),
+ "owner": get_owner(event),
+ "source": event["repository"]["clone_url"]
+ },
+ "payload": {
+ "artifacts": task.get("artifacts"),
+ "command": command,
+ "image": task.get("image"),
+ "maxRunTime": task.get("maxRunTime"),
+ "env": task.get("env", {}),
+ },
+ "extra": {
+ "github_event": json.dumps(event)
+ }
+ }
+ if depends_on_ids:
+ task_data["dependencies"] = depends_on_ids
+ task_data["requires"] = "all-completed"
+ return task_id, task_data
+
+
+def build_task_graph(event, all_tasks, tasks):
+ task_id_map = OrderedDict()
+ taskgroup_id = os.environ.get("TASK_ID", taskcluster.slugId())
+
+ def add_task(task_name, task):
+ depends_on_ids = []
+ if "depends-on" in task:
+ for depends_name in task["depends-on"]:
+ if depends_name not in task_id_map:
+ add_task(depends_name,
+ all_tasks[depends_name])
+ depends_on_ids.append(task_id_map[depends_name][0])
+ task_id, task_data = create_tc_task(event, task, taskgroup_id, depends_on_ids)
+ task_id_map[task_name] = (task_id, task_data)
+
+ for task_name, task in iteritems(tasks):
+ add_task(task_name, task)
+
+ return task_id_map
+
+
+def create_tasks(queue, task_id_map):
+ for (task_id, task_data) in itervalues(task_id_map):
+ queue.createTask(task_id, task_data)
+
+
+def get_event(queue, event_path):
+ if event_path is not None:
+ try:
+ with open(event_path) as f:
+ event_str = f.read()
+ except IOError:
+ logger.error("Missing event file at path %s" % event_path)
+ raise
+ elif "TASK_EVENT" in os.environ:
+ event_str = os.environ["TASK_EVENT"]
+ else:
+ event_str = fetch_event_data(queue)
+ if not event_str:
+ raise ValueError("Can't find GitHub event definition; for local testing pass --event-path")
+ try:
+ return json.loads(event_str)
+ except ValueError:
+ logger.error("Event was not valid JSON")
+ raise
+
+
+def decide(event):
+ all_tasks = taskgraph.load_tasks_from_path(os.path.join(here, "tasks", "test.yml"))
+
+ triggered_tasks = filter_triggers(event, all_tasks)
+ scheduled_tasks = filter_schedule_if(event, triggered_tasks)
+
+ logger.info("UNSCHEDULED TASKS:\n %s" % "\n ".join(sorted(set(all_tasks.keys()) -
+ set(scheduled_tasks.keys()))))
+ logger.info("SCHEDULED TASKS:\n %s" % "\n ".join(sorted(scheduled_tasks.keys())))
+
+ task_id_map = build_task_graph(event, all_tasks, scheduled_tasks)
+ return task_id_map
+
+
+def get_parser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--event-path",
+ help="Path to file containing serialized GitHub event")
+ parser.add_argument("--dry-run", action="store_true",
+ help="Don't actually create the tasks, just output the tasks that "
+ "would be created")
+ parser.add_argument("--tasks-path",
+ help="Path to file in which to write payload for all scheduled tasks")
+ return parser
+
+
+def run(venv, **kwargs):
+ queue = taskcluster.Queue({'rootUrl': os.environ['TASKCLUSTER_PROXY_URL']})
+ event = get_event(queue, event_path=kwargs["event_path"])
+
+ task_id_map = decide(event)
+
+ try:
+ if not kwargs["dry_run"]:
+ create_tasks(queue, task_id_map)
+ else:
+ print(json.dumps(task_id_map, indent=2))
+ finally:
+ if kwargs["tasks_path"]:
+ with open(kwargs["tasks_path"], "w") as f:
+ json.dump(task_id_map, f, indent=2)
diff --git a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py b/tests/wpt/web-platform-tests/tools/ci/tc/download.py
index 256726da7b5..359ec334050 100644
--- a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/download.py
@@ -15,6 +15,7 @@ logger = logging.getLogger("tc-download")
# be https://community-tc.services.mozilla.com)
TASKCLUSTER_ROOT_URL = 'https://taskcluster.net'
+
def get_parser():
parser = argparse.ArgumentParser()
parser.add_argument("--ref", action="store", default="master",
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/taskgraph.py b/tests/wpt/web-platform-tests/tools/ci/tc/taskgraph.py
new file mode 100644
index 00000000000..6a6cb497f2d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/taskgraph.py
@@ -0,0 +1,170 @@
+import json
+import os
+import re
+from copy import deepcopy
+
+import six
+import yaml
+from six import iteritems
+
+here = os.path.dirname(__file__)
+
+
+def first(iterable):
+ # First item from a list or iterator
+ if not hasattr(iterable, "next"):
+ if hasattr(iterable, "__iter__"):
+ iterable = iter(iterable)
+ else:
+ raise ValueError("Object isn't iterable")
+ return next(iterable)
+
+
+def load_task_file(path):
+ with open(path) as f:
+ return yaml.safe_load(f)
+
+
+def update_recursive(data, update_data):
+ for key, value in iteritems(update_data):
+ if key not in data:
+ data[key] = value
+ else:
+ initial_value = data[key]
+ if isinstance(value, dict):
+ if not isinstance(initial_value, dict):
+ raise ValueError("Variable %s has inconsistent types "
+ "(expected object)" % key)
+ update_recursive(initial_value, value)
+ elif isinstance(value, list):
+ if not isinstance(initial_value, list):
+ raise ValueError("Variable %s has inconsistent types "
+ "(expected list)" % key)
+ initial_value.extend(value)
+ else:
+ data[key] = value
+
+
+def resolve_use(task_data, templates):
+ rv = {}
+ if "use" in task_data:
+ for template_name in task_data["use"]:
+ update_recursive(rv, deepcopy(templates[template_name]))
+ update_recursive(rv, task_data)
+ rv.pop("use", None)
+ return rv
+
+
+def resolve_name(task_data, default_name):
+ if "name" not in task_data:
+ task_data["name"] = default_name
+ return task_data
+
+
+def resolve_chunks(task_data):
+ if "chunks" not in task_data:
+ return [task_data]
+ rv = []
+ total_chunks = task_data["chunks"]
+ for i in range(1, total_chunks + 1):
+ chunk_data = deepcopy(task_data)
+ chunk_data["chunks"] = {"id": i,
+ "total": total_chunks}
+ rv.append(chunk_data)
+ return rv
+
+
+def replace_vars(input_string, variables):
+ # TODO: support replacing as a non-string type?
+ variable_re = re.compile(r"(?<!\\)\${([^}]+)}")
+
+ def replacer(m):
+ var = m.group(1).split(".")
+ repl = variables
+ for part in var:
+ try:
+ repl = repl[part]
+ except Exception:
+ # Don't substitute
+ return m.group(0)
+ return str(repl)
+
+ return variable_re.sub(replacer, input_string)
+
+
+def sub_variables(data, variables):
+ if isinstance(data, six.string_types):
+ return replace_vars(data, variables)
+ if isinstance(data, list):
+ return [sub_variables(item, variables) for item in data]
+ if isinstance(data, dict):
+ return {key: sub_variables(value, variables)
+ for key, value in iteritems(data)}
+ return data
+
+
+def substitute_variables(task):
+ variables = {"vars": task.get("vars", {}),
+ "chunks": task.get("chunks", {})}
+
+ return sub_variables(task, variables)
+
+
+def expand_maps(task):
+ name = first(task.keys())
+ if name != "$map":
+ return [task]
+
+ map_data = task["$map"]
+ if set(map_data.keys()) != set(["for", "do"]):
+ raise ValueError("$map objects must have exactly two properties named 'for' "
+ "and 'do' (got %s)" % ("no properties" if not map_data.keys()
+ else ", ". join(map_data.keys())))
+ rv = []
+ for for_data in map_data["for"]:
+ do_items = map_data["do"]
+ if not isinstance(do_items, list):
+ do_items = expand_maps(do_items)
+ for do_data in do_items:
+ task_data = deepcopy(for_data)
+ if len(do_data.keys()) != 1:
+ raise ValueError("Each item in the 'do' list must be an object "
+ "with a single property")
+ name = first(do_data.keys())
+ update_recursive(task_data, deepcopy(do_data[name]))
+ rv.append({name: task_data})
+ return rv
+
+
+def load_tasks(tasks_data):
+ map_resolved_tasks = {}
+ tasks = []
+
+ for task in tasks_data["tasks"]:
+ if len(task.keys()) != 1:
+ raise ValueError("Each task must be an object with a single property")
+ for task in expand_maps(task):
+ if len(task.keys()) != 1:
+ raise ValueError("Each task must be an object with a single property")
+ name = first(task.keys())
+ data = task[name]
+ new_name = sub_variables(name, {"vars": data.get("vars", {})})
+ if new_name in map_resolved_tasks:
+ raise ValueError("Got duplicate task name %s" % new_name)
+ map_resolved_tasks[new_name] = substitute_variables(data)
+
+ for task_default_name, data in iteritems(map_resolved_tasks):
+ task = resolve_use(data, tasks_data["components"])
+ task = resolve_name(task, task_default_name)
+ tasks.extend(resolve_chunks(task))
+
+ tasks = [substitute_variables(task_data) for task_data in tasks]
+ return {task["name"]: task for task in tasks}
+
+
+def load_tasks_from_path(path):
+ return load_tasks(load_task_file(path))
+
+
+def run(venv, **kwargs):
+ print(json.dumps(load_tasks_from_path(os.path.join(here, "tasks", "test.yml")), indent=2))
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml
new file mode 100644
index 00000000000..a64ef374921
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml
@@ -0,0 +1,370 @@
+components:
+ wpt-base:
+ provisionerId: proj-wpt
+ workerType: ci
+ schedulerId: taskcluster-github
+ deadline: "24 hours"
+ image: harjgam/web-platform-tests:0.33
+ maxRunTime: 7200
+ artifacts:
+ public/results:
+ path: /home/test/artifacts
+ type: directory
+
+ wpt-testharness:
+ chunks: 16
+ vars:
+ test-type: testharness
+
+ wpt-reftest:
+ chunks: 5
+ vars:
+ test-type: reftest
+
+ wpt-wdspec:
+ chunks: 1
+ vars:
+ test-type: wdspec
+
+ run-options:
+ options:
+ xvfb: true
+ oom-killer: true
+ hosts: true
+ install-certificates: true
+
+ wpt-run:
+ name: wpt-${vars.browser}-${vars.channel}-${vars.suite}-${chunks.id}
+ options:
+ browser:
+ - ${vars.browser}
+ channel: ${vars.channel}
+ command: >-
+ ./tools/ci/taskcluster-run.py
+ ${vars.browser}
+ --
+ --channel=${vars.channel}
+ --log-wptreport=../artifacts/wpt_report.json
+ --log-wptscreenshot=../artifacts/wpt_screenshot.txt
+ --no-fail-on-unexpected
+ --this-chunk=${chunks.id}
+ --total-chunks=${chunks.total}
+ --test-type=${vars.suite}
+ trigger-master:
+ trigger:
+ branch:
+ - master
+
+ trigger-push:
+ trigger:
+ branch:
+ - triggers/${vars.browser}_${vars.channel}
+
+ trigger-daily:
+ trigger:
+ branch:
+ - epochs/daily
+
+ trigger-weekly:
+ trigger:
+ branch:
+ - epochs/weekly
+
+ trigger-pr:
+ trigger:
+ pull-request:
+
+ browser-firefox:
+ depends-on:
+ - download-firefox-${vars.channel}
+
+ browser-webkitgtk_minibrowser: {}
+
+ browser-chrome: {}
+
+ tox-python2:
+ env:
+ TOXENV: py27
+ PY_COLORS: 0
+
+ tox-python3:
+ env:
+ TOXENV: py36
+ PY_COLORS: 0
+ install:
+ - python3-pip
+
+ tests-affected:
+ options:
+ browser:
+ - ${vars.browser}
+ channel: ${vars.channel}
+ schedule-if:
+ run-job:
+ - affected_tests
+
+tasks:
+ # Run full suites on push
+ - $map:
+ for:
+ - vars:
+ suite: testharness
+ - vars:
+ suite: reftest
+ - vars:
+ suite: wdspec
+ do:
+ $map:
+ for:
+ - vars:
+ browser: firefox
+ channel: nightly
+ use:
+ - trigger-master
+ - trigger-push
+ - vars:
+ browser: firefox
+ channel: beta
+ use:
+ - trigger-weekly
+ - trigger-push
+ - vars:
+ browser: firefox
+ channel: stable
+ use:
+ - trigger-daily
+ - trigger-push
+ - vars:
+ browser: chrome
+ channel: dev
+ use:
+ - trigger-master
+ - trigger-push
+ - vars:
+ browser: chrome
+ channel: beta
+ use:
+ - trigger-weekly
+ - trigger-push
+ - vars:
+ browser: chrome
+ channel: stable
+ use:
+ - trigger-daily
+ - trigger-push
+ - vars:
+ browser: webkitgtk_minibrowser
+ channel: nightly
+ use:
+ - trigger-daily
+ - trigger-push
+ - vars:
+ browser: webkitgtk_minibrowser
+ channel: stable
+ use:
+ - trigger-weekly
+ - trigger-push
+
+ do:
+ - ${vars.browser}-${vars.channel}-${vars.suite}:
+ use:
+ - wpt-base
+ - run-options
+ - wpt-run
+ - browser-${vars.browser}
+ - wpt-${vars.suite}
+ description: >-
+ A subset of WPT's "${vars.suite}" tests (chunk number ${chunks.id}
+ of ${chunks.total}), run in the ${vars.channel} release of
+ ${vars.browser}.
+
+ - $map:
+ for:
+ - vars:
+ browser: firefox
+ channel: nightly
+ - vars:
+ browser: chrome
+ channel: dev
+ do:
+ - wpt-${vars.browser}-${vars.channel}-stability:
+ use:
+ - wpt-base
+ - run-options
+ - browser-${vars.browser}
+ - trigger-pr
+ - tests-affected
+ description: >-
+ Verify that all tests affected by a pull request are stable
+ when executed in ${vars.browser}.
+ command: >-
+ ./tools/ci/taskcluster-run.py
+ --commit-range base_head
+ ${vars.browser}
+ --
+ --channel=${vars.channel}
+ --verify
+
+ - wpt-${vars.browser}-${vars.channel}-results:
+ use:
+ - wpt-base
+ - run-options
+ - browser-${vars.browser}
+ - trigger-pr
+ - tests-affected
+ description: >-
+ Collect results for all tests affected by a pull request in
+ ${vars.browser}.
+ command: >-
+ ./tools/ci/taskcluster-run.py
+ --commit-range base_head
+ ${vars.browser}
+ --
+ --channel=${vars.channel}
+ --no-fail-on-unexpected
+ --log-wptreport=../artifacts/wpt_report.json
+ --log-wptscreenshot=../artifacts/wpt_screenshot.txt
+
+ - wpt-${vars.browser}-${vars.channel}-results-without-changes:
+ use:
+ - wpt-base
+ - run-options
+ - browser-${vars.browser}
+ - trigger-pr
+ - tests-affected
+ options:
+ checkout: base_head
+ description: >-
+ Collect results for all tests affected by a pull request in
+ ${vars.browser} but without the changes in the PR.
+ command: >-
+ ./tools/ci/taskcluster-run.py
+ --commit-range task_head
+ ${vars.browser}
+ --
+ --channel=${vars.channel}
+ --no-fail-on-unexpected
+ --log-wptreport=../artifacts/wpt_report.json
+ --log-wptscreenshot=../artifacts/wpt_screenshot.txt
+ - $map:
+ for:
+ - vars:
+ channel: nightly
+ - vars:
+ channel: beta
+ - vars:
+ channel: stable
+ do:
+ download-firefox-${vars.channel}:
+ use:
+ - wpt-base
+ command: "./wpt install --download-only --destination /home/test/artifacts/ --channel=${vars.channel} firefox browser"
+
+ - lint:
+ use:
+ - wpt-base
+ - trigger-master
+ - trigger-pr
+ description: >-
+ Lint for wpt-specific requirements
+ command: "./wpt lint --all"
+
+ - update-built:
+ use:
+ - wpt-base
+ - trigger-pr
+ schedule-if:
+ run-job:
+ - update_built
+ command: "./tools/ci/ci_built_diff.sh"
+
+ - tools/ unittests (Python 2):
+ use:
+ - wpt-base
+ - trigger-pr
+ - tox-python2
+ description: >-
+ Unit tests for tools running under Python 2.7, excluding wptrunner
+ command: ./tools/ci/ci_tools_unittest.sh
+ env:
+ HYPOTHESIS_PROFILE: ci
+ schedule-if:
+ run-job:
+ - tools_unittest
+
+ - tools/ unittests (Python 3):
+ description: >-
+ Unit tests for tools running under Python 3, excluding wptrunner
+ use:
+ - wpt-base
+ - trigger-pr
+ - tox-python3
+ command: ./tools/ci/ci_tools_unittest.sh
+ env:
+ HYPOTHESIS_PROFILE: ci
+ schedule-if:
+ run-job:
+ - tools_unittest
+
+ - tools/wpt/ tests:
+ description: >-
+ Integration tests for wpt commands
+ use:
+ - wpt-base
+ - trigger-pr
+ - tox-python2
+ command: ./tools/ci/ci_wpt.sh
+ install:
+ - libnss3-tools
+ options:
+ oom-killer: true
+ browser:
+ - firefox
+ - chrome
+ channel: experimental
+ xvfb: true
+ hosts: true
+ schedule-if:
+ run-job:
+ - wpt_integration
+
+ - resources/ tests:
+ description: >-
+ Tests for testharness.js and other files in resources/
+ use:
+ - wpt-base
+ - trigger-pr
+ - tox-python2
+ command: ./tools/ci/ci_resources_unittest.sh
+ options:
+ browser:
+ - firefox
+ xvfb: true
+ hosts: true
+ schedule-if:
+ run-job:
+ - resources_unittest
+
+ - infrastructure/ tests:
+ description: >-
+ Smoketests for wptrunner
+ use:
+ - wpt-base
+ - trigger-pr
+ - tox-python2
+ command: ./tools/ci/ci_wptrunner_infrastructure.sh
+ install:
+ - libnss3-tools
+ - libappindicator1
+ - fonts-liberation
+ options:
+ oom-killer: true
+ browser:
+ - firefox
+ - chrome
+ channel: experimental
+ xvfb: true
+ hosts: false
+ schedule-if:
+ run-job:
+ - wptrunner_infrastructure
diff --git a/tests/wpt/web-platform-tests/tools/taskcluster/testdata/master_push_event.json b/tests/wpt/web-platform-tests/tools/ci/tc/testdata/master_push_event.json
index 8e79f753734..8e79f753734 100644
--- a/tests/wpt/web-platform-tests/tools/taskcluster/testdata/master_push_event.json
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/testdata/master_push_event.json
diff --git a/tests/wpt/web-platform-tests/tools/taskcluster/testdata/pr_event.json b/tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event.json
index 5acc1a60102..5acc1a60102 100644
--- a/tests/wpt/web-platform-tests/tools/taskcluster/testdata/pr_event.json
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event.json
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event_tests_affected.json b/tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event_tests_affected.json
new file mode 100644
index 00000000000..792ea1bccce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/testdata/pr_event_tests_affected.json
@@ -0,0 +1,505 @@
+{
+ "action": "synchronize",
+ "number": 20378,
+ "pull_request": {
+ "url": "https://api.github.com/repos/web-platform-tests/wpt/pulls/20378",
+ "id": 344287920,
+ "node_id": "MDExOlB1bGxSZXF1ZXN0MzQ0Mjg3OTIw",
+ "html_url": "https://github.com/web-platform-tests/wpt/pull/20378",
+ "diff_url": "https://github.com/web-platform-tests/wpt/pull/20378.diff",
+ "patch_url": "https://github.com/web-platform-tests/wpt/pull/20378.patch",
+ "issue_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/20378",
+ "number": 20378,
+ "state": "open",
+ "locked": false,
+ "title": "Migrate more layout instability tests to WPT.",
+ "user": {
+ "login": "chromium-wpt-export-bot",
+ "id": 25752892,
+ "node_id": "MDQ6VXNlcjI1NzUyODky",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/25752892?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/chromium-wpt-export-bot",
+ "html_url": "https://github.com/chromium-wpt-export-bot",
+ "followers_url": "https://api.github.com/users/chromium-wpt-export-bot/followers",
+ "following_url": "https://api.github.com/users/chromium-wpt-export-bot/following{/other_user}",
+ "gists_url": "https://api.github.com/users/chromium-wpt-export-bot/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/chromium-wpt-export-bot/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/chromium-wpt-export-bot/subscriptions",
+ "organizations_url": "https://api.github.com/users/chromium-wpt-export-bot/orgs",
+ "repos_url": "https://api.github.com/users/chromium-wpt-export-bot/repos",
+ "events_url": "https://api.github.com/users/chromium-wpt-export-bot/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/chromium-wpt-export-bot/received_events",
+ "type": "User",
+ "site_admin": false
+ },
+ "body": "Bug: 984109\nChange-Id: Ie31c63995f63f8acbfa26d97966ffe30016edd3c\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1925447\nCommit-Queue: Steve Kobes \\<skobes@chromium.org>\nReviewed-by: Nicolás Peña Moreno \\<npm@chromium.org>\nCr-Commit-Position: refs/heads/master@{#718648}\n\n",
+ "created_at": "2019-11-21T23:53:58Z",
+ "updated_at": "2019-11-25T15:54:19Z",
+ "closed_at": null,
+ "merged_at": null,
+ "merge_commit_sha": "36726e3e992a83e80608acf47c886fc440390691",
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "requested_reviewers": [
+
+ ],
+ "requested_teams": [
+
+ ],
+ "labels": [
+ {
+ "id": 490891502,
+ "node_id": "MDU6TGFiZWw0OTA4OTE1MDI=",
+ "url": "https://api.github.com/repos/web-platform-tests/wpt/labels/chromium-export",
+ "name": "chromium-export",
+ "color": "4788f4",
+ "default": false,
+ "description": null
+ },
+ {
+ "id": 1363199651,
+ "node_id": "MDU6TGFiZWwxMzYzMTk5NjUx",
+ "url": "https://api.github.com/repos/web-platform-tests/wpt/labels/layout-instability",
+ "name": "layout-instability",
+ "color": "ededed",
+ "default": false,
+ "description": null
+ }
+ ],
+ "milestone": null,
+ "commits_url": "https://api.github.com/repos/web-platform-tests/wpt/pulls/20378/commits",
+ "review_comments_url": "https://api.github.com/repos/web-platform-tests/wpt/pulls/20378/comments",
+ "review_comment_url": "https://api.github.com/repos/web-platform-tests/wpt/pulls/comments{/number}",
+ "comments_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/20378/comments",
+ "statuses_url": "https://api.github.com/repos/web-platform-tests/wpt/statuses/7df84e3f87f05860a2b86d0b80dc3eb06d8e7103",
+ "head": {
+ "label": "web-platform-tests:chromium-export-cl-1925447",
+ "ref": "chromium-export-cl-1925447",
+ "sha": "7df84e3f87f05860a2b86d0b80dc3eb06d8e7103",
+ "user": {
+ "login": "web-platform-tests",
+ "id": 37226233,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3MjI2MjMz",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/37226233?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/web-platform-tests",
+ "html_url": "https://github.com/web-platform-tests",
+ "followers_url": "https://api.github.com/users/web-platform-tests/followers",
+ "following_url": "https://api.github.com/users/web-platform-tests/following{/other_user}",
+ "gists_url": "https://api.github.com/users/web-platform-tests/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/web-platform-tests/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/web-platform-tests/subscriptions",
+ "organizations_url": "https://api.github.com/users/web-platform-tests/orgs",
+ "repos_url": "https://api.github.com/users/web-platform-tests/repos",
+ "events_url": "https://api.github.com/users/web-platform-tests/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/web-platform-tests/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 3618133,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzNjE4MTMz",
+ "name": "wpt",
+ "full_name": "web-platform-tests/wpt",
+ "private": false,
+ "owner": {
+ "login": "web-platform-tests",
+ "id": 37226233,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3MjI2MjMz",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/37226233?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/web-platform-tests",
+ "html_url": "https://github.com/web-platform-tests",
+ "followers_url": "https://api.github.com/users/web-platform-tests/followers",
+ "following_url": "https://api.github.com/users/web-platform-tests/following{/other_user}",
+ "gists_url": "https://api.github.com/users/web-platform-tests/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/web-platform-tests/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/web-platform-tests/subscriptions",
+ "organizations_url": "https://api.github.com/users/web-platform-tests/orgs",
+ "repos_url": "https://api.github.com/users/web-platform-tests/repos",
+ "events_url": "https://api.github.com/users/web-platform-tests/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/web-platform-tests/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/web-platform-tests/wpt",
+ "description": "Test suites for Web platform specs — including WHATWG, W3C, and others",
+ "fork": false,
+ "url": "https://api.github.com/repos/web-platform-tests/wpt",
+ "forks_url": "https://api.github.com/repos/web-platform-tests/wpt/forks",
+ "keys_url": "https://api.github.com/repos/web-platform-tests/wpt/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/web-platform-tests/wpt/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/web-platform-tests/wpt/teams",
+ "hooks_url": "https://api.github.com/repos/web-platform-tests/wpt/hooks",
+ "issue_events_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/web-platform-tests/wpt/events",
+ "assignees_url": "https://api.github.com/repos/web-platform-tests/wpt/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/web-platform-tests/wpt/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/web-platform-tests/wpt/tags",
+ "blobs_url": "https://api.github.com/repos/web-platform-tests/wpt/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/web-platform-tests/wpt/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/web-platform-tests/wpt/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/web-platform-tests/wpt/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/web-platform-tests/wpt/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/web-platform-tests/wpt/languages",
+ "stargazers_url": "https://api.github.com/repos/web-platform-tests/wpt/stargazers",
+ "contributors_url": "https://api.github.com/repos/web-platform-tests/wpt/contributors",
+ "subscribers_url": "https://api.github.com/repos/web-platform-tests/wpt/subscribers",
+ "subscription_url": "https://api.github.com/repos/web-platform-tests/wpt/subscription",
+ "commits_url": "https://api.github.com/repos/web-platform-tests/wpt/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/web-platform-tests/wpt/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/web-platform-tests/wpt/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/web-platform-tests/wpt/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/web-platform-tests/wpt/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/web-platform-tests/wpt/merges",
+ "archive_url": "https://api.github.com/repos/web-platform-tests/wpt/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/web-platform-tests/wpt/downloads",
+ "issues_url": "https://api.github.com/repos/web-platform-tests/wpt/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/web-platform-tests/wpt/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/web-platform-tests/wpt/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/web-platform-tests/wpt/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/web-platform-tests/wpt/labels{/name}",
+ "releases_url": "https://api.github.com/repos/web-platform-tests/wpt/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/web-platform-tests/wpt/deployments",
+ "created_at": "2012-03-04T12:58:11Z",
+ "updated_at": "2019-11-25T15:40:59Z",
+ "pushed_at": "2019-11-25T15:54:18Z",
+ "git_url": "git://github.com/web-platform-tests/wpt.git",
+ "ssh_url": "git@github.com:web-platform-tests/wpt.git",
+ "clone_url": "https://github.com/web-platform-tests/wpt.git",
+ "svn_url": "https://github.com/web-platform-tests/wpt",
+ "homepage": "https://web-platform-tests.org/",
+ "size": 329278,
+ "stargazers_count": 2536,
+ "watchers_count": 2536,
+ "language": "HTML",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": true,
+ "forks_count": 1837,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 1576,
+ "license": {
+ "key": "other",
+ "name": "Other",
+ "spdx_id": "NOASSERTION",
+ "url": null,
+ "node_id": "MDc6TGljZW5zZTA="
+ },
+ "forks": 1837,
+ "open_issues": 1576,
+ "watchers": 2536,
+ "default_branch": "master"
+ }
+ },
+ "base": {
+ "label": "web-platform-tests:master",
+ "ref": "master",
+ "sha": "90ebe5c33c44090271759f8e9dc43d0b5bd0f8f7",
+ "user": {
+ "login": "web-platform-tests",
+ "id": 37226233,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3MjI2MjMz",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/37226233?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/web-platform-tests",
+ "html_url": "https://github.com/web-platform-tests",
+ "followers_url": "https://api.github.com/users/web-platform-tests/followers",
+ "following_url": "https://api.github.com/users/web-platform-tests/following{/other_user}",
+ "gists_url": "https://api.github.com/users/web-platform-tests/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/web-platform-tests/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/web-platform-tests/subscriptions",
+ "organizations_url": "https://api.github.com/users/web-platform-tests/orgs",
+ "repos_url": "https://api.github.com/users/web-platform-tests/repos",
+ "events_url": "https://api.github.com/users/web-platform-tests/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/web-platform-tests/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "repo": {
+ "id": 3618133,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzNjE4MTMz",
+ "name": "wpt",
+ "full_name": "web-platform-tests/wpt",
+ "private": false,
+ "owner": {
+ "login": "web-platform-tests",
+ "id": 37226233,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3MjI2MjMz",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/37226233?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/web-platform-tests",
+ "html_url": "https://github.com/web-platform-tests",
+ "followers_url": "https://api.github.com/users/web-platform-tests/followers",
+ "following_url": "https://api.github.com/users/web-platform-tests/following{/other_user}",
+ "gists_url": "https://api.github.com/users/web-platform-tests/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/web-platform-tests/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/web-platform-tests/subscriptions",
+ "organizations_url": "https://api.github.com/users/web-platform-tests/orgs",
+ "repos_url": "https://api.github.com/users/web-platform-tests/repos",
+ "events_url": "https://api.github.com/users/web-platform-tests/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/web-platform-tests/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/web-platform-tests/wpt",
+ "description": "Test suites for Web platform specs — including WHATWG, W3C, and others",
+ "fork": false,
+ "url": "https://api.github.com/repos/web-platform-tests/wpt",
+ "forks_url": "https://api.github.com/repos/web-platform-tests/wpt/forks",
+ "keys_url": "https://api.github.com/repos/web-platform-tests/wpt/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/web-platform-tests/wpt/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/web-platform-tests/wpt/teams",
+ "hooks_url": "https://api.github.com/repos/web-platform-tests/wpt/hooks",
+ "issue_events_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/web-platform-tests/wpt/events",
+ "assignees_url": "https://api.github.com/repos/web-platform-tests/wpt/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/web-platform-tests/wpt/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/web-platform-tests/wpt/tags",
+ "blobs_url": "https://api.github.com/repos/web-platform-tests/wpt/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/web-platform-tests/wpt/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/web-platform-tests/wpt/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/web-platform-tests/wpt/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/web-platform-tests/wpt/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/web-platform-tests/wpt/languages",
+ "stargazers_url": "https://api.github.com/repos/web-platform-tests/wpt/stargazers",
+ "contributors_url": "https://api.github.com/repos/web-platform-tests/wpt/contributors",
+ "subscribers_url": "https://api.github.com/repos/web-platform-tests/wpt/subscribers",
+ "subscription_url": "https://api.github.com/repos/web-platform-tests/wpt/subscription",
+ "commits_url": "https://api.github.com/repos/web-platform-tests/wpt/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/web-platform-tests/wpt/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/web-platform-tests/wpt/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/web-platform-tests/wpt/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/web-platform-tests/wpt/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/web-platform-tests/wpt/merges",
+ "archive_url": "https://api.github.com/repos/web-platform-tests/wpt/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/web-platform-tests/wpt/downloads",
+ "issues_url": "https://api.github.com/repos/web-platform-tests/wpt/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/web-platform-tests/wpt/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/web-platform-tests/wpt/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/web-platform-tests/wpt/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/web-platform-tests/wpt/labels{/name}",
+ "releases_url": "https://api.github.com/repos/web-platform-tests/wpt/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/web-platform-tests/wpt/deployments",
+ "created_at": "2012-03-04T12:58:11Z",
+ "updated_at": "2019-11-25T15:40:59Z",
+ "pushed_at": "2019-11-25T15:54:18Z",
+ "git_url": "git://github.com/web-platform-tests/wpt.git",
+ "ssh_url": "git@github.com:web-platform-tests/wpt.git",
+ "clone_url": "https://github.com/web-platform-tests/wpt.git",
+ "svn_url": "https://github.com/web-platform-tests/wpt",
+ "homepage": "https://web-platform-tests.org/",
+ "size": 329278,
+ "stargazers_count": 2536,
+ "watchers_count": 2536,
+ "language": "HTML",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": true,
+ "forks_count": 1837,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 1576,
+ "license": {
+ "key": "other",
+ "name": "Other",
+ "spdx_id": "NOASSERTION",
+ "url": null,
+ "node_id": "MDc6TGljZW5zZTA="
+ },
+ "forks": 1837,
+ "open_issues": 1576,
+ "watchers": 2536,
+ "default_branch": "master"
+ }
+ },
+ "_links": {
+ "self": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/pulls/20378"
+ },
+ "html": {
+ "href": "https://github.com/web-platform-tests/wpt/pull/20378"
+ },
+ "issue": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/issues/20378"
+ },
+ "comments": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/issues/20378/comments"
+ },
+ "review_comments": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/pulls/20378/comments"
+ },
+ "review_comment": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/pulls/comments{/number}"
+ },
+ "commits": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/pulls/20378/commits"
+ },
+ "statuses": {
+ "href": "https://api.github.com/repos/web-platform-tests/wpt/statuses/7df84e3f87f05860a2b86d0b80dc3eb06d8e7103"
+ }
+ },
+ "author_association": "COLLABORATOR",
+ "draft": false,
+ "merged": false,
+ "mergeable": null,
+ "rebaseable": null,
+ "mergeable_state": "unknown",
+ "merged_by": null,
+ "comments": 0,
+ "review_comments": 0,
+ "maintainer_can_modify": false,
+ "commits": 1,
+ "additions": 431,
+ "deletions": 0,
+ "changed_files": 11
+ },
+ "before": "86742511fa37e1e2c1635b77431bd46958ecfb92",
+ "after": "7df84e3f87f05860a2b86d0b80dc3eb06d8e7103",
+ "repository": {
+ "id": 3618133,
+ "node_id": "MDEwOlJlcG9zaXRvcnkzNjE4MTMz",
+ "name": "wpt",
+ "full_name": "web-platform-tests/wpt",
+ "private": false,
+ "owner": {
+ "login": "web-platform-tests",
+ "id": 37226233,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3MjI2MjMz",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/37226233?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/web-platform-tests",
+ "html_url": "https://github.com/web-platform-tests",
+ "followers_url": "https://api.github.com/users/web-platform-tests/followers",
+ "following_url": "https://api.github.com/users/web-platform-tests/following{/other_user}",
+ "gists_url": "https://api.github.com/users/web-platform-tests/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/web-platform-tests/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/web-platform-tests/subscriptions",
+ "organizations_url": "https://api.github.com/users/web-platform-tests/orgs",
+ "repos_url": "https://api.github.com/users/web-platform-tests/repos",
+ "events_url": "https://api.github.com/users/web-platform-tests/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/web-platform-tests/received_events",
+ "type": "Organization",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/web-platform-tests/wpt",
+ "description": "Test suites for Web platform specs — including WHATWG, W3C, and others",
+ "fork": false,
+ "url": "https://api.github.com/repos/web-platform-tests/wpt",
+ "forks_url": "https://api.github.com/repos/web-platform-tests/wpt/forks",
+ "keys_url": "https://api.github.com/repos/web-platform-tests/wpt/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/web-platform-tests/wpt/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/web-platform-tests/wpt/teams",
+ "hooks_url": "https://api.github.com/repos/web-platform-tests/wpt/hooks",
+ "issue_events_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/web-platform-tests/wpt/events",
+ "assignees_url": "https://api.github.com/repos/web-platform-tests/wpt/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/web-platform-tests/wpt/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/web-platform-tests/wpt/tags",
+ "blobs_url": "https://api.github.com/repos/web-platform-tests/wpt/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/web-platform-tests/wpt/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/web-platform-tests/wpt/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/web-platform-tests/wpt/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/web-platform-tests/wpt/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/web-platform-tests/wpt/languages",
+ "stargazers_url": "https://api.github.com/repos/web-platform-tests/wpt/stargazers",
+ "contributors_url": "https://api.github.com/repos/web-platform-tests/wpt/contributors",
+ "subscribers_url": "https://api.github.com/repos/web-platform-tests/wpt/subscribers",
+ "subscription_url": "https://api.github.com/repos/web-platform-tests/wpt/subscription",
+ "commits_url": "https://api.github.com/repos/web-platform-tests/wpt/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/web-platform-tests/wpt/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/web-platform-tests/wpt/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/web-platform-tests/wpt/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/web-platform-tests/wpt/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/web-platform-tests/wpt/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/web-platform-tests/wpt/merges",
+ "archive_url": "https://api.github.com/repos/web-platform-tests/wpt/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/web-platform-tests/wpt/downloads",
+ "issues_url": "https://api.github.com/repos/web-platform-tests/wpt/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/web-platform-tests/wpt/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/web-platform-tests/wpt/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/web-platform-tests/wpt/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/web-platform-tests/wpt/labels{/name}",
+ "releases_url": "https://api.github.com/repos/web-platform-tests/wpt/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/web-platform-tests/wpt/deployments",
+ "created_at": "2012-03-04T12:58:11Z",
+ "updated_at": "2019-11-25T15:40:59Z",
+ "pushed_at": "2019-11-25T15:54:18Z",
+ "git_url": "git://github.com/web-platform-tests/wpt.git",
+ "ssh_url": "git@github.com:web-platform-tests/wpt.git",
+ "clone_url": "https://github.com/web-platform-tests/wpt.git",
+ "svn_url": "https://github.com/web-platform-tests/wpt",
+ "homepage": "https://web-platform-tests.org/",
+ "size": 329278,
+ "stargazers_count": 2536,
+ "watchers_count": 2536,
+ "language": "HTML",
+ "has_issues": true,
+ "has_projects": true,
+ "has_downloads": true,
+ "has_wiki": true,
+ "has_pages": true,
+ "forks_count": 1837,
+ "mirror_url": null,
+ "archived": false,
+ "disabled": false,
+ "open_issues_count": 1576,
+ "license": {
+ "key": "other",
+ "name": "Other",
+ "spdx_id": "NOASSERTION",
+ "url": null,
+ "node_id": "MDc6TGljZW5zZTA="
+ },
+ "forks": 1837,
+ "open_issues": 1576,
+ "watchers": 2536,
+ "default_branch": "master"
+ },
+ "organization": {
+ "login": "web-platform-tests",
+ "id": 37226233,
+ "node_id": "MDEyOk9yZ2FuaXphdGlvbjM3MjI2MjMz",
+ "url": "https://api.github.com/orgs/web-platform-tests",
+ "repos_url": "https://api.github.com/orgs/web-platform-tests/repos",
+ "events_url": "https://api.github.com/orgs/web-platform-tests/events",
+ "hooks_url": "https://api.github.com/orgs/web-platform-tests/hooks",
+ "issues_url": "https://api.github.com/orgs/web-platform-tests/issues",
+ "members_url": "https://api.github.com/orgs/web-platform-tests/members{/member}",
+ "public_members_url": "https://api.github.com/orgs/web-platform-tests/public_members{/member}",
+ "avatar_url": "https://avatars0.githubusercontent.com/u/37226233?v=4",
+ "description": ""
+ },
+ "sender": {
+ "login": "chromium-wpt-export-bot",
+ "id": 25752892,
+ "node_id": "MDQ6VXNlcjI1NzUyODky",
+ "avatar_url": "https://avatars1.githubusercontent.com/u/25752892?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/chromium-wpt-export-bot",
+ "html_url": "https://github.com/chromium-wpt-export-bot",
+ "followers_url": "https://api.github.com/users/chromium-wpt-export-bot/followers",
+ "following_url": "https://api.github.com/users/chromium-wpt-export-bot/following{/other_user}",
+ "gists_url": "https://api.github.com/users/chromium-wpt-export-bot/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/chromium-wpt-export-bot/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/chromium-wpt-export-bot/subscriptions",
+ "organizations_url": "https://api.github.com/users/chromium-wpt-export-bot/orgs",
+ "repos_url": "https://api.github.com/users/chromium-wpt-export-bot/repos",
+ "events_url": "https://api.github.com/users/chromium-wpt-export-bot/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/chromium-wpt-export-bot/received_events",
+ "type": "User",
+ "site_admin": false
+ }
+}
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_decision.py b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_decision.py
new file mode 100644
index 00000000000..425b5829edd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_decision.py
@@ -0,0 +1,54 @@
+import mock
+import pytest
+
+from tools.ci.tc import decision
+from six import iteritems
+
+
+@pytest.mark.parametrize("run_jobs,tasks,expected", [
+ ([], {"task-no-schedule-if": {}}, ["task-no-schedule-if"]),
+ ([], {"task-schedule-if-no-run-job": {"schedule-if": {}}}, []),
+ (["job"],
+ {"job-present": {"schedule-if": {"run-job": ["other-job", "job"]}}},
+ ["job-present"]),
+ (["job"], {"job-missing": {"schedule-if": {"run-job": ["other-job"]}}}, []),
+ (["all"], {"job-all": {"schedule-if": {"run-job": ["other-job"]}}}, ["job-all"]),
+ (["job"],
+ {"job-1": {"schedule-if": {"run-job": ["job"]}},
+ "job-2": {"schedule-if": {"run-job": ["other-job"]}}},
+ ["job-1"]),
+])
+def test_filter_schedule_if(run_jobs, tasks, expected):
+ with mock.patch("tools.ci.tc.decision.get_run_jobs",
+ return_value=run_jobs) as get_run_jobs:
+ assert (decision.filter_schedule_if({}, tasks) ==
+ {name: tasks[name] for name in expected})
+ get_run_jobs.call_count in (0, 1)
+
+
+@pytest.mark.parametrize("msg,expected", [
+ ("Some initial line\n\ntc-jobs:foo,bar", {"foo", "bar"}),
+ ("Some initial line\n\ntc-jobs:foo, bar", {"foo", "bar"}),
+ ("tc-jobs:foo, bar \nbaz", {"foo", "bar"}),
+ ("tc-jobs:all", {"all"}),
+ ("", set()),
+ ("tc-jobs:foo\ntc-jobs:bar", {"foo"})])
+@pytest.mark.parametrize("event", [
+ {"commits": [{"message": "<message>"}]},
+ {"pull_request": {"body": "<message>"}}
+])
+def test_extra_jobs_pr(msg, expected, event):
+ def sub(obj):
+ """Copy obj, except if it's a string with the value <message>
+ replace it with the value of the msg argument"""
+ if isinstance(obj, dict):
+ return {key: sub(value) for (key, value) in iteritems(obj)}
+ elif isinstance(obj, list):
+ return [sub(value) for value in obj]
+ elif obj == "<message>":
+ return msg
+ return obj
+
+ event = sub(event)
+
+ assert decision.get_extra_jobs(event) == expected
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_taskgraph.py b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_taskgraph.py
new file mode 100644
index 00000000000..dd8535bb647
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_taskgraph.py
@@ -0,0 +1,146 @@
+import pytest
+import yaml
+
+from tools.ci.tc import taskgraph
+
+@pytest.mark.parametrize("data, update_data, expected", [
+ ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}),
+ ({"a": 1}, {"a": 2}, {"a": 2}),
+ ({"a": [1]}, {"a": [2]}, {"a": [1, 2]}),
+ ({"a": {"b": 1, "c": 2}}, {"a": {"b": 2, "d": 3}}, {"a": {"b": 2, "c": 2, "d": 3}}),
+ ({"a": {"b": [1]}}, {"a": {"b": [2]}}, {"a": {"b": [1, 2]}}),
+]
+)
+def test_update_recursive(data, update_data, expected):
+ taskgraph.update_recursive(data, update_data)
+ assert data == expected
+
+
+def test_use():
+ data = """
+components:
+ component1:
+ a: 1
+ b: [1]
+ c: "c"
+ component2:
+ a: 2
+ b: [2]
+ d: "d"
+tasks:
+ - task1:
+ use:
+ - component1
+ - component2
+ b: [3]
+ c: "e"
+"""
+ tasks_data = yaml.safe_load(data)
+ assert taskgraph.load_tasks(tasks_data) == {
+ "task1": {
+ "a": 2,
+ "b": [1,2,3],
+ "c": "e",
+ "d": "d",
+ "name": "task1"
+ }
+ }
+
+
+def test_var():
+ data = """
+components:
+ component1:
+ a: ${vars.value}
+tasks:
+ - task1:
+ use:
+ - component1
+ vars:
+ value: 1
+"""
+ tasks_data = yaml.safe_load(data)
+ assert taskgraph.load_tasks(tasks_data) == {
+ "task1": {
+ "a": "1",
+ "vars": {"value": 1},
+ "name": "task1"
+ }
+ }
+
+
+def test_map():
+ data = """
+components: {}
+tasks:
+ - $map:
+ for:
+ - vars:
+ a: 1
+ b: [1]
+ - vars:
+ a: 2
+ b: [2]
+ do:
+ - task1-${vars.a}:
+ a: ${vars.a}
+ b: [3]
+ - task2-${vars.a}:
+ a: ${vars.a}
+ b: [4]
+"""
+ tasks_data = yaml.safe_load(data)
+ assert taskgraph.load_tasks(tasks_data) == {
+ "task1-1": {
+ "a": "1",
+ "b": [1, 3],
+ "vars": {"a": 1},
+ "name": "task1-1"
+ },
+ "task1-2": {
+ "a": "2",
+ "b": [2, 3],
+ "vars": {"a": 2},
+ "name": "task1-2"
+ },
+ "task2-1": {
+ "a": "1",
+ "b": [1, 4],
+ "vars": {"a": 1},
+ "name": "task2-1"
+ },
+ "task2-2": {
+ "a": "2",
+ "b": [2, 4],
+ "vars": {"a": 2},
+ "name": "task2-2"
+ },
+
+ }
+
+
+def test_chunks():
+ data = """
+components: {}
+tasks:
+ - task1:
+ name: task1-${chunks.id}
+ chunks: 2
+"""
+ tasks_data = yaml.safe_load(data)
+ assert taskgraph.load_tasks(tasks_data) == {
+ "task1-1": {
+ "name": "task1-1",
+ "chunks": {
+ "id": 1,
+ "total": 2
+ }
+ },
+ "task1-2": {
+ "name": "task1-2",
+ "chunks": {
+ "id": 2,
+ "total": 2
+ }
+ }
+ }
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py
new file mode 100644
index 00000000000..9480178206d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py
@@ -0,0 +1,152 @@
+import json
+import os
+
+import jsone
+import mock
+import pytest
+import requests
+import sys
+import yaml
+from jsonschema import validate
+
+from tools.ci.tc import decision
+
+here = os.path.dirname(__file__)
+root = os.path.abspath(os.path.join(here, "..", "..", "..", ".."))
+
+
+def data_path(filename):
+ return os.path.join(here, "..", "testdata", filename)
+
+
+@pytest.mark.xfail(sys.version_info.major == 2,
+ reason="taskcluster library has an encoding bug "
+ "https://github.com/taskcluster/json-e/issues/338")
+def test_verify_taskcluster_yml():
+ """Verify that the json-e in the .taskcluster.yml is valid"""
+ with open(os.path.join(root, ".taskcluster.yml")) as f:
+ template = yaml.safe_load(f)
+
+ events = [("pr_event.json", "github-pull-request", "Pull Request"),
+ ("master_push_event.json", "github-push", "Push to master")]
+
+ for filename, tasks_for, title in events:
+ with open(data_path(filename)) as f:
+ event = json.load(f)
+
+ context = {"tasks_for": tasks_for,
+ "event": event,
+ "as_slugid": lambda x: x}
+
+ jsone.render(template, context)
+
+
+def test_verify_payload():
+ """Verify that the decision task produces tasks with a valid payload"""
+ from tools.ci.tc.decision import decide
+
+ create_task_schema = requests.get(
+ "https://raw.githubusercontent.com/taskcluster/taskcluster/blob/master/services/queue/schemas/v1/create-task-request.yml")
+ create_task_schema = yaml.safe_load(create_task_schema.content)
+
+ payload_schema = requests.get("https://raw.githubusercontent.com/taskcluster/docker-worker/master/schemas/v1/payload.json").json()
+
+ jobs = ["lint",
+ "manifest_upload",
+ "resources_unittest",
+ "tools_unittest",
+ "wpt_integration",
+ "wptrunner_infrastructure",
+ "wptrunner_unittest"]
+
+ for filename in ["pr_event.json", "master_push_event.json"]:
+ with open(data_path(filename)) as f:
+ event = json.load(f)
+
+ with mock.patch("tools.ci.tc.decision.get_fetch_rev", return_value=(event["after"], None)):
+ with mock.patch("tools.ci.tc.decision.get_run_jobs", return_value=set(jobs)):
+ task_id_map = decide(event)
+ for name, (task_id, task_data) in task_id_map.items():
+ try:
+ validate(instance=task_data, schema=create_task_schema)
+ validate(instance=task_data["payload"], schema=payload_schema)
+ except Exception as e:
+ print("Validation failed for task '%s':\n%s" % (name, json.dumps(task_data, indent=2)))
+ raise e
+
+
+@pytest.mark.parametrize("event_path,is_pr,files_changed,expected", [
+ ("master_push_event.json", False, None,
+ {'download-firefox-nightly',
+ 'wpt-firefox-nightly-testharness-1',
+ 'wpt-firefox-nightly-testharness-2',
+ 'wpt-firefox-nightly-testharness-3',
+ 'wpt-firefox-nightly-testharness-4',
+ 'wpt-firefox-nightly-testharness-5',
+ 'wpt-firefox-nightly-testharness-6',
+ 'wpt-firefox-nightly-testharness-7',
+ 'wpt-firefox-nightly-testharness-8',
+ 'wpt-firefox-nightly-testharness-9',
+ 'wpt-firefox-nightly-testharness-10',
+ 'wpt-firefox-nightly-testharness-11',
+ 'wpt-firefox-nightly-testharness-12',
+ 'wpt-firefox-nightly-testharness-13',
+ 'wpt-firefox-nightly-testharness-14',
+ 'wpt-firefox-nightly-testharness-15',
+ 'wpt-firefox-nightly-testharness-16',
+ 'wpt-chrome-dev-testharness-1',
+ 'wpt-chrome-dev-testharness-2',
+ 'wpt-chrome-dev-testharness-3',
+ 'wpt-chrome-dev-testharness-4',
+ 'wpt-chrome-dev-testharness-5',
+ 'wpt-chrome-dev-testharness-6',
+ 'wpt-chrome-dev-testharness-7',
+ 'wpt-chrome-dev-testharness-8',
+ 'wpt-chrome-dev-testharness-9',
+ 'wpt-chrome-dev-testharness-10',
+ 'wpt-chrome-dev-testharness-11',
+ 'wpt-chrome-dev-testharness-12',
+ 'wpt-chrome-dev-testharness-13',
+ 'wpt-chrome-dev-testharness-14',
+ 'wpt-chrome-dev-testharness-15',
+ 'wpt-chrome-dev-testharness-16',
+ 'wpt-firefox-nightly-reftest-1',
+ 'wpt-firefox-nightly-reftest-2',
+ 'wpt-firefox-nightly-reftest-3',
+ 'wpt-firefox-nightly-reftest-4',
+ 'wpt-firefox-nightly-reftest-5',
+ 'wpt-chrome-dev-reftest-1',
+ 'wpt-chrome-dev-reftest-2',
+ 'wpt-chrome-dev-reftest-3',
+ 'wpt-chrome-dev-reftest-4',
+ 'wpt-chrome-dev-reftest-5',
+ 'wpt-firefox-nightly-wdspec-1',
+ 'wpt-chrome-dev-wdspec-1',
+ 'lint'}),
+ ("pr_event.json", True, {".taskcluster.yml",".travis.yml","tools/ci/start.sh"},
+ {'lint',
+ 'tools/ unittests (Python 2)',
+ 'tools/ unittests (Python 3)',
+ 'tools/wpt/ tests',
+ 'resources/ tests',
+ 'infrastructure/ tests'}),
+ # More tests are affected in the actual PR but it shouldn't affect the scheduled tasks
+ ("pr_event_tests_affected.json", True, {"layout-instability/clip-negative-bottom-margin.html",
+ "layout-instability/composited-element-movement.html"},
+ {'download-firefox-nightly',
+ 'wpt-firefox-nightly-stability',
+ 'wpt-firefox-nightly-results',
+ 'wpt-firefox-nightly-results-without-changes',
+ 'wpt-chrome-dev-stability',
+ 'wpt-chrome-dev-results',
+ 'wpt-chrome-dev-results-without-changes',
+ 'lint'}),
+])
+def test_schedule_tasks(event_path, is_pr, files_changed, expected):
+ with mock.patch("tools.ci.tc.decision.get_fetch_rev", return_value=(is_pr, None)):
+ with mock.patch("tools.wpt.testfiles.repo_files_changed",
+ return_value=files_changed):
+ with open(data_path(event_path)) as event_file:
+ event = json.load(event_file)
+ scheduled = decision.decide(event)
+ assert set(scheduled.keys()) == expected
diff --git a/tests/wpt/web-platform-tests/tools/ci/tests/test_run_tc.py b/tests/wpt/web-platform-tests/tools/ci/tests/test_run_tc.py
deleted file mode 100644
index a72dcfe5cfd..00000000000
--- a/tests/wpt/web-platform-tests/tools/ci/tests/test_run_tc.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import pytest
-
-from six import iteritems
-
-from tools.ci import run_tc
-
-
-@pytest.mark.parametrize("msg,expected", [
- ("Some initial line\n\ntc-jobs:foo,bar", {"foo", "bar"}),
- ("Some initial line\n\ntc-jobs:foo, bar", {"foo", "bar"}),
- ("tc-jobs:foo, bar \nbaz", {"foo", "bar"}),
- ("tc-jobs:all", {"all"}),
- ("", set()),
- ("tc-jobs:foo\ntc-jobs:bar", {"foo"})])
-@pytest.mark.parametrize("event", [
- {"commits": [{"message": "<message>"}]},
- {"pull_request": {"body": "<message>"}}
-])
-def test_extra_jobs_pr(msg, expected, event):
- def sub(obj):
- """Copy obj, except if it's a string with the value <message>
- replace it with the value of the msg argument"""
- if isinstance(obj, dict):
- return {key: sub(value) for (key, value) in iteritems(obj)}
- elif isinstance(obj, list):
- return [sub(value) for value in obj]
- elif obj == "<message>":
- return msg
- return obj
-
- event = sub(event)
-
- assert run_tc.get_extra_jobs(event) == expected
diff --git a/tests/wpt/web-platform-tests/tools/docker/frontend.py b/tests/wpt/web-platform-tests/tools/docker/frontend.py
index c4a20734582..976156cf65a 100644
--- a/tests/wpt/web-platform-tests/tools/docker/frontend.py
+++ b/tests/wpt/web-platform-tests/tools/docker/frontend.py
@@ -29,6 +29,8 @@ def run(*args, **kwargs):
build()
args = ["docker", "run"]
+ args.extend(["--security-opt", "seccomp:%s" %
+ os.path.join(wpt_root, "tools", "docker", "seccomp.json")])
if kwargs["privileged"]:
args.append("--privileged")
if kwargs["checkout"]:
diff --git a/tests/wpt/web-platform-tests/tools/docker/seccomp.json b/tests/wpt/web-platform-tests/tools/docker/seccomp.json
new file mode 100644
index 00000000000..8e8274ce328
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/docker/seccomp.json
@@ -0,0 +1,798 @@
+{
+ "defaultAction": "SCMP_ACT_ERRNO",
+ "archMap": [
+ {
+ "architecture": "SCMP_ARCH_X86_64",
+ "subArchitectures": [
+ "SCMP_ARCH_X86",
+ "SCMP_ARCH_X32"
+ ]
+ },
+ {
+ "architecture": "SCMP_ARCH_AARCH64",
+ "subArchitectures": [
+ "SCMP_ARCH_ARM"
+ ]
+ },
+ {
+ "architecture": "SCMP_ARCH_MIPS64",
+ "subArchitectures": [
+ "SCMP_ARCH_MIPS",
+ "SCMP_ARCH_MIPS64N32"
+ ]
+ },
+ {
+ "architecture": "SCMP_ARCH_MIPS64N32",
+ "subArchitectures": [
+ "SCMP_ARCH_MIPS",
+ "SCMP_ARCH_MIPS64"
+ ]
+ },
+ {
+ "architecture": "SCMP_ARCH_MIPSEL64",
+ "subArchitectures": [
+ "SCMP_ARCH_MIPSEL",
+ "SCMP_ARCH_MIPSEL64N32"
+ ]
+ },
+ {
+ "architecture": "SCMP_ARCH_MIPSEL64N32",
+ "subArchitectures": [
+ "SCMP_ARCH_MIPSEL",
+ "SCMP_ARCH_MIPSEL64"
+ ]
+ },
+ {
+ "architecture": "SCMP_ARCH_S390X",
+ "subArchitectures": [
+ "SCMP_ARCH_S390"
+ ]
+ }
+ ],
+ "syscalls": [
+ {
+ "names": [
+ "accept",
+ "accept4",
+ "access",
+ "adjtimex",
+ "alarm",
+ "bind",
+ "brk",
+ "capget",
+ "capset",
+ "chdir",
+ "chmod",
+ "chown",
+ "chown32",
+ "clock_getres",
+ "clock_gettime",
+ "clock_nanosleep",
+ "clone",
+ "close",
+ "connect",
+ "copy_file_range",
+ "creat",
+ "dup",
+ "dup2",
+ "dup3",
+ "epoll_create",
+ "epoll_create1",
+ "epoll_ctl",
+ "epoll_ctl_old",
+ "epoll_pwait",
+ "epoll_wait",
+ "epoll_wait_old",
+ "eventfd",
+ "eventfd2",
+ "execve",
+ "execveat",
+ "exit",
+ "exit_group",
+ "faccessat",
+ "fadvise64",
+ "fadvise64_64",
+ "fallocate",
+ "fanotify_mark",
+ "fchdir",
+ "fchmod",
+ "fchmodat",
+ "fchown",
+ "fchown32",
+ "fchownat",
+ "fcntl",
+ "fcntl64",
+ "fdatasync",
+ "fgetxattr",
+ "flistxattr",
+ "flock",
+ "fork",
+ "fremovexattr",
+ "fsetxattr",
+ "fstat",
+ "fstat64",
+ "fstatat64",
+ "fstatfs",
+ "fstatfs64",
+ "fsync",
+ "ftruncate",
+ "ftruncate64",
+ "futex",
+ "futimesat",
+ "getcpu",
+ "getcwd",
+ "getdents",
+ "getdents64",
+ "getegid",
+ "getegid32",
+ "geteuid",
+ "geteuid32",
+ "getgid",
+ "getgid32",
+ "getgroups",
+ "getgroups32",
+ "getitimer",
+ "getpeername",
+ "getpgid",
+ "getpgrp",
+ "getpid",
+ "getppid",
+ "getpriority",
+ "getrandom",
+ "getresgid",
+ "getresgid32",
+ "getresuid",
+ "getresuid32",
+ "getrlimit",
+ "get_robust_list",
+ "getrusage",
+ "getsid",
+ "getsockname",
+ "getsockopt",
+ "get_thread_area",
+ "gettid",
+ "gettimeofday",
+ "getuid",
+ "getuid32",
+ "getxattr",
+ "inotify_add_watch",
+ "inotify_init",
+ "inotify_init1",
+ "inotify_rm_watch",
+ "io_cancel",
+ "ioctl",
+ "io_destroy",
+ "io_getevents",
+ "io_pgetevents",
+ "ioprio_get",
+ "ioprio_set",
+ "io_setup",
+ "io_submit",
+ "io_uring_enter",
+ "io_uring_register",
+ "io_uring_setup",
+ "ipc",
+ "kill",
+ "lchown",
+ "lchown32",
+ "lgetxattr",
+ "link",
+ "linkat",
+ "listen",
+ "listxattr",
+ "llistxattr",
+ "_llseek",
+ "lremovexattr",
+ "lseek",
+ "lsetxattr",
+ "lstat",
+ "lstat64",
+ "madvise",
+ "memfd_create",
+ "mincore",
+ "mkdir",
+ "mkdirat",
+ "mknod",
+ "mknodat",
+ "mlock",
+ "mlock2",
+ "mlockall",
+ "mmap",
+ "mmap2",
+ "mprotect",
+ "mq_getsetattr",
+ "mq_notify",
+ "mq_open",
+ "mq_timedreceive",
+ "mq_timedsend",
+ "mq_unlink",
+ "mremap",
+ "msgctl",
+ "msgget",
+ "msgrcv",
+ "msgsnd",
+ "msync",
+ "munlock",
+ "munlockall",
+ "munmap",
+ "nanosleep",
+ "newfstatat",
+ "_newselect",
+ "open",
+ "openat",
+ "pause",
+ "pipe",
+ "pipe2",
+ "poll",
+ "ppoll",
+ "prctl",
+ "pread64",
+ "preadv",
+ "preadv2",
+ "prlimit64",
+ "pselect6",
+ "pwrite64",
+ "pwritev",
+ "pwritev2",
+ "read",
+ "readahead",
+ "readlink",
+ "readlinkat",
+ "readv",
+ "recv",
+ "recvfrom",
+ "recvmmsg",
+ "recvmsg",
+ "remap_file_pages",
+ "removexattr",
+ "rename",
+ "renameat",
+ "renameat2",
+ "restart_syscall",
+ "rmdir",
+ "rt_sigaction",
+ "rt_sigpending",
+ "rt_sigprocmask",
+ "rt_sigqueueinfo",
+ "rt_sigreturn",
+ "rt_sigsuspend",
+ "rt_sigtimedwait",
+ "rt_tgsigqueueinfo",
+ "sched_getaffinity",
+ "sched_getattr",
+ "sched_getparam",
+ "sched_get_priority_max",
+ "sched_get_priority_min",
+ "sched_getscheduler",
+ "sched_rr_get_interval",
+ "sched_setaffinity",
+ "sched_setattr",
+ "sched_setparam",
+ "sched_setscheduler",
+ "sched_yield",
+ "seccomp",
+ "select",
+ "semctl",
+ "semget",
+ "semop",
+ "semtimedop",
+ "send",
+ "sendfile",
+ "sendfile64",
+ "sendmmsg",
+ "sendmsg",
+ "sendto",
+ "setfsgid",
+ "setfsgid32",
+ "setfsuid",
+ "setfsuid32",
+ "setgid",
+ "setgid32",
+ "setgroups",
+ "setgroups32",
+ "setitimer",
+ "setpgid",
+ "setpriority",
+ "setregid",
+ "setregid32",
+ "setresgid",
+ "setresgid32",
+ "setresuid",
+ "setresuid32",
+ "setreuid",
+ "setreuid32",
+ "setrlimit",
+ "set_robust_list",
+ "setsid",
+ "setsockopt",
+ "set_thread_area",
+ "set_tid_address",
+ "setuid",
+ "setuid32",
+ "setxattr",
+ "shmat",
+ "shmctl",
+ "shmdt",
+ "shmget",
+ "shutdown",
+ "sigaltstack",
+ "signalfd",
+ "signalfd4",
+ "sigprocmask",
+ "sigreturn",
+ "socket",
+ "socketcall",
+ "socketpair",
+ "splice",
+ "stat",
+ "stat64",
+ "statfs",
+ "statfs64",
+ "statx",
+ "symlink",
+ "symlinkat",
+ "sync",
+ "sync_file_range",
+ "syncfs",
+ "sysinfo",
+ "tee",
+ "tgkill",
+ "time",
+ "timer_create",
+ "timer_delete",
+ "timerfd_create",
+ "timerfd_gettime",
+ "timerfd_settime",
+ "timer_getoverrun",
+ "timer_gettime",
+ "timer_settime",
+ "times",
+ "tkill",
+ "truncate",
+ "truncate64",
+ "ugetrlimit",
+ "umask",
+ "uname",
+ "unlink",
+ "unlinkat",
+ "unshare",
+ "utime",
+ "utimensat",
+ "utimes",
+ "vfork",
+ "vmsplice",
+ "wait4",
+ "waitid",
+ "waitpid",
+ "write",
+ "writev"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": null,
+ "excludes": null
+ },
+ {
+ "names": [
+ "ptrace"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": null,
+ "comment": "",
+ "includes": {
+ "minKernel": "4.8"
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "personality"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 0,
+ "value": 0,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_EQ"
+ }
+ ],
+ "comment": "",
+ "includes": null,
+ "excludes": null
+ },
+ {
+ "names": [
+ "personality"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 0,
+ "value": 8,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_EQ"
+ }
+ ],
+ "comment": "",
+ "includes": null,
+ "excludes": null
+ },
+ {
+ "names": [
+ "personality"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 0,
+ "value": 131072,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_EQ"
+ }
+ ],
+ "comment": "",
+ "includes": null,
+ "excludes": null
+ },
+ {
+ "names": [
+ "personality"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 0,
+ "value": 131080,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_EQ"
+ }
+ ],
+ "comment": "",
+ "includes": null,
+ "excludes": null
+ },
+ {
+ "names": [
+ "personality"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 0,
+ "value": 4294967295,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_EQ"
+ }
+ ],
+ "comment": "",
+ "includes": null,
+ "excludes": null
+ },
+ {
+ "names": [
+ "sync_file_range2"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "arches": [
+ "ppc64le"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "arm_fadvise64_64",
+ "arm_sync_file_range",
+ "sync_file_range2",
+ "breakpoint",
+ "cacheflush",
+ "set_tls"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "arches": [
+ "arm",
+ "arm64"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "arch_prctl"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "arches": [
+ "amd64",
+ "x32"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "modify_ldt"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "arches": [
+ "amd64",
+ "x32",
+ "x86"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "s390_pci_mmio_read",
+ "s390_pci_mmio_write",
+ "s390_runtime_instr"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "arches": [
+ "s390",
+ "s390x"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "open_by_handle_at"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_DAC_READ_SEARCH"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "bpf",
+ "fanotify_init",
+ "lookup_dcookie",
+ "mount",
+ "name_to_handle_at",
+ "perf_event_open",
+ "quotactl",
+ "setdomainname",
+ "sethostname",
+ "setns",
+ "syslog",
+ "umount",
+ "umount2"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_ADMIN"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "clone"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 0,
+ "value": 2114060288,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_MASKED_EQ"
+ }
+ ],
+ "comment": "",
+ "includes": null,
+ "excludes": {
+ "caps": [
+ "CAP_SYS_ADMIN"
+ ],
+ "arches": [
+ "s390",
+ "s390x"
+ ]
+ }
+ },
+ {
+ "names": [
+ "clone"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [
+ {
+ "index": 1,
+ "value": 2114060288,
+ "valueTwo": 0,
+ "op": "SCMP_CMP_MASKED_EQ"
+ }
+ ],
+ "comment": "s390 parameter ordering for clone is different",
+ "includes": {
+ "arches": [
+ "s390",
+ "s390x"
+ ]
+ },
+ "excludes": {
+ "caps": [
+ "CAP_SYS_ADMIN"
+ ]
+ }
+ },
+ {
+ "names": [
+ "reboot"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_BOOT"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "chroot"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_CHROOT"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "delete_module",
+ "init_module",
+ "finit_module",
+ "query_module"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_MODULE"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "acct"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_PACCT"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "kcmp",
+ "process_vm_readv",
+ "process_vm_writev",
+ "ptrace"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_PTRACE"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "iopl",
+ "ioperm"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_RAWIO"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "settimeofday",
+ "stime",
+ "clock_settime"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_TIME"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "vhangup"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_TTY_CONFIG"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "get_mempolicy",
+ "mbind",
+ "set_mempolicy"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYS_NICE"
+ ]
+ },
+ "excludes": null
+ },
+ {
+ "names": [
+ "syslog"
+ ],
+ "action": "SCMP_ACT_ALLOW",
+ "args": [],
+ "comment": "",
+ "includes": {
+ "caps": [
+ "CAP_SYSLOG"
+ ]
+ },
+ "excludes": null
+ }
+ ]
+}
diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py
index 7689c359928..c7c0197213c 100644
--- a/tests/wpt/web-platform-tests/tools/lint/lint.py
+++ b/tests/wpt/web-platform-tests/tools/lint/lint.py
@@ -844,6 +844,7 @@ def create_parser():
help="Output markdown")
parser.add_argument("--repo-root", help="The WPT directory. Use this"
"option if the lint script exists outside the repository")
+ parser.add_argument("--ignore-glob", help="Additional file glob to ignore.")
parser.add_argument("--all", action="store_true", help="If no paths are passed, try to lint the whole "
"working directory, not just files that changed")
return parser
@@ -867,17 +868,22 @@ def main(**kwargs):
paths = lint_paths(kwargs, repo_root)
- return lint(repo_root, paths, output_format)
+ ignore_glob = kwargs.get(str("ignore_glob")) or str()
+ return lint(repo_root, paths, output_format, str(ignore_glob))
-def lint(repo_root, paths, output_format):
- # type: (str, List[str], str) -> int
+
+def lint(repo_root, paths, output_format, ignore_glob=str()):
+ # type: (str, List[str], str, str) -> int
error_count = defaultdict(int) # type: Dict[Text, int]
last = None
with open(os.path.join(repo_root, "lint.whitelist")) as f:
whitelist, ignored_files = parse_whitelist(f)
+ if ignore_glob:
+ ignored_files.add(ignore_glob)
+
output_errors = {"json": output_errors_json,
"markdown": output_errors_markdown,
"normal": output_errors_text}[output_format]
diff --git a/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py b/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py
index dbd4708cdc9..af2b7d3d4aa 100644
--- a/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py
+++ b/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py
@@ -398,6 +398,29 @@ def test_check_css_globally_unique_ignored_dir(caplog):
assert caplog.text == ""
+def test_ignore_glob(caplog):
+ # Lint two files in the ref/ directory, and pass in ignore_glob to omit one
+ # of them.
+ # When we omit absolute.html, no lint errors appear since the other file is
+ # clean.
+ with _mock_lint("check_path") as mocked_check_path:
+ with _mock_lint("check_file_contents") as mocked_check_file_contents:
+ rv = lint(_dummy_repo, ["ref/absolute.html", "ref/existent_relative.html"], "normal", "*solu*")
+ assert rv == 0
+ # Also confirm that only one file is checked
+ assert mocked_check_path.call_count == 1
+ assert mocked_check_file_contents.call_count == 1
+ assert caplog.text == ""
+ # However, linting the same two files without ignore_glob yields lint errors.
+ with _mock_lint("check_path") as mocked_check_path:
+ with _mock_lint("check_file_contents") as mocked_check_file_contents:
+ rv = lint(_dummy_repo, ["ref/absolute.html", "ref/existent_relative.html"], "normal")
+ assert rv == 1
+ assert mocked_check_path.call_count == 2
+ assert mocked_check_file_contents.call_count == 2
+ assert "ABSOLUTE-URL-REF" in caplog.text
+
+
def test_all_filesystem_paths():
with mock.patch(
'tools.lint.lint.walk',
@@ -443,7 +466,8 @@ def test_main_with_args():
m.assert_called_once_with(repo_root,
[os.path.relpath(os.path.join(os.getcwd(), x), repo_root)
for x in ['a', 'b', 'c']],
- "normal")
+ "normal",
+ str())
finally:
sys.argv = orig_argv
@@ -455,7 +479,7 @@ def test_main_no_args():
with _mock_lint('lint', return_value=True) as m:
with _mock_lint('changed_files', return_value=['foo', 'bar']):
lint_mod.main(**vars(create_parser().parse_args()))
- m.assert_called_once_with(repo_root, ['foo', 'bar'], "normal")
+ m.assert_called_once_with(repo_root, ['foo', 'bar'], "normal", str())
finally:
sys.argv = orig_argv
@@ -467,6 +491,6 @@ def test_main_all():
with _mock_lint('lint', return_value=True) as m:
with _mock_lint('all_filesystem_paths', return_value=['foo', 'bar']):
lint_mod.main(**vars(create_parser().parse_args()))
- m.assert_called_once_with(repo_root, ['foo', 'bar'], "normal")
+ m.assert_called_once_with(repo_root, ['foo', 'bar'], "normal", str())
finally:
sys.argv = orig_argv
diff --git a/tests/wpt/web-platform-tests/tools/taskcluster/commands.json b/tests/wpt/web-platform-tests/tools/taskcluster/commands.json
deleted file mode 100644
index dcbd8961fc2..00000000000
--- a/tests/wpt/web-platform-tests/tools/taskcluster/commands.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "tc-verify": {"path": "verify.py", "script": "run", "parser": "create_parser", "help": "Verify .taskcluster.yml file is parsable",
- "virtualenv": true, "install": ["json-e", "pyyaml"]}
-}
diff --git a/tests/wpt/web-platform-tests/tools/taskcluster/verify.py b/tests/wpt/web-platform-tests/tools/taskcluster/verify.py
deleted file mode 100644
index b37e45ec74c..00000000000
--- a/tests/wpt/web-platform-tests/tools/taskcluster/verify.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import argparse
-import json
-import os
-
-import jsone
-import yaml
-
-here = os.path.dirname(__file__)
-root = os.path.abspath(os.path.join(here, "..", ".."))
-
-
-def create_parser():
- return argparse.ArgumentParser()
-
-
-def run(venv, **kwargs):
- with open(os.path.join(root, ".taskcluster.yml")) as f:
- template = yaml.safe_load(f)
-
- events = [("pr_event.json", "github-pull-request", "Pull Request"),
- ("master_push_event.json", "github-push", "Push to master")]
-
- for filename, tasks_for, title in events:
- with open(os.path.join(here, "testdata", filename)) as f:
- event = json.load(f)
-
- context = {"tasks_for": tasks_for,
- "event": event,
- "as_slugid": lambda x: x}
-
- data = jsone.render(template, context)
- heading = "Got %s tasks for %s" % (len(data["tasks"]), title)
- print(heading)
- print("=" * len(heading))
- for item in data["tasks"]:
- print(json.dumps(item, indent=2))
- print("")
diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini
index 7a5c1eb648a..e8673db0a69 100644
--- a/tests/wpt/web-platform-tests/tools/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/tox.ini
@@ -8,8 +8,11 @@ deps =
pytest-cov
mock
hypothesis
- # `requests` is required by `pr_preview.py`
requests
+ taskcluster
+ pyyaml
+ json-e
+ jsonschema
commands = pytest {posargs}
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index e7d57d8638c..a94d5509cc8 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -48,6 +48,11 @@ class Browser(object):
self.logger = logger
@abstractmethod
+ def download(self, dest=None, channel=None):
+ """Download a package or installer for the browser"""
+ return NotImplemented
+
+ @abstractmethod
def install(self, dest=None):
"""Install the browser."""
return NotImplemented
@@ -116,11 +121,19 @@ class Firefox(Browser):
return "%s%s" % (self.platform, bits)
- def install(self, dest=None, channel="nightly"):
- """Install Firefox."""
+ def _get_dest(self, dest, channel):
+ if dest is None:
+ # os.getcwd() doesn't include the venv path
+ dest = os.path.join(os.getcwd(), "_venv")
- import mozinstall
+ dest = os.path.join(dest, "browsers", channel)
+ if not os.path.exists(dest):
+ os.makedirs(dest)
+
+ return dest
+
+ def download(self, dest=None, channel="nightly"):
product = {
"nightly": "firefox-nightly-latest-ssl",
"beta": "firefox-beta-latest-ssl",
@@ -136,21 +149,15 @@ class Firefox(Browser):
}
os_key = (self.platform, uname[4])
+ if dest is None:
+ dest = self._get_dest(None, channel)
+
if channel not in product:
raise ValueError("Unrecognised release channel: %s" % channel)
if os_key not in os_builds:
raise ValueError("Unsupported platform: %s %s" % os_key)
- if dest is None:
- # os.getcwd() doesn't include the venv path
- dest = os.path.join(os.getcwd(), "_venv")
-
- dest = os.path.join(dest, "browsers", channel)
-
- if not os.path.exists(dest):
- os.makedirs(dest)
-
url = "https://download.mozilla.org/?product=%s&os=%s&lang=en-US" % (product[channel],
os_builds[os_key])
self.logger.info("Downloading Firefox from %s" % url)
@@ -175,6 +182,18 @@ class Firefox(Browser):
with open(installer_path, "wb") as f:
f.write(resp.content)
+ return installer_path
+
+ def install(self, dest=None, channel="nightly"):
+ """Install Firefox."""
+ import mozinstall
+
+ dest = self._get_dest(dest, channel)
+
+ filename = os.path.basename(dest)
+
+ installer_path = self.download(dest, channel)
+
try:
mozinstall.install(installer_path, dest)
except mozinstall.mozinstall.InstallError:
@@ -422,7 +441,7 @@ class FirefoxAndroid(Browser):
product = "firefox_android"
requirements = "requirements_firefox.txt"
- def install(self, dest=None, channel=None):
+ def download(self, dest=None, channel=None):
if dest is None:
dest = os.pwd
@@ -452,6 +471,9 @@ class FirefoxAndroid(Browser):
return apk_path
+ def install(self, dest=None, channel=None):
+ return self.download(dest, channel)
+
def install_prefs(self, binary, dest=None, channel=None):
fx_browser = Firefox(self.logger)
return fx_browser.install_prefs(binary, dest, channel)
@@ -478,6 +500,9 @@ class Chrome(Browser):
product = "chrome"
requirements = "requirements_chrome.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -633,6 +658,9 @@ class ChromeAndroidBase(Browser):
super(ChromeAndroidBase, self).__init__(logger)
self.device_serial = None
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -724,6 +752,9 @@ class ChromeiOS(Browser):
product = "chrome_ios"
requirements = "requirements_chrome_ios.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -757,6 +788,9 @@ class Opera(Browser):
self.logger.warning("Unable to find the browser binary.")
return None
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -826,6 +860,9 @@ class EdgeChromium(Browser):
edgedriver_name = "msedgedriver"
requirements = "requirements_edge_chromium.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -922,6 +959,9 @@ class Edge(Browser):
product = "edge"
requirements = "requirements_edge.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -953,6 +993,9 @@ class InternetExplorer(Browser):
product = "ie"
requirements = "requirements_ie.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -978,6 +1021,9 @@ class Safari(Browser):
product = "safari"
requirements = "requirements_safari.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -1037,17 +1083,33 @@ class Servo(Browser):
return (platform, extension, decompress)
- def install(self, dest=None, channel="nightly"):
- """Install latest Browser Engine."""
+ def _get(self, channel="nightly"):
if channel != "nightly":
raise ValueError("Only nightly versions of Servo are available")
+
+ platform, extension, _ = self.platform_components()
+ url = "https://download.servo.org/nightly/%s/servo-latest%s" % (platform, extension)
+ return get(url)
+
+ def download(self, dest=None, channel="nightly"):
if dest is None:
dest = os.pwd
- platform, extension, decompress = self.platform_components()
- url = "https://download.servo.org/nightly/%s/servo-latest%s" % (platform, extension)
+ resp = self._get(dest, channel)
+ _, extension, _ = self.platform_components()
+
+ with open(os.path.join(dest, "servo-latest%s" % (extension,)), "w") as f:
+ f.write(resp.content)
+
+ def install(self, dest=None, channel="nightly"):
+ """Install latest Browser Engine."""
+ if dest is None:
+ dest = os.pwd
+
+ _, _, decompress = self.platform_components()
- decompress(get(url).raw, dest=dest)
+ resp = self._get(dest, channel)
+ decompress(resp.raw, dest=dest)
path = find_executable("servo", os.path.join(dest, "servo"))
st = os.stat(path)
os.chmod(path, st.st_mode | stat.S_IEXEC)
@@ -1083,6 +1145,9 @@ class Sauce(Browser):
product = "sauce"
requirements = "requirements_sauce.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -1105,6 +1170,9 @@ class WebKit(Browser):
product = "webkit"
requirements = "requirements_webkit.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
@@ -1168,6 +1236,9 @@ class Epiphany(Browser):
product = "epiphany"
requirements = "requirements_epiphany.txt"
+ def download(self, dest=None, channel=None):
+ raise NotImplementedError
+
def install(self, dest=None, channel=None):
raise NotImplementedError
diff --git a/tests/wpt/web-platform-tests/tools/wpt/install.py b/tests/wpt/web-platform-tests/tools/wpt/install.py
index 8215dfe0916..24915f0c98d 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/install.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/install.py
@@ -42,6 +42,8 @@ def get_parser():
'the latest available development release. For WebDriver installs, '
'we attempt to select an appropriate, compatible, version for the '
'latest browser release on the selected channel.')
+ parser.add_argument('--download-only', action="store_true",
+ help="Download the selected component but don't install it")
parser.add_argument('-d', '--destination',
help='filesystem directory to place the component')
return parser
@@ -73,21 +75,22 @@ def run(venv, **kwargs):
raise argparse.ArgumentError(None,
"No --destination argument, and no default for the environment")
- install(browser, kwargs["component"], destination, channel)
+ install(browser, kwargs["component"], destination, channel,
+ download_only=kwargs["download_only"])
-def install(name, component, destination, channel="nightly", logger=None):
+def install(name, component, destination, channel="nightly", logger=None, download_only=False):
if logger is None:
import logging
logger = logging.getLogger("install")
- if component == 'webdriver':
- method = 'install_webdriver'
- else:
- method = 'install'
+ prefix = "download" if download_only else "install"
+ suffix = "_webdriver" if component == 'webdriver' else ""
+
+ method = prefix + suffix
subclass = getattr(browser, name.title())
sys.stdout.write('Now installing %s %s...\n' % (name, component))
path = getattr(subclass(logger), method)(dest=destination, channel=channel)
if path:
- sys.stdout.write('Binary installed as %s\n' % (path,))
+ sys.stdout.write('Binary %s as %s\n' % ("downloaded" if download_only else "installed", path,))
diff --git a/tests/wpt/web-platform-tests/tools/wpt/paths b/tests/wpt/web-platform-tests/tools/wpt/paths
index 093a7156892..35867c4ccbf 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/paths
+++ b/tests/wpt/web-platform-tests/tools/wpt/paths
@@ -3,5 +3,4 @@ tools/docker/
tools/lint/
tools/manifest/
tools/serve/
-tools/taskcluster/
tools/wpt/
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
index 2f7467c0912..77938abe03d 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
@@ -287,7 +287,7 @@ A more complex manifest with conditional properties might be::
[canvas_test.html]
expected:
- if os == "osx": FAIL
+ if os == "mac": FAIL
if os == "windows" and version == "XP": FAIL
PASS
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt
index f49102b8a89..4cbb7a5ec02 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt
@@ -8,4 +8,4 @@ mozprocess==1.0.0
mozprofile==2.4.0
mozrunner==7.7.0
mozversion==2.2.0
-psutil==5.6.5
+psutil==5.6.7
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
index f20f735528c..713d8500113 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
@@ -7,6 +7,7 @@ import os
import threading
import traceback
import socket
+import sys
from six.moves.urllib.parse import urljoin, urlsplit, urlunsplit
from abc import ABCMeta, abstractmethod
@@ -15,10 +16,6 @@ from .protocol import Protocol, BaseProtocolPart
here = os.path.split(__file__)[0]
-# Extra timeout to use after internal test timeout at which the harness
-# should force a timeout
-extra_timeout = 5 # seconds
-
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
**kwargs):
@@ -130,6 +127,61 @@ class ExecutorException(Exception):
self.message = message
+class TimedRunner(object):
+ def __init__(self, logger, func, protocol, url, timeout, extra_timeout):
+ self.func = func
+ self.result = None
+ self.protocol = protocol
+ self.url = url
+ self.timeout = timeout
+ self.extra_timeout = extra_timeout
+ self.result_flag = threading.Event()
+
+ def run(self):
+ if self.set_timeout() is Stop:
+ return Stop
+
+ if self.before_run() is Stop:
+ return Stop
+
+ executor = threading.Thread(target=self.run_func)
+ executor.start()
+
+ # Add twice the timeout multiplier since the called function is expected to
+ # wait at least self.timeout + self.extra_timeout and this gives some leeway
+ finished = self.result_flag.wait(self.timeout + 2 * self.extra_timeout)
+ if self.result is None:
+ if finished:
+ # flag is True unless we timeout; this *shouldn't* happen, but
+ # it can if self.run_func fails to set self.result due to raising
+ self.result = False, ("INTERNAL-ERROR", "%s.run_func didn't set a result" %
+ self.__class__.__name__)
+ else:
+ message = "Executor hit external timeout (this may indicate a hang)\n"
+ # get a traceback for the current stack of the executor thread
+ message += "".join(traceback.format_stack(sys._current_frames()[executor.ident]))
+ self.result = False, ("EXTERNAL-TIMEOUT", message)
+ elif self.result[1] is None:
+ # We didn't get any data back from the test, so check if the
+ # browser is still responsive
+ if self.protocol.is_alive:
+ self.result = False, ("INTERNAL-ERROR", None)
+ else:
+ self.logger.info("Browser not responding, setting status to CRASH")
+ self.result = False, ("CRASH", None)
+
+ return self.result
+
+ def set_timeout(self):
+ raise NotImplementedError
+
+ def before_run(self):
+ pass
+
+ def run_func(self):
+ raise NotImplementedError
+
+
class TestExecutor(object):
"""Abstract Base class for object that actually executes the tests in a
specific browser. Typically there will be a different TestExecutor
@@ -148,6 +200,10 @@ class TestExecutor(object):
convert_result = None
supports_testdriver = False
supports_jsshell = False
+ # Extra timeout to use after internal test timeout at which the harness
+ # should force a timeout
+ extra_timeout = 5 # seconds
+
def __init__(self, browser, server_config, timeout_multiplier=1,
debug_info=None, **kwargs):
@@ -441,7 +497,7 @@ class WdspecExecutor(TestExecutor):
pass
def do_test(self, test):
- timeout = test.timeout * self.timeout_multiplier + extra_timeout
+ timeout = test.timeout * self.timeout_multiplier + self.extra_timeout
success, data = WdspecRun(self.do_wdspec,
self.protocol.session_config,
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
index 7a936592f88..b165e8cd93d 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -16,9 +16,9 @@ from .base import (CallbackHandler,
RefTestExecutor,
RefTestImplementation,
TestharnessExecutor,
+ TimedRunner,
WdspecExecutor,
WebDriverProtocol,
- extra_timeout,
strip_server)
from .protocol import (ActionSequenceProtocolPart,
AssertsProtocolPart,
@@ -566,27 +566,14 @@ class MarionetteProtocol(Protocol):
self.prefs.set(name, value)
-class ExecuteAsyncScriptRun(object):
- def __init__(self, logger, func, protocol, url, timeout):
- self.logger = logger
- self.result = (None, None)
- self.protocol = protocol
- self.func = func
- self.url = url
- self.timeout = timeout
- self.result_flag = threading.Event()
-
- def run(self):
- index = self.url.rfind("/storage/")
- if index != -1:
- # Clear storage
- self.protocol.storage.clear_origin(self.url)
+class ExecuteAsyncScriptRun(TimedRunner):
+ def set_timeout(self):
timeout = self.timeout
try:
if timeout is not None:
- self.protocol.base.set_timeout(timeout + extra_timeout)
+ self.protocol.base.set_timeout(timeout + self.extra_timeout)
else:
# We just want it to never time out, really, but marionette doesn't
# make that possible. It also seems to time out immediately if the
@@ -596,33 +583,13 @@ class ExecuteAsyncScriptRun(object):
self.logger.error("Lost marionette connection before starting test")
return Stop
- if timeout is not None:
- wait_timeout = timeout + 2 * extra_timeout
- else:
- wait_timeout = None
-
- timer = threading.Timer(wait_timeout, self._timeout)
- timer.start()
-
- self._run()
-
- self.result_flag.wait()
- timer.cancel()
-
- if self.result == (None, None):
- self.logger.debug("Timed out waiting for a result")
- self.result = False, ("EXTERNAL-TIMEOUT", None)
- elif self.result[1] is None:
- # We didn't get any data back from the test, so check if the
- # browser is still responsive
- if self.protocol.is_alive:
- self.result = False, ("INTERNAL-ERROR", None)
- else:
- self.logger.info("Browser not responding, setting status to CRASH")
- self.result = False, ("CRASH", None)
- return self.result
+ def before_run(self):
+ index = self.url.rfind("/storage/")
+ if index != -1:
+ # Clear storage
+ self.protocol.storage.clear_origin(self.url)
- def _run(self):
+ def run_func(self):
try:
self.result = True, self.func(self.protocol, self.url, self.timeout)
except errors.ScriptTimeoutException:
@@ -650,10 +617,6 @@ class ExecuteAsyncScriptRun(object):
finally:
self.result_flag.set()
- def _timeout(self):
- self.result = False, ("EXTERNAL-TIMEOUT", None)
- self.result_flag.set()
-
class MarionetteTestharnessExecutor(TestharnessExecutor):
supports_testdriver = True
@@ -703,7 +666,8 @@ class MarionetteTestharnessExecutor(TestharnessExecutor):
self.do_testharness,
self.protocol,
self.test_url(test),
- timeout).run()
+ timeout,
+ self.extra_timeout).run()
# The format of data depends on whether the test ran to completion or not
# For asserts we only care about the fact that if it didn't complete, the
# status is in the first field.
@@ -782,7 +746,7 @@ class MarionetteRefTestExecutor(RefTestExecutor):
with open(os.path.join(here, "reftest.js")) as f:
self.script = f.read()
- with open(os.path.join(here, "reftest-wait_marionette.js")) as f:
+ with open(os.path.join(here, "reftest-wait_webdriver.js")) as f:
self.wait_script = f.read()
def setup(self, runner):
@@ -853,7 +817,8 @@ class MarionetteRefTestExecutor(RefTestExecutor):
self._screenshot,
self.protocol,
test_url,
- timeout).run()
+ timeout,
+ self.extra_timeout).run()
def _screenshot(self, protocol, url, timeout):
protocol.marionette.navigate(url)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
index 913a5e6d542..d6745018279 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
@@ -11,7 +11,7 @@ from .base import (CallbackHandler,
RefTestExecutor,
RefTestImplementation,
TestharnessExecutor,
- extra_timeout,
+ TimedRunner,
strip_server)
from .protocol import (BaseProtocolPart,
TestharnessProtocolPart,
@@ -237,39 +237,17 @@ class SeleniumProtocol(Protocol):
self.testharness.load_runner(self.executor.last_environment["protocol"])
-class SeleniumRun(object):
- def __init__(self, func, protocol, url, timeout):
- self.func = func
- self.result = None
- self.protocol = protocol
- self.url = url
- self.timeout = timeout
- self.result_flag = threading.Event()
-
- def run(self):
+class SeleniumRun(TimedRunner):
+ def set_timeout(self):
timeout = self.timeout
try:
- self.protocol.base.set_timeout(timeout + extra_timeout)
+ self.protocol.base.set_timeout(timeout + self.extra_timeout)
except exceptions.ErrorInResponseException:
self.logger.error("Lost WebDriver connection")
return Stop
- executor = threading.Thread(target=self._run)
- executor.start()
-
- flag = self.result_flag.wait(timeout + 2 * extra_timeout)
- if self.result is None:
- if flag:
- # flag is True unless we timeout; this *shouldn't* happen, but
- # it can if self._run fails to set self.result due to raising
- self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result")
- else:
- self.result = False, ("EXTERNAL-TIMEOUT", None)
-
- return self.result
-
- def _run(self):
+ def run_func(self):
try:
self.result = True, self.func(self.protocol, self.url, self.timeout)
except exceptions.TimeoutException:
@@ -312,10 +290,12 @@ class SeleniumTestharnessExecutor(TestharnessExecutor):
def do_test(self, test):
url = self.test_url(test)
- success, data = SeleniumRun(self.do_testharness,
+ success, data = SeleniumRun(self.logger,
+ self.do_testharness,
self.protocol,
url,
- test.timeout * self.timeout_multiplier).run()
+ test.timeout * self.timeout_multiplier,
+ self.extra_timeout).run()
if success:
return self.convert_result(test, data)
@@ -387,10 +367,12 @@ class SeleniumRefTestExecutor(RefTestExecutor):
assert viewport_size is None
assert dpi is None
- return SeleniumRun(self._screenshot,
+ return SeleniumRun(self.logger,
+ self._screenshot,
self.protocol,
self.test_url(test),
- test.timeout).run()
+ test.timeout,
+ self.extra_timeout).run()
def _screenshot(self, protocol, url, timeout):
webdriver = protocol.webdriver
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py
index eaea0981632..365a1a08653 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py
@@ -24,7 +24,6 @@ from ..webdriver_server import ServoDriverServer
pytestrunner = None
webdriver = None
-extra_timeout = 5 # seconds
def write_hosts_file(config):
hosts_fd, hosts_path = tempfile.mkstemp()
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
index 67a433d9a58..bd377d0d595 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
@@ -1,8 +1,6 @@
import json
import os
import socket
-import threading
-import time
import traceback
from .base import (Protocol,
@@ -10,6 +8,7 @@ from .base import (Protocol,
RefTestExecutor,
RefTestImplementation,
TestharnessExecutor,
+ TimedRunner,
strip_server)
from ..testrunner import Stop
from ..webdriver_server import wait_for_service
@@ -19,8 +18,6 @@ ServoCommandExtensions = None
here = os.path.join(os.path.split(__file__)[0])
-extra_timeout = 5
-
def do_delayed_imports():
global webdriver
@@ -131,29 +128,13 @@ class ServoWebDriverProtocol(Protocol):
break
-class ServoWebDriverRun(object):
- def __init__(self, func, session, url, timeout, current_timeout=None):
- self.func = func
- self.result = None
- self.session = session
- self.url = url
- self.timeout = timeout
- self.result_flag = threading.Event()
-
- def run(self):
- executor = threading.Thread(target=self._run)
- executor.start()
-
- flag = self.result_flag.wait(self.timeout + extra_timeout)
- if self.result is None:
- assert not flag
- self.result = False, ("EXTERNAL-TIMEOUT", None)
-
- return self.result
+class ServoWebDriverRun(TimedRunner):
+ def set_timeout(self):
+ pass
- def _run(self):
+ def run_func(self):
try:
- self.result = True, self.func(self.session, self.url, self.timeout)
+ self.result = True, self.func(self.protocol.session, self.url, self.timeout)
except webdriver.TimeoutException:
self.result = False, ("EXTERNAL-TIMEOUT", None)
except (socket.timeout, IOError):
@@ -168,14 +149,6 @@ class ServoWebDriverRun(object):
self.result_flag.set()
-def timeout_func(timeout):
- if timeout:
- t0 = time.time()
- return lambda: time.time() - t0 > timeout + extra_timeout
- else:
- return lambda: False
-
-
class ServoWebDriverTestharnessExecutor(TestharnessExecutor):
supports_testdriver = True
@@ -198,7 +171,7 @@ class ServoWebDriverTestharnessExecutor(TestharnessExecutor):
def do_test(self, test):
url = self.test_url(test)
- timeout = test.timeout * self.timeout_multiplier + extra_timeout
+ timeout = test.timeout * self.timeout_multiplier + self.extra_timeout
if timeout != self.timeout:
try:
@@ -208,10 +181,12 @@ class ServoWebDriverTestharnessExecutor(TestharnessExecutor):
self.logger.error("Lost webdriver connection")
return Stop
- success, data = ServoWebDriverRun(self.do_testharness,
- self.protocol.session,
+ success, data = ServoWebDriverRun(self.logger,
+ self.do_testharness,
+ self.protocol,
url,
- timeout).run()
+ timeout,
+ self.extra_timeout).run()
if success:
return self.convert_result(test, data)
@@ -286,7 +261,7 @@ class ServoWebDriverRefTestExecutor(RefTestExecutor):
assert viewport_size is None
assert dpi is None
- timeout = (test.timeout * self.timeout_multiplier + extra_timeout
+ timeout = (test.timeout * self.timeout_multiplier + self.extra_timeout
if self.debug_info is None else None)
if self.timeout != timeout:
@@ -297,10 +272,12 @@ class ServoWebDriverRefTestExecutor(RefTestExecutor):
self.logger.error("Lost webdriver connection")
return Stop
- return ServoWebDriverRun(self._screenshot,
+ return ServoWebDriverRun(self.logger,
+ self._screenshot,
self.protocol.session,
self.test_url(test),
- timeout).run()
+ timeout,
+ self.extra_timeout).run()
def _screenshot(self, session, url, timeout):
session.url = url
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 344debf8aa6..39346e805d7 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -1,7 +1,6 @@
import json
import os
import socket
-import sys
import threading
import time
import traceback
@@ -12,7 +11,7 @@ from .base import (CallbackHandler,
RefTestExecutor,
RefTestImplementation,
TestharnessExecutor,
- extra_timeout,
+ TimedRunner,
strip_server)
from .protocol import (BaseProtocolPart,
TestharnessProtocolPart,
@@ -256,7 +255,6 @@ class WebDriverProtocol(Protocol):
self.webdriver = client.Session(host, port, capabilities=capabilities)
self.webdriver.start()
-
def teardown(self):
self.logger.debug("Hanging up on WebDriver session")
try:
@@ -281,42 +279,15 @@ class WebDriverProtocol(Protocol):
self.testharness.load_runner(self.executor.last_environment["protocol"])
-class WebDriverRun(object):
- def __init__(self, func, protocol, url, timeout):
- self.func = func
- self.result = None
- self.protocol = protocol
- self.url = url
- self.timeout = timeout
- self.result_flag = threading.Event()
-
- def run(self):
- timeout = self.timeout
-
+class WebDriverRun(TimedRunner):
+ def set_timeout(self):
try:
- self.protocol.base.set_timeout(timeout + extra_timeout)
+ self.protocol.base.set_timeout(self.timeout + self.extra_timeout)
except client.UnknownErrorException:
self.logger.error("Lost WebDriver connection")
return Stop
- executor = threading.Thread(target=self._run)
- executor.start()
-
- flag = self.result_flag.wait(timeout + 2 * extra_timeout)
- if self.result is None:
- if flag:
- # flag is True unless we timeout; this *shouldn't* happen, but
- # it can if self._run fails to set self.result due to raising
- self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result")
- else:
- message = "Waiting on browser:\n"
- # get a traceback for the current stack of the executor thread
- message += "".join(traceback.format_stack(sys._current_frames()[executor.ident]))
- self.result = False, ("EXTERNAL-TIMEOUT", message)
-
- return self.result
-
- def _run(self):
+ def run_func(self):
try:
self.result = True, self.func(self.protocol, self.url, self.timeout)
except (client.TimeoutException, client.ScriptTimeoutException):
@@ -366,10 +337,12 @@ class WebDriverTestharnessExecutor(TestharnessExecutor):
def do_test(self, test):
url = self.test_url(test)
- success, data = WebDriverRun(self.do_testharness,
- self.protocol,
- url,
- test.timeout * self.timeout_multiplier).run()
+ success, data = WebDriverRun(self.logger,
+ self.do_testharness,
+ self.protocol,
+ url,
+ test.timeout * self.timeout_multiplier,
+ self.extra_timeout).run()
if success:
return self.convert_result(test, data)
@@ -485,10 +458,12 @@ class WebDriverRefTestExecutor(RefTestExecutor):
assert viewport_size is None
assert dpi is None
- return WebDriverRun(self._screenshot,
- self.protocol,
- self.test_url(test),
- test.timeout).run()
+ return WebDriverRun(self.logger,
+ self._screenshot,
+ self.protocol,
+ self.test_url(test),
+ test.timeout,
+ self.extra_timeout).run()
def _screenshot(self, protocol, url, timeout):
webdriver = protocol.webdriver
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js
deleted file mode 100644
index 194e192c2f4..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var callback = arguments[arguments.length - 1];
-
-function test(x) {
- if (!root.classList.contains("reftest-wait")) {
- observer.disconnect();
- callback();
- }
-}
-
-var root = document.documentElement;
-var observer = new MutationObserver(test);
-
-observer.observe(root, {attributes: true});
-
-if (document.readyState != "complete") {
- addEventListener('load', test);
-} else {
- test();
-}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js
index a7486b6594d..f86edacdef2 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js
@@ -1,21 +1,20 @@
var callback = arguments[arguments.length - 1];
+var observer = null;
+var root = document.documentElement;
-function root_wait() {
- if (!root.classList.contains("reftest-wait")) {
- observer.disconnect();
-
- if (Document.prototype.hasOwnProperty("fonts")) {
- document.fonts.ready.then(ready_for_screenshot);
- } else {
- // This might take the screenshot too early, depending on whether the
- // load event is blocked on fonts being loaded. See:
- // https://github.com/w3c/csswg-drafts/issues/1088
- ready_for_screenshot();
- }
+function wait_load() {
+ if (Document.prototype.hasOwnProperty("fonts")) {
+ document.fonts.ready.then(wait_paints);
+ } else {
+ // This might take the screenshot too early, depending on whether the
+ // load event is blocked on fonts being loaded. See:
+ // https://github.com/w3c/csswg-drafts/issues/1088
+ wait_paints();
}
}
-function ready_for_screenshot() {
+
+function wait_paints() {
// As of 2017-04-05, the Chromium web browser exhibits a rendering bug
// (https://bugs.chromium.org/p/chromium/issues/detail?id=708757) that
// produces instability during screen capture. The following use of
@@ -27,18 +26,29 @@ function ready_for_screenshot() {
requestAnimationFrame(function() {
requestAnimationFrame(function() {
- callback();
+ screenshot_if_ready();
});
});
}
-var root = document.documentElement;
-var observer = new MutationObserver(root_wait);
+function screenshot_if_ready() {
+ if (root.classList.contains("reftest-wait") &&
+ observer === null) {
+ observer = new MutationObserver(wait_paints);
+ observer.observe(root, {attributes: true});
+ var event = new Event("TestRendered", {bubbles: true});
+ root.dispatchEvent(event);
+ return;
+ }
+ if (observer !== null) {
+ observer.disconnect();
+ }
+ callback();
+}
-observer.observe(root, {attributes: true});
if (document.readyState != "complete") {
- addEventListener('load', root_wait);
+ addEventListener('load', wait_load);
} else {
- root_wait();
+ wait_load();
}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
index 1b02fc622be..8dece20a8e9 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
@@ -334,6 +334,8 @@ class TestRunnerManager(threading.Thread):
# This may not really be what we want
self.daemon = True
+ self.timer = None
+
self.max_restarts = 5
self.browser = None
@@ -559,7 +561,22 @@ class TestRunnerManager(threading.Thread):
self.logger.info("Run %d/%d" % (self.run_count, self.rerun))
self.send_message("reset")
self.run_count += 1
+ # Factor of 3 on the extra timeout here is based on allowing the executor
+ # at least test.timeout + 2 * extra_timeout to complete,
+ # which in turn is based on having several layers of timeout inside the executor
+ wait_timeout = (self.state.test.timeout * self.executor_kwargs['timeout_multiplier'] +
+ 3 * self.executor_cls.extra_timeout)
+ self.timer = threading.Timer(wait_timeout, self._timeout)
self.send_message("run_test", self.state.test)
+ self.timer.start()
+
+ def _timeout(self):
+ self.logger.info("Got timeout in harness")
+ test = self.state.test
+ self.test_ended(test,
+ (test.result_cls("EXTERNAL-TIMEOUT",
+ "TestRunner hit external timeout "
+ "(this may indicate a hang)"), []))
def test_ended(self, test, results):
"""Handle the end of a test.
@@ -569,6 +586,7 @@ class TestRunnerManager(threading.Thread):
"""
assert isinstance(self.state, RunnerManagerState.running)
assert test == self.state.test
+ self.timer.cancel()
# Write the result of each subtest
file_result, test_results = results
subtest_unexpected = False
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html
new file mode 100644
index 00000000000..0aaa0443649
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<title>Reference for reverse running animation</title>
+<style>
+ #box {
+ background: blue;
+ height: 40px;
+ width: 40px;
+ transform: translateX(100px);
+ will-change: transform;
+ }
+</style>
+<body>
+ <div id="box"></div>
+ <p>This test reverses the animation shortly after the box starts moving. If
+ the box doesn't move back to its original position, the test has failed.
+ </p>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html
new file mode 100644
index 00000000000..584aa0029ea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html
@@ -0,0 +1,41 @@
+
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="UTF-8">
+<title>reverse running animation</title>
+<link rel="match" href="reverse-running-animation-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ #box {
+ background: blue;
+ height: 40px;
+ width: 40px;
+ }
+</style>
+
+<body>
+ <div id="box"></div>
+ <p>This test reverses the animation shortly after the box starts moving. If
+ the box doesn't move back to its original position, the test has failed.
+ </p>
+</body>
+<script>
+ onload = function() {
+ const elem = document.getElementById('box');
+ const anim = elem.animate([
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(200px)' },
+ { transform: 'translateX(200px)' }
+ ], {
+ duration: 1000
+ });
+
+ anim.ready.then(() => {
+ setTimeout(() => {
+ anim.reverse();
+ }, 500);
+ takeScreenshotDelayed(900);
+ });
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times-ref.html
new file mode 100644
index 00000000000..fc843a132f2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times-ref.html
@@ -0,0 +1,20 @@
+
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>Reference for sync start times</title>
+<style>
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+</style>
+
+<body>
+ <p id="notes">
+ This test creates a pair of animations, starts the first animation and then
+ syncs the second animation to align with the first. The test passes if the
+ box associated with the first animation is completely occluded by the
+ second.
+ </p>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times.html
new file mode 100644
index 00000000000..06dcf030563
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/sync-start-times.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="UTF-8">
+<title>sync start times</title>
+<link rel="match" href="sync-start-times-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ #box-1, #box-2 {
+ border: 1px solid white;
+ height: 40px;
+ left: 40px;
+ position: absolute;
+ top: 40px;
+ width: 40px;
+ }
+ #box-1 {
+ background: blue;
+ z-index: 1;
+ }
+ #box-2 {
+ background: white;
+ z-index: 2;
+ }
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+</style>
+
+<body>
+ <div id="box-1"></div>
+ <div id="box-2"></div>
+ <p id="notes">
+ This test creates a pair of animations, starts the first animation and then
+ syncs the second animation to align with the first. The test passes if the
+ box associated with the first animation is completely occluded by the
+ second.
+ </p>
+</body>
+<script>
+ onload = function() {
+ function createAnimation(elementId) {
+ const elem = document.getElementById(elementId);
+ const keyframes = [
+ { transform: 'translateX(0px)' },
+ { transform: 'translateX(200px)' }
+ ];
+ const anim = elem.animate(keyframes, { duration: 1000 });
+ anim.pause();
+ return anim;
+ };
+
+ const anim1 = createAnimation('box-1');
+ const anim2 = createAnimation('box-2');
+
+ anim1.currentTime = 500;
+ anim1.play();
+
+ anim1.ready.then(() => {
+ anim2.startTime = anim1.startTime;
+ requestAnimationFrame(() => {
+ takeScreenshot();
+ });
+ });
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-ref.html
new file mode 100644
index 00000000000..af69b26100a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<title>Reference for update playback rate zero</title>
+<style>
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+ body {
+ background: white;
+ }
+</style>
+<body>
+ <div id="box"></div>
+ <p id="notes">
+ This test creates a running animation and changes its playback rate
+ part way through. The animation finishes ahead of the screenshot.
+ If any blue pixels appear in the screenshot, the test fails.
+ </p>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html
new file mode 100644
index 00000000000..63a76ba84a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="UTF-8">
+<title>Update playback rate zero</title>
+<link rel="match" href="update-playback-rate-fast-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ #box-1, #box-2 {
+ border: 1px solid white;
+ height: 40px;
+ left: 40px;
+ position: absolute;
+ top: 40px;
+ width: 40px;
+ }
+ #box-1 {
+ background: blue;
+ z-index: 1;
+ }
+ #box-2 {
+ background: white;
+ transform: translateX(0px);
+ z-index: 2;
+ }
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+ body {
+ background: white;
+ }
+</style>
+
+<body>
+ <div id="box-1"></div>
+ <div id="box-2"></div>
+ <p id="notes">
+ This test creates a running animation and changes its playback rate
+ part way through. The animation finishes ahead of the screenshot.
+ If any blue pixels appear in the screenshot, the test fails.
+ </p>
+</body>
+<script>
+ onload = function() {
+ const elem = document.getElementById('box-1');
+ const anim = elem.animate([
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(200px)' },
+ { transform: 'translateX(200px)' }
+ ], {
+ duration: 1000
+ });
+
+ anim.ready.then(() => {
+ anim.updatePlaybackRate(2);
+ takeScreenshotDelayed(750);
+ });
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-ref.html
new file mode 100644
index 00000000000..11b87deecca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>Reference for update playback rate zero</title>
+<style>
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+</style>
+<body>
+ <div id="box"></div>
+ <p id="notes">
+ This test creates a running animation and changes its playback rate
+ part way through. The animation slows down so that it does not finish
+ before the screenshot. If any blue pixels appear in the screenshot,
+ the test fails.
+ </p>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html
new file mode 100644
index 00000000000..db449f2ca59
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html
@@ -0,0 +1,62 @@
+
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="UTF-8">
+<title>Update playback rate zero</title>
+<link rel="match" href="update-playback-rate-slow-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ #box-1, #box-2 {
+ border: 1px solid white;
+ height: 40px;
+ left: 40px;
+ position: absolute;
+ top: 40px;
+ width: 40px;
+ }
+ #box-1 {
+ background: blue;
+ z-index: 1;
+ }
+ #box-2 {
+ background: white;
+ transform: translateX(200px);
+ z-index: 2;
+ }
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+</style>
+
+<body>
+ <div id="box-1"></div>
+ <div id="box-2"></div>
+ <p id="notes">
+ This test creates a running animation and changes its playback rate
+ part way through. The animation slows down so that it does not finish
+ before the screenshot. If any blue pixels appear in the screenshot,
+ the test fails.
+ </p>
+</body>
+<script>
+ onload = function() {
+ const elem = document.getElementById('box-1');
+ const anim = elem.animate([
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(200px)' },
+ { transform: 'translateX(200px)' }
+ ], {
+ duration: 1000
+ });
+
+ anim.ready.then(() => {
+ setTimeout(() => {
+ anim.updatePlaybackRate(0.5);
+ }, 500);
+ takeScreenshotDelayed(1000);
+ });
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-ref.html
new file mode 100644
index 00000000000..26293a3aebb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<title>Reference for update playback rate zero</title>
+<style>
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+</style>
+<body>
+ <div id="box"></div>
+ <p id="notes">
+ This test creates a running animation and changes its playback rate
+ part way through. The animation should stop behind an occluding rectangle.
+ If not fully occluded, the test fails.
+ </p>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html
new file mode 100644
index 00000000000..bed08d630ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html
@@ -0,0 +1,61 @@
+
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="UTF-8">
+<title>Update playback rate zero</title>
+<link rel="match" href="update-playback-rate-zero-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ #box-1, #box-2 {
+ border: 1px solid white;
+ height: 40px;
+ left: 40px;
+ position: absolute;
+ top: 40px;
+ width: 40px;
+ }
+ #box-1 {
+ background: blue;
+ z-index: 1;
+ }
+ #box-2 {
+ background: white;
+ transform: translateX(200px);
+ z-index: 2;
+ }
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+</style>
+
+<body>
+ <div id="box-1"></div>
+ <div id="box-2"></div>
+ <p id="notes">
+ This test creates a running animation and changes its playback rate
+ part way through. The animation should stop behind an occluding rectangle.
+ If not fully occluded, the test fails.
+ </p>
+</body>
+<script>
+ onload = function() {
+ const elem = document.getElementById('box-1');
+ const anim = elem.animate([
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(200px)' },
+ { transform: 'translateX(200px)' }
+ ], {
+ duration: 1000
+ });
+
+ anim.ready.then(() => {
+ setTimeout(() => {
+ anim.updatePlaybackRate(0);
+ }, 750);
+ takeScreenshotDelayed(1200);
+ });
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html
index 6901e5cdcb2..4c1e7de4400 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_options.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Web NFC: NDEFReader option tests</title>
+<title>Web NFC: NDEFReader.scan() filter tests</title>
<link rel="author" title="Intel" href="http://www.intel.com"/>
<link rel="help" href="https://w3c.github.io/web-nfc/"/>
<script src="/resources/testharness.js"></script>
@@ -10,7 +10,7 @@
'use strict';
-const NDEFReaderOptionTests =
+const multiScanOptionsTests =
[
{
desc: "Test that reading data succeed when NDEFScanOptions'" +
@@ -78,7 +78,7 @@ const NDEFReaderOptionTests =
}
];
-const ReadMultiMessagesTests =
+const multiMessagesTests =
[
{
desc: "Test that filtering 'empty' record from different messages" +
@@ -147,21 +147,53 @@ const ReadMultiMessagesTests =
}
];
-for (let NDEFReaderOptionTest of NDEFReaderOptionTests) {
- testNDEFScanOptions(
- NDEFReaderOptionTest.message,
- NDEFReaderOptionTest.scanOptions,
- NDEFReaderOptionTest.unmatchedScanOptions,
- NDEFReaderOptionTest.desc
+for (let multiScanOptionsTest of multiScanOptionsTests) {
+ testMultiScanOptions(
+ multiScanOptionsTest.message,
+ multiScanOptionsTest.scanOptions,
+ multiScanOptionsTest.unmatchedScanOptions,
+ multiScanOptionsTest.desc
);
}
-for (let readMultiMessagesTest of ReadMultiMessagesTests) {
- testReadingMultiMessages(
- readMultiMessagesTest.message,
- readMultiMessagesTest.scanOptions,
- readMultiMessagesTest.unmatchedMessage,
- readMultiMessagesTest.desc
+for (let multiMessagesTest of multiMessagesTests) {
+ testMultiMessages(
+ multiMessagesTest.message,
+ multiMessagesTest.scanOptions,
+ multiMessagesTest.unmatchedMessage,
+ multiMessagesTest.desc
);
}
+
+nfc_test(async (t, mockNFC) => {
+ const reader = new NDEFReader();
+ const controller = new AbortController();
+ const signal = controller.signal;
+ const textMsg = createMessage([createTextRecord(test_text_data)]);
+ const urlMsg = createMessage([createUrlRecord(test_url_data)]);
+ const mimeMsg = createMessage([createMimeRecord(test_buffer_data)]);
+
+ const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
+ const promise = readerWatcher.wait_for("reading").then(event => {
+ controller.abort();
+ assertWebNDEFMessagesEqual(event.message, new NDEFMessage(mimeMsg));
+ });
+
+ const scanOptions1 = { recordType: "text", signal: signal };
+ const scanOptions2 = {recordType: "url", signal: signal };
+ const scanOptions3 = {recordType: "mime", signal: signal };
+
+ await reader.scan(scanOptions1);
+ await reader.scan(scanOptions2);
+ // There is maximum one filter for an NDEFReader object,
+ // last filter will replace all previous ones.
+ await reader.scan(scanOptions3);
+
+ mockNFC.setReadingMessage(textMsg);
+ mockNFC.setReadingMessage(urlMsg);
+ mockNFC.setReadingMessage(mimeMsg);
+ await promise;
+}, "Multiple scan() from the same NDEFReader object with new options should \
+replace existing filters.");
+
</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html
index 15ef6e466aa..3d734105e9c 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html
@@ -37,4 +37,24 @@
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));
}, 'NDEFReadingEvent constructor with valid parameters');
+ test(() => {
+ const record_init = createTextRecord(test_text_data);
+ const event = new NDEFReadingEvent('type',
+ {serialNumber: '', message: createMessage([record_init])});
+ assert_equals(event.type, 'type', 'type');
+ assert_equals(event.serialNumber, '', 'serialNumber');
+ assert_equals(1, event.message.records.length, 'only 1 record');
+
+ const record = new NDEFRecord(record_init);
+ assert_equals(record.recordType, 'text', 'recordType');
+ assert_equals(record.mediaType, null, 'mediaType');
+ assert_equals(record.encoding, 'utf-8', 'encoding');
+ assert_equals(record.lang, 'en', 'lang');
+
+ assert_equals(event.message.records[0].recordType, 'text', 'recordType');
+ assert_equals(event.message.records[0].mediaType, null, 'mediaType');
+ assert_equals(event.message.records[0].encoding, 'utf-8', 'encoding');
+ assert_equals(event.message.records[0].lang, null, 'lang is not set');
+ }, 'NDEFReadingEvent constructor does not set NDEFRecord#lang for any text records it embeds');
+
</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index eb3006114c7..0fe6fe80cb1 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -168,7 +168,7 @@ function assertWebNDEFMessagesEqual(message, expectedMessage) {
}
}
-function testNDEFScanOptions(message, scanOptions, unmatchedScanOptions, desc) {
+function testMultiScanOptions(message, scanOptions, unmatchedScanOptions, desc) {
nfc_test(async (t, mockNFC) => {
const reader1 = new NDEFReader();
const reader2 = new NDEFReader();
@@ -192,8 +192,7 @@ function testNDEFScanOptions(message, scanOptions, unmatchedScanOptions, desc) {
}, desc);
}
-function testReadingMultiMessages(
- message, scanOptions, unmatchedMessage, desc) {
+function testMultiMessages(message, scanOptions, unmatchedMessage, desc) {
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
const controller = new AbortController();
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py
index b107a8957e0..56e216bb646 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/find_element_from_element/find.py
@@ -1,4 +1,3 @@
-# META: timeout=long
import pytest
from webdriver.transport import Response
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html
index 73a0fe1e5a1..342e325dad2 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html
@@ -216,7 +216,8 @@
await pc2.setRemoteDescription({type: "rollback"});
assert_equals(pc2.getTransceivers().length, 1);
- assert_equals(pc2.getTransceivers()[0].mid, null)
+ assert_equals(pc2.getTransceivers()[0].mid, null);
+ assert_equals(pc2.getTransceivers()[0].receiver.transport, null);
}, "rollback of a remote offer should keep a transceiver");
promise_test(async t => {
@@ -229,6 +230,29 @@
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
pc1.addTrack(stream.getTracks()[0], stream);
+ const stream2 = await getNoiseStream({video: true});
+ t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
+ pc2.addTrack(stream2.getTracks()[0], stream2);
+
+ await pc2.setRemoteDescription(await pc1.createOffer());
+ assert_equals(pc2.getTransceivers().length, 1);
+
+ await pc2.setRemoteDescription({type: "rollback"});
+ assert_equals(pc2.getTransceivers().length, 1);
+ assert_equals(pc2.getTransceivers()[0].mid, null);
+ assert_equals(pc2.getTransceivers()[0].receiver.transport, null);
+ }, "rollback of a remote offer should keep a transceiver created by addtrack");
+
+ promise_test(async t => {
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
+
+ const stream = await getNoiseStream({video: true});
+ t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
+ pc1.addTrack(stream.getTracks()[0], stream);
+
await pc2.setRemoteDescription(await pc1.createOffer());
assert_equals(pc2.getTransceivers().length, 1);
@@ -257,14 +281,16 @@
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
+ assert_not_equals(pc.getTransceivers()[0].sender.transport, null);
await pc.setRemoteDescription({type: "rollback"});
assert_equals(pc.getTransceivers().length, 1);
assert_equals(pc.getTransceivers()[0].mid, null)
+ assert_equals(pc.getTransceivers()[0].sender.transport, null);
await pc.setLocalDescription(offer);
assert_equals(pc.getTransceivers().length, 1);
await signalingstatechangeResolver.promise;
assert_array_equals(states, ['have-local-offer', 'stable', 'have-local-offer']);
- }, "rollback local offer explicitly");
+ }, "explicit rollback of local offer should remove transceivers and transport");
promise_test(async t => {
const pc1 = new RTCPeerConnection();
@@ -486,7 +512,6 @@
await pc1.setLocalDescription(offer1);
await pc2.setRemoteDescription(pc1.pendingLocalDescription);
-
await pc2.setLocalDescription(await pc2.createAnswer());
await pc1.setRemoteDescription(pc2.localDescription);
@@ -505,8 +530,11 @@
assert_equals(remoteStreams[0].getTracks().length, 0);
assert_equals(remoteStreams[1].getTracks()[0].id, track.id);
await pc2.setRemoteDescription({type: "rollback"});
- assert_equals(remoteStreams[0].getTracks().length, 1);
- assert_equals(remoteStreams[0].getTracks()[0].id, track.id);
+ assert_equals(remoteStreams.length, 3);
+ assert_equals(remoteStreams[0].id, remoteStreams[2].id);
+ assert_equals(remoteStreams[1].getTracks().length, 0);
+ assert_equals(remoteStreams[2].getTracks().length, 1);
+ assert_equals(remoteStreams[2].getTracks()[0].id, track.id);
}, "rollback of a remote offer with stream changes");
diff --git a/tests/wpt/web-platform-tests/xhr/idlharness.any.js b/tests/wpt/web-platform-tests/xhr/idlharness.any.js
index f36f0ce0296..d45e52e2341 100644
--- a/tests/wpt/web-platform-tests/xhr/idlharness.any.js
+++ b/tests/wpt/web-platform-tests/xhr/idlharness.any.js
@@ -1,6 +1,7 @@
// META: global=sharedworker
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
+// META: timeout=long
idl_test(
['xhr'],