[Web Animations] Make KeyframeEffect target nullable and read-write
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Feb 2018 00:36:19 +0000 (00:36 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 20 Feb 2018 00:36:19 +0000 (00:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=182741

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update test expectations with progressions resulting from handling null values for a keyframe effect's target
as well as making the KeyframeEffect target a read-write property.

* web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
* web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:

Source/WebCore:

We used to completely disregard null targets, for instance not parsing keyframes, but targets
can be null and are also supposed to be read-write for KeyframeEffect. We now update the IDL
for KeyframeEffect to mark the target property as read-write and update the implementation
to correctly handle null targets.

This revealed a few issues in our implementation by allowing more WPT tests to run. So we also
ensure that:

- we don't crash when parsing font-related properties by calling update() on the generated
RenderStyle's FontCascade when parsing keyframes.

- CSS properties are provided as camel-case and not as hyphenated form

- values provided in keyframes dictionaries are only read for valid properties

- styles for effect targets are invalidated as soon as the timing model for that animation
is changed

* animation/KeyframeEffect.idl:
* animation/KeyframeEffectReadOnly.cpp:
(WebCore::invalidateElement): Add a new utility method to invalidate a given element since
we may want to invalidate not only the current target (m_target) but also a previous target.
(WebCore::IDLAttributeNameToAnimationPropertyName): Move this function below CSSPropertyIDToIDLAttributeName
so that it can call that function. We also check that we reject CSS properties that are not provided in
camel-case form (eg. "font-size" vs. "fontSize").
(WebCore::processIterableKeyframes): Only read the JS values if we know that the provided JS property name
maps to a valid CSS property.
(WebCore::KeyframeEffectReadOnly::processKeyframes): Allow keyframes to be processed even if the effect's
target is null.
(WebCore::KeyframeEffectReadOnly::setTarget): Notify the animation that the effect target has changed and
invalidate the style of the new target and the old targets, if any. We also update the blending keyframes
since this task may not have been completed in a previous call to processKeyframes() due to the target being
null at that time.
(WebCore::KeyframeEffectReadOnly::invalidate): Use the invalidateElement() utility.
* animation/KeyframeEffectReadOnly.h:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::effectTargetDidChange): This method is called in KeyframeEffectReadOnly::setTarget()
to inform the animation of the previous effect target and the new one upon a target change. This allows us to
forward this information onto the timeline so that we correctly add or remove the targets from the list of
animated elements.
* animation/WebAnimation.h:

LayoutTests:

Add some platform-specific results for Sierra where we don't support the "font-variation-settings" property.

* platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt: Added.
* platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt: Added.
* platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228717 268f45cc-cd09-0410-ab3c-d52691b4dbfc

17 files changed:
LayoutTests/ChangeLog
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/animation/KeyframeEffect.idl
Source/WebCore/animation/KeyframeEffectReadOnly.cpp
Source/WebCore/animation/KeyframeEffectReadOnly.h
Source/WebCore/animation/WebAnimation.cpp
Source/WebCore/animation/WebAnimation.h

index ec7c29a..367147f 100644 (file)
@@ -1,3 +1,16 @@
+2018-02-19  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Make KeyframeEffect target nullable and read-write
+        https://bugs.webkit.org/show_bug.cgi?id=182741
+
+        Reviewed by Dean Jackson.
+
+        Add some platform-specific results for Sierra where we don't support the "font-variation-settings" property.
+
+        * platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt: Added.
+        * platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt: Added.
+        * platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt: Added.
+
 2018-02-19  Dean Jackson  <dino@apple.com>
 
         SIGFPE @ int WebCore::SVGToOTFFontConverter::scaleUnitsPerEm<int> const + 45
index bee300b..352f039 100644 (file)
@@ -1,3 +1,20 @@
+2018-02-19  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Make KeyframeEffect target nullable and read-write
+        https://bugs.webkit.org/show_bug.cgi?id=182741
+
+        Reviewed by Dean Jackson.
+
+        Update test expectations with progressions resulting from handling null values for a keyframe effect's target
+        as well as making the KeyframeEffect target a read-write property. 
+
+        * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
+        * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
+
 2018-02-17  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Store all parsed keyframe input information in a single structure
index 8928f77..0a7d5ca 100644 (file)
@@ -1,4 +1,231 @@
 
-Harness Error (TIMEOUT), message = null
-
+PASS background-color (type: color) has testAccumulation function 
+FAIL background-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS background-image (type: discrete) has testAccumulation function 
+FAIL background-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL background-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-bottom-color (type: color) has testAccumulation function 
+FAIL border-bottom-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-bottom-width (type: length) has testAccumulation function 
+FAIL border-bottom-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-bottom-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-image-outset (type: discrete) has testAccumulation function 
+PASS border-image-outset: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-outset: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-slice (type: discrete) has testAccumulation function 
+PASS border-image-slice: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-slice: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-source (type: discrete) has testAccumulation function 
+FAIL border-image-source: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL border-image-source: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-image-width (type: discrete) has testAccumulation function 
+PASS border-image-width: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-width: "1 2 3 4" onto "5 6 7 8" 
+PASS border-left-color (type: color) has testAccumulation function 
+FAIL border-left-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-left-width (type: length) has testAccumulation function 
+FAIL border-left-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-left-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-right-color (type: color) has testAccumulation function 
+FAIL border-right-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-right-width (type: length) has testAccumulation function 
+FAIL border-right-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-right-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-spacing (type: lengthPair) has testAccumulation function 
+FAIL border-spacing: length pair assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "10px 10px"
+FAIL border-spacing: length pair of rem assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "1px 1px"
+PASS border-top-color (type: color) has testAccumulation function 
+FAIL border-top-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-top-width (type: length) has testAccumulation function 
+FAIL border-top-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-top-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS box-shadow (type: boxShadowList) has testAccumulation function 
+FAIL box-shadow: shadow assert_equals: The value should be rgb(240, 240, 240) 20px 20px 20px 20px at 0ms expected "rgb(240, 240, 240) 20px 20px 20px 20px" but got "rgb(120, 120, 120) 10px 10px 10px 10px"
+PASS caret-color (type: color) has testAccumulation function 
+FAIL caret-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS clip (type: rect) has testAccumulation function 
+FAIL clip: rect assert_equals: The value should be rect(110px, 110px, 110px, 110px) at 0ms expected "rect(110px, 110px, 110px, 110px)" but got "rect(10px, 10px, 10px, 10px)"
+PASS clip (type: discrete) has testAccumulation function 
+PASS clip: "auto" onto "rect(10px, 10px, 10px, 10px)" 
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "auto" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, auto)" onto "rect(10px, 10px, 10px, 10px)" assert_equals: The value should be rect(10px, 10px, 10px, auto) at 0ms expected "rect(10px, 10px, 10px, auto)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "rect(10px, 10px, 10px, auto)" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+PASS color (type: color) has testAccumulation function 
+FAIL color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-count (type: positiveInteger) has testAccumulation function 
+FAIL column-count: positive integer assert_equals: The value should be 3 at 0ms expected "3" but got "2"
+PASS column-count (type: discrete) has testAccumulation function 
+PASS column-count: "10" onto "auto" 
+FAIL column-count: "auto" onto "10" assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+PASS column-gap (type: length) has testAccumulation function 
+FAIL column-gap: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-gap: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-gap (type: discrete) has testAccumulation function 
+PASS column-gap: "200px" onto "normal" 
+PASS column-gap: "normal" onto "200px" 
+PASS column-rule-color (type: color) has testAccumulation function 
+FAIL column-rule-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-rule-width (type: length) has testAccumulation function 
+FAIL column-rule-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL column-rule-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS column-width (type: length) has testAccumulation function 
+FAIL column-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-width (type: discrete) has testAccumulation function 
+PASS column-width: "1px" onto "auto" 
+FAIL column-width: "auto" onto "1px" assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+PASS fill-opacity (type: opacity) has testAccumulation function 
+FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS filter (type: filterList) has testAccumulation function 
+FAIL filter: same ordered filter functions assert_equals: The value should be blur(30px) brightness(0) at 0ms expected "blur(30px) brightness(0)" but got "blur(20px) brightness(0.1)"
+PASS filter: mismatched ordered filter functions 
+PASS flood-color (type: color) has testAccumulation function 
+FAIL flood-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS flood-opacity (type: opacity) has testAccumulation function 
+FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS font-stretch (type: fontStretch) has testAccumulation function 
+FAIL font-stretch uses font-stretch behavior for composite type accumulate assert_equals: The value should be normal at 0ms expected "normal" but got "expanded"
+PASS font-style (type: discrete) has testAccumulation function 
+PASS font-style: "oblique" onto "italic" 
+FAIL font-style: "italic" onto "oblique" assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+PASS font-variation-settings (type: fontVariationSettings) has testAccumulation function 
+FAIL font-variation-settings with composite type accumulate assert_equals: The value should be "wght" 2.2 at 250ms expected "\"wght\" 2.2" but got "'wght' 1.2"
+PASS font-variation-settings (type: discrete) has testAccumulation function 
+FAIL font-variation-settings: ""wdth" 5" onto ""wght" 1.1, "wdth" 1" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
+FAIL font-variation-settings: ""wght" 1.1, "wdth" 1" onto ""wdth" 5" assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "'wght' 1.1, 'wdth' 1"
+PASS font-variation-settings: "normal" onto ""wdth" 5" 
+FAIL font-variation-settings: ""wdth" 5" onto "normal" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
+PASS letter-spacing (type: length) has testAccumulation function 
+FAIL letter-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL letter-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS lighting-color (type: color) has testAccumulation function 
+FAIL lighting-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS list-style-image (type: discrete) has testAccumulation function 
+FAIL list-style-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL list-style-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS outline-color (type: color) has testAccumulation function 
+FAIL outline-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS outline-offset (type: length) has testAccumulation function 
+FAIL outline-offset: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-offset: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS outline-width (type: length) has testAccumulation function 
+FAIL outline-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS perspective (type: length) has testAccumulation function 
+FAIL perspective: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL perspective: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS shape-outside (type: discrete) has testAccumulation function 
+FAIL shape-outside: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS stop-color (type: color) has testAccumulation function 
+FAIL stop-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS stop-opacity (type: opacity) has testAccumulation function 
+FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS stroke-dasharray (type: dasharray) has testAccumulation function 
+FAIL stroke-dasharray: dasharray assert_equals: The value should be 1, 2, 3, 4, 5 at 0ms expected "1, 2, 3, 4, 5" but got "1px, 2px, 3px, 4px, 5px"
+PASS stroke-dasharray (type: discrete) has testAccumulation function 
+FAIL stroke-dasharray: "10, 20" onto "none" assert_equals: The value should be 10, 20 at 0ms expected "10, 20" but got "10px, 20px"
+PASS stroke-dasharray: "none" onto "10, 20" 
+PASS stroke-miterlimit (type: positiveNumber) has testAccumulation function 
+FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "1.100000023841858"
+PASS stroke-opacity (type: opacity) has testAccumulation function 
+FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS text-shadow (type: textShadowList) has testAccumulation function 
+FAIL text-shadow: shadow assert_equals: The value should be rgb(240, 240, 240) 20px 20px 20px at 0ms expected "rgb(240, 240, 240) 20px 20px 20px" but got "rgb(120, 120, 120) 10px 10px 10px"
+PASS transform (type: transformList) has testAccumulation function 
+FAIL transform: translate assert_approx_equals: expected matrix(1,0,0,1,-100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0): The value should be matrix(1,0,0,1,-100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0) expected -100 +/- 0.0001 but got -200
+FAIL transform: rotate assert_approx_equals: expected matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0) expected 0.7071067811865476 +/- 0.0001 but got 6.123233995736766e-17
+FAIL transform: scale assert_approx_equals: expected matrix(-2,0,0,-2,0,0) but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0): The value should be matrix(-2,0,0,-2,0,0) at 0ms but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0) expected -2 +/- 0.0001 but got -3
+FAIL transform: skew assert_approx_equals: expected matrix(1,0.5773502691896256,-0.36397023426620234,1,0,0) but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0): The value should be matrix(1,0.5773502691896256,-0.36397023426620234,1,0,0) at 0ms but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0) expected 0.5773502691896256 +/- 0.0001 but got 0.36397023426620234
+FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0) expected 100 +/- 0.0001 but got 0
+FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
+FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
+FAIL transform: none assert_equals: dimension of the matrix: The value should be matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1) at 0ms but got matrix(1, 0, 0, 1, 0, 0) expected 16 but got 6
+FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+PASS visibility (type: visibility) has testAccumulation function 
+FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
+PASS visibility: onto "hidden" 
+PASS word-spacing (type: lengthPercentageOrCalc) has testAccumulation function 
+FAIL word-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL word-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+FAIL word-spacing: percentage assert_equals: The value should be 130% at 0ms expected "130%" but got "1.75px"
+FAIL word-spacing: units "%" onto "px" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "0.25px"
+FAIL word-spacing: units "px" onto "%" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "10px"
+FAIL word-spacing: units "rem" onto "%" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "2px"
+FAIL word-spacing: units "%" onto "rem" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "0.25px"
+FAIL word-spacing: units "rem" onto "em" assert_equals: The value should be 40px at 0ms expected "40px" but got "2px"
+FAIL word-spacing: units "em" onto "rem" assert_equals: The value should be 40px at 0ms expected "40px" but got "0px"
+FAIL word-spacing: units "calc" onto "px" assert_equals: The value should be calc(30px + 20%) at 0ms expected "calc(30px + 20%)" but got "0px"
+FAIL word-spacing: calc assert_equals: The value should be calc(30px + 30%) at 0ms expected "calc(30px + 30%)" but got "0px"
 
index 8928f77..17e53d3 100644 (file)
@@ -1,4 +1,227 @@
 
-Harness Error (TIMEOUT), message = null
-
+PASS background-color (type: color) has testAddition function 
+FAIL background-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS background-image (type: discrete) has testAddition function 
+FAIL background-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL background-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-bottom-color (type: color) has testAddition function 
+FAIL border-bottom-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-bottom-width (type: length) has testAddition function 
+FAIL border-bottom-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-bottom-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-image-outset (type: discrete) has testAddition function 
+PASS border-image-outset: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-outset: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-slice (type: discrete) has testAddition function 
+PASS border-image-slice: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-slice: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-source (type: discrete) has testAddition function 
+FAIL border-image-source: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL border-image-source: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-image-width (type: discrete) has testAddition function 
+PASS border-image-width: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-width: "1 2 3 4" onto "5 6 7 8" 
+PASS border-left-color (type: color) has testAddition function 
+FAIL border-left-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-left-width (type: length) has testAddition function 
+FAIL border-left-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-left-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-right-color (type: color) has testAddition function 
+FAIL border-right-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-right-width (type: length) has testAddition function 
+FAIL border-right-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-right-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-spacing (type: lengthPair) has testAddition function 
+FAIL border-spacing: length pair assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "10px 10px"
+FAIL border-spacing: length pair of rem assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "1px 1px"
+PASS border-top-color (type: color) has testAddition function 
+FAIL border-top-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-top-width (type: length) has testAddition function 
+FAIL border-top-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-top-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS box-shadow (type: boxShadowList) has testAddition function 
+FAIL box-shadow: shadow assert_equals: The value should be rgb(0, 0, 0) 0px 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px 0px at 0ms expected "rgb(0, 0, 0) 0px 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px 0px" but got "rgb(120, 120, 120) 10px 10px 10px 0px"
+PASS caret-color (type: color) has testAddition function 
+FAIL caret-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS clip (type: rect) has testAddition function 
+FAIL clip: rect assert_equals: The value should be rect(110px, 110px, 110px, 110px) at 0ms expected "rect(110px, 110px, 110px, 110px)" but got "rect(10px, 10px, 10px, 10px)"
+PASS clip (type: discrete) has testAddition function 
+PASS clip: "auto" onto "rect(10px, 10px, 10px, 10px)" 
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "auto" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, auto)" onto "rect(10px, 10px, 10px, 10px)" assert_equals: The value should be rect(10px, 10px, 10px, auto) at 0ms expected "rect(10px, 10px, 10px, auto)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "rect(10px, 10px, 10px, auto)" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+PASS color (type: color) has testAddition function 
+FAIL color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-count (type: positiveInteger) has testAddition function 
+FAIL column-count: positive integer assert_equals: The value should be 3 at 0ms expected "3" but got "2"
+PASS column-count (type: discrete) has testAddition function 
+PASS column-count: "10" onto "auto" 
+FAIL column-count: "auto" onto "10" assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+PASS column-gap (type: length) has testAddition function 
+FAIL column-gap: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-gap: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-gap (type: discrete) has testAddition function 
+PASS column-gap: "200px" onto "normal" 
+PASS column-gap: "normal" onto "200px" 
+PASS column-rule-color (type: color) has testAddition function 
+FAIL column-rule-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-rule-width (type: length) has testAddition function 
+FAIL column-rule-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL column-rule-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS column-width (type: length) has testAddition function 
+FAIL column-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-width (type: discrete) has testAddition function 
+PASS column-width: "1px" onto "auto" 
+FAIL column-width: "auto" onto "1px" assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+PASS fill-opacity (type: opacity) has testAddition function 
+FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS filter (type: filterList) has testAddition function 
+FAIL filter: blur on blur assert_equals: The value should be blur(10px) blur(20px) at 0ms expected "blur(10px) blur(20px)" but got "blur(50px)"
+FAIL filter: different filter functions assert_equals: The value should be blur(10px) brightness(0.8) at 0ms expected "blur(10px) brightness(0.8)" but got "brightness(0.4)"
+PASS flood-color (type: color) has testAddition function 
+FAIL flood-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS flood-opacity (type: opacity) has testAddition function 
+FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS font-stretch (type: fontStretch) has testAddition function 
+FAIL font-stretch uses font-stretch behavior for composite type add assert_equals: The value should be normal at 0ms expected "normal" but got "expanded"
+PASS font-style (type: discrete) has testAddition function 
+PASS font-style: "oblique" onto "italic" 
+FAIL font-style: "italic" onto "oblique" assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+PASS font-variation-settings (type: fontVariationSettings) has testAddition function 
+FAIL font-variation-settings with composite type add assert_equals: The value should be "wght" 2.2 at 250ms expected "\"wght\" 2.2" but got "'wght' 1.2"
+PASS font-variation-settings (type: discrete) has testAddition function 
+FAIL font-variation-settings: ""wdth" 5" onto ""wght" 1.1, "wdth" 1" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
+FAIL font-variation-settings: ""wght" 1.1, "wdth" 1" onto ""wdth" 5" assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "'wght' 1.1, 'wdth' 1"
+PASS font-variation-settings: "normal" onto ""wdth" 5" 
+FAIL font-variation-settings: ""wdth" 5" onto "normal" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
+PASS letter-spacing (type: length) has testAddition function 
+FAIL letter-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL letter-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS lighting-color (type: color) has testAddition function 
+FAIL lighting-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS list-style-image (type: discrete) has testAddition function 
+FAIL list-style-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL list-style-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS outline-color (type: color) has testAddition function 
+FAIL outline-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS outline-offset (type: length) has testAddition function 
+FAIL outline-offset: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-offset: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS outline-width (type: length) has testAddition function 
+FAIL outline-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS perspective (type: length) has testAddition function 
+FAIL perspective: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL perspective: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS shape-outside (type: discrete) has testAddition function 
+FAIL shape-outside: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS stop-color (type: color) has testAddition function 
+FAIL stop-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS stop-opacity (type: opacity) has testAddition function 
+FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS stroke-dasharray (type: dasharray) has testAddition function 
+FAIL stroke-dasharray: dasharray assert_equals: The value should be 1, 2, 3, 4, 5 at 0ms expected "1, 2, 3, 4, 5" but got "1px, 2px, 3px, 4px, 5px"
+PASS stroke-dasharray (type: discrete) has testAddition function 
+FAIL stroke-dasharray: "10, 20" onto "none" assert_equals: The value should be 10, 20 at 0ms expected "10, 20" but got "10px, 20px"
+PASS stroke-dasharray: "none" onto "10, 20" 
+PASS stroke-miterlimit (type: positiveNumber) has testAddition function 
+FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "1.100000023841858"
+PASS stroke-opacity (type: opacity) has testAddition function 
+FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS text-shadow (type: textShadowList) has testAddition function 
+FAIL text-shadow: shadow assert_equals: The value should be rgb(0, 0, 0) 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px at 0ms expected "rgb(0, 0, 0) 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px" but got "rgb(120, 120, 120) 10px 10px 10px"
+PASS transform (type: transformList) has testAddition function 
+FAIL transform: translate assert_approx_equals: expected matrix(1,0,0,1,-100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0): The value should be matrix(1,0,0,1,-100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0) expected -100 +/- 0.0001 but got -200
+FAIL transform: rotate assert_approx_equals: expected matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0) expected 0.7071067811865476 +/- 0.0001 but got 6.123233995736766e-17
+FAIL transform: scale assert_approx_equals: expected matrix(-6,0,0,-6,0,0) but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0): The value should be matrix(-6,0,0,-6,0,0) at 0ms but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0) expected -6 +/- 0.0001 but got -3
+FAIL transform: skew assert_approx_equals: expected matrix(1.064177772475912,0.5402972149746673,-0.40102328848116064,0.8981975702225738,0,0) but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0): The value should be matrix(1.064177772475912,0.5402972149746673,-0.40102328848116064,0.8981975702225738,0,0) at 0ms but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0) expected 1.064177772475912 +/- 0.0001 but got 1
+FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0) expected 100 +/- 0.0001 but got 0
+FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,0,100) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,0,100) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,0,100) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,0,100) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
+FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
+FAIL transform: non-invertible matrices assert_approx_equals: expected matrix(-1,0,0,-1,250,0) but got matrix(-1, 0.00000000000000012246467991473532, -0.00000000000000012246467991473532, -1, 200, 0): The value should be matrix(-1,0,0,-1,250,0) at 0ms but got matrix(-1, 0.00000000000000012246467991473532, -0.00000000000000012246467991473532, -1, 200, 0) expected 250 +/- 0.0001 but got 200
+FAIL transform: non-invertible matrices in matched transform lists assert_approx_equals: expected matrix(0,-1,1,0,250,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 200, 0): The value should be matrix(0,-1,1,0,250,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 200, 0) expected 250 +/- 0.0001 but got 200
+FAIL transform: non-invertible matrices in mismatched transform lists assert_approx_equals: expected matrix(-2,0,0,-2,250,0) but got matrix(-2, 0.00000000000000024492935982947064, -0.00000000000000024492935982947064, -2, 200, 0): The value should be matrix(-2,0,0,-2,250,0) at 0ms but got matrix(-2, 0.00000000000000024492935982947064, -0.00000000000000024492935982947064, -2, 200, 0) expected 250 +/- 0.0001 but got 200
+PASS visibility (type: visibility) has testAddition function 
+FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
+PASS visibility: onto "hidden" 
+PASS word-spacing (type: lengthPercentageOrCalc) has testAddition function 
+FAIL word-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL word-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+FAIL word-spacing: percentage assert_equals: The value should be 130% at 0ms expected "130%" but got "1.75px"
+FAIL word-spacing: units "%" onto "px" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "0.25px"
+FAIL word-spacing: units "px" onto "%" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "10px"
+FAIL word-spacing: units "rem" onto "%" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "2px"
+FAIL word-spacing: units "%" onto "rem" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "0.25px"
+FAIL word-spacing: units "rem" onto "em" assert_equals: The value should be 40px at 0ms expected "40px" but got "2px"
+FAIL word-spacing: units "em" onto "rem" assert_equals: The value should be 40px at 0ms expected "40px" but got "0px"
+FAIL word-spacing: units "calc" onto "px" assert_equals: The value should be calc(30px + 20%) at 0ms expected "calc(30px + 20%)" but got "0px"
+FAIL word-spacing: calc assert_equals: The value should be calc(30px + 30%) at 0ms expected "calc(30px + 30%)" but got "0px"
 
index 8928f77..24f14c6 100644 (file)
@@ -1,4 +1,268 @@
 
-Harness Error (TIMEOUT), message = null
-
+PASS background-color (type: color) has testInterpolation function 
+PASS background-color supports animating as color of rgb() 
+PASS background-color supports animating as color of #RGB 
+PASS background-color supports animating as color of hsl() 
+PASS background-color supports animating as color of #RGBa 
+PASS background-color supports animating as color of rgba() 
+PASS background-color supports animating as color of hsla() 
+PASS background-image (type: discrete) has testInterpolation function 
+FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-bottom-color (type: color) has testInterpolation function 
+PASS border-bottom-color supports animating as color of rgb() 
+PASS border-bottom-color supports animating as color of #RGB 
+PASS border-bottom-color supports animating as color of hsl() 
+PASS border-bottom-color supports animating as color of #RGBa 
+PASS border-bottom-color supports animating as color of rgba() 
+PASS border-bottom-color supports animating as color of hsla() 
+PASS border-bottom-width (type: length) has testInterpolation function 
+FAIL border-bottom-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-bottom-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS border-image-outset (type: discrete) has testInterpolation function 
+FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
+FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+PASS border-image-slice (type: discrete) has testInterpolation function 
+FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
+FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+PASS border-image-source (type: discrete) has testInterpolation function 
+FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-image-width (type: discrete) has testInterpolation function 
+FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
+FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+PASS border-left-color (type: color) has testInterpolation function 
+PASS border-left-color supports animating as color of rgb() 
+PASS border-left-color supports animating as color of #RGB 
+PASS border-left-color supports animating as color of hsl() 
+PASS border-left-color supports animating as color of #RGBa 
+PASS border-left-color supports animating as color of rgba() 
+PASS border-left-color supports animating as color of hsla() 
+PASS border-left-width (type: length) has testInterpolation function 
+FAIL border-left-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-left-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS border-right-color (type: color) has testInterpolation function 
+PASS border-right-color supports animating as color of rgb() 
+PASS border-right-color supports animating as color of #RGB 
+PASS border-right-color supports animating as color of hsl() 
+PASS border-right-color supports animating as color of #RGBa 
+PASS border-right-color supports animating as color of rgba() 
+PASS border-right-color supports animating as color of hsla() 
+PASS border-right-width (type: length) has testInterpolation function 
+FAIL border-right-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-right-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS border-spacing (type: lengthPair) has testInterpolation function 
+PASS border-spacing supports animating as a length pair 
+FAIL border-spacing supports animating as a length pair of rem assert_equals: The value should be 30px 30px at 500ms expected "30px 30px" but got "3px 3px"
+PASS border-top-color (type: color) has testInterpolation function 
+PASS border-top-color supports animating as color of rgb() 
+PASS border-top-color supports animating as color of #RGB 
+PASS border-top-color supports animating as color of hsl() 
+PASS border-top-color supports animating as color of #RGBa 
+PASS border-top-color supports animating as color of rgba() 
+PASS border-top-color supports animating as color of hsla() 
+PASS border-top-width (type: length) has testInterpolation function 
+FAIL border-top-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-top-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS box-shadow (type: boxShadowList) has testInterpolation function 
+FAIL box-shadow: from none to other assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+FAIL box-shadow: from other to none assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+PASS box-shadow: single shadow 
+PASS box-shadow: shadow list 
+FAIL box-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+FAIL box-shadow: mismatched list length (from longer to shorter) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+FAIL box-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px 5px"
+PASS caret-color (type: color) has testInterpolation function 
+PASS caret-color supports animating as color of rgb() 
+PASS caret-color supports animating as color of #RGB 
+PASS caret-color supports animating as color of hsl() 
+PASS caret-color supports animating as color of #RGBa 
+PASS caret-color supports animating as color of rgba() 
+PASS caret-color supports animating as color of hsla() 
+PASS clip (type: rect) has testInterpolation function 
+FAIL clip supports animating as a rect assert_equals: The value should be rect(30px, 30px, 30px, 30px) at 500ms expected "rect(30px, 30px, 30px, 30px)" but got "auto"
+PASS clip (type: discrete) has testInterpolation function 
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with linear easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with effect easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with keyframe easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with linear easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with effect easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with keyframe easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+PASS color (type: color) has testInterpolation function 
+PASS color supports animating as color of rgb() 
+PASS color supports animating as color of #RGB 
+PASS color supports animating as color of hsl() 
+PASS color supports animating as color of #RGBa 
+PASS color supports animating as color of rgba() 
+PASS color supports animating as color of hsla() 
+PASS column-count (type: positiveInteger) has testInterpolation function 
+PASS column-count supports animating as a positive integer 
+PASS column-count (type: discrete) has testInterpolation function 
+FAIL column-count uses discrete animation when animating between "auto" and "10" with linear easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+FAIL column-count uses discrete animation when animating between "auto" and "10" with effect easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+FAIL column-count uses discrete animation when animating between "auto" and "10" with keyframe easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+PASS column-gap (type: length) has testInterpolation function 
+PASS column-gap supports animating as a length 
+FAIL column-gap supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS column-gap (type: discrete) has testInterpolation function 
+FAIL column-gap uses discrete animation when animating between "normal" and "200px" with linear easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
+FAIL column-gap uses discrete animation when animating between "normal" and "200px" with effect easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
+FAIL column-gap uses discrete animation when animating between "normal" and "200px" with keyframe easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
+PASS column-rule-color (type: color) has testInterpolation function 
+PASS column-rule-color supports animating as color of rgb() 
+PASS column-rule-color supports animating as color of #RGB 
+PASS column-rule-color supports animating as color of hsl() 
+PASS column-rule-color supports animating as color of #RGBa 
+PASS column-rule-color supports animating as color of rgba() 
+PASS column-rule-color supports animating as color of hsla() 
+PASS column-rule-width (type: length) has testInterpolation function 
+FAIL column-rule-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL column-rule-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS column-width (type: length) has testInterpolation function 
+PASS column-width supports animating as a length 
+FAIL column-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS column-width (type: discrete) has testInterpolation function 
+FAIL column-width uses discrete animation when animating between "auto" and "1px" with linear easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+FAIL column-width uses discrete animation when animating between "auto" and "1px" with effect easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+FAIL column-width uses discrete animation when animating between "auto" and "1px" with keyframe easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+PASS fill-opacity (type: opacity) has testInterpolation function 
+FAIL fill-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS filter (type: filterList) has testInterpolation function 
+FAIL filter: blur function assert_equals: The value should be blur(30px) at 500ms expected "blur(30px)" but got "blur(50px)"
+FAIL filter: hue-rotate function with same unit(deg) assert_equals: The value should be hue-rotate(50deg) at 500ms expected "hue-rotate(50deg)" but got "hue-rotate(100deg)"
+FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(50.0873rad) at 500ms expected "hue-rotate(50.0873rad)" but got "hue-rotate(5729.5779513082325deg)"
+FAIL filter: drop-shadow function assert_equals: The value should be drop-shadow(rgba(85, 0, 170, 0.6) 30px 30px 30px) at 500ms expected "drop-shadow(rgba(85, 0, 170, 0.6) 30px 30px 30px)" but got "drop-shadow(rgba(0, 0, 255, 0.8) 50px 50px 50px)"
+FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.5) contrast(0.5) grayscale(0.5) invert(0.5) opacity(0.5) saturate(0.5) sepia(0.5)"
+FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.5) contrast(0.5) grayscale(0.5) invert(0.5) opacity(0.5) saturate(0.5) sepia(0.5)"
+FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)"
+FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0) grayscale(1) invert(1) sepia(1) blur(10px)"
+FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px at 500ms expected "blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)"
+FAIL filter: interpolate from none assert_equals: The value should be blur(5px) at 500ms expected "blur(5px)" but got "blur(10px)"
+FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(10px) url(#f2)"
+PASS flood-color (type: color) has testInterpolation function 
+PASS flood-color supports animating as color of rgb() 
+PASS flood-color supports animating as color of #RGB 
+PASS flood-color supports animating as color of hsl() 
+PASS flood-color supports animating as color of #RGBa 
+PASS flood-color supports animating as color of rgba() 
+PASS flood-color supports animating as color of hsla() 
+PASS flood-opacity (type: opacity) has testInterpolation function 
+FAIL flood-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS font-stretch (type: fontStretch) has testInterpolation function 
+FAIL font-stretch supports animating as a font-stretch (adjacent values) assert_equals: The value should be ultra-condensed at 499ms expected "ultra-condensed" but got "56%"
+PASS font-stretch supports animating as a font-stretch (between value) 
+PASS font-style (type: discrete) has testInterpolation function 
+FAIL font-style uses discrete animation when animating between "italic" and "oblique" with linear easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+FAIL font-style uses discrete animation when animating between "italic" and "oblique" with effect easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+FAIL font-style uses discrete animation when animating between "italic" and "oblique" with keyframe easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+PASS font-variation-settings (type: fontVariationSettings) has testInterpolation function 
+FAIL font-variation-settings supports animation as float assert_equals: The value should be "wght" 1.1 at 0ms expected "\"wght\" 1.1" but got "'wght' 1.1"
+FAIL font-variation-settings supports animation as float with multiple tags assert_array_equals: The computed values should be "wdth" 1,"wght" 1.1 at 0ms property 0, expected "\"wdth\" 1" but got "'wdth' 1"
+FAIL font-variation-settings supports animation as float with multiple duplicate tags assert_array_equals: The computed values should be "wdth" 2,"wght" 1.2 at 250ms lengths differ, expected 2 got 1
+PASS font-variation-settings (type: discrete) has testInterpolation function 
+FAIL font-variation-settings uses discrete animation when animating between ""wght" 1.1, "wdth" 1" and ""wdth" 5" with linear easing assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "normal"
+FAIL font-variation-settings uses discrete animation when animating between ""wght" 1.1, "wdth" 1" and ""wdth" 5" with effect easing assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "normal"
+FAIL font-variation-settings uses discrete animation when animating between ""wght" 1.1, "wdth" 1" and ""wdth" 5" with keyframe easing assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "normal"
+FAIL font-variation-settings uses discrete animation when animating between ""wdth" 5" and "normal" with linear easing assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "normal"
+FAIL font-variation-settings uses discrete animation when animating between ""wdth" 5" and "normal" with effect easing assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "normal"
+FAIL font-variation-settings uses discrete animation when animating between ""wdth" 5" and "normal" with keyframe easing assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "normal"
+PASS letter-spacing (type: length) has testInterpolation function 
+PASS letter-spacing supports animating as a length 
+FAIL letter-spacing supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS lighting-color (type: color) has testInterpolation function 
+PASS lighting-color supports animating as color of rgb() 
+PASS lighting-color supports animating as color of #RGB 
+PASS lighting-color supports animating as color of hsl() 
+PASS lighting-color supports animating as color of #RGBa 
+PASS lighting-color supports animating as color of rgba() 
+PASS lighting-color supports animating as color of hsla() 
+PASS list-style-image (type: discrete) has testInterpolation function 
+FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS outline-color (type: color) has testInterpolation function 
+PASS outline-color supports animating as color of rgb() 
+PASS outline-color supports animating as color of #RGB 
+PASS outline-color supports animating as color of hsl() 
+PASS outline-color supports animating as color of #RGBa 
+PASS outline-color supports animating as color of rgba() 
+PASS outline-color supports animating as color of hsla() 
+PASS outline-offset (type: length) has testInterpolation function 
+FAIL outline-offset supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL outline-offset supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS outline-width (type: length) has testInterpolation function 
+FAIL outline-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL outline-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS perspective (type: length) has testInterpolation function 
+PASS perspective supports animating as a length 
+FAIL perspective supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS shape-outside (type: discrete) has testInterpolation function 
+FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
+PASS stop-color (type: color) has testInterpolation function 
+PASS stop-color supports animating as color of rgb() 
+PASS stop-color supports animating as color of #RGB 
+PASS stop-color supports animating as color of hsl() 
+PASS stop-color supports animating as color of #RGBa 
+PASS stop-color supports animating as color of rgba() 
+PASS stop-color supports animating as color of hsla() 
+PASS stop-opacity (type: opacity) has testInterpolation function 
+FAIL stop-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS stroke-dasharray (type: dasharray) has testInterpolation function 
+PASS stroke-dasharray supports animating as a percentage 
+FAIL stroke-dasharray supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842px"
+FAIL stroke-dasharray supports animating as a dasharray (mismatched length) assert_equals: The value should be 6, 12, 8, 12, 10, 6, 10, 16, 4, 8, 14, 10 at 500ms expected "6, 12, 8, 12, 10, 6, 10, 16, 4, 8, 14, 10" but got "6px, 12px, 8px, 12px, 10px, 6px, 10px, 16px, 4px, 8px, 14px, 10px"
+FAIL stroke-dasharray supports animating as a dasharray (mixed number and percentage) assert_equals: The value should be 4, 40%, 4, 6 at 500ms expected "4, 40%, 4, 6" but got "4px, 40%, 4px, 6px"
+PASS stroke-dasharray (type: discrete) has testInterpolation function 
+FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with linear easing assert_equals: The value should be none at 499ms expected "none" but got "10px, 20px"
+FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with effect easing assert_equals: The value should be none at 940ms expected "none" but got "10px, 20px"
+FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with keyframe easing assert_equals: The value should be none at 940ms expected "none" but got "10px, 20px"
+PASS stroke-miterlimit (type: positiveNumber) has testInterpolation function 
+FAIL stroke-miterlimit supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842"
+PASS stroke-opacity (type: opacity) has testInterpolation function 
+FAIL stroke-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS text-shadow (type: textShadowList) has testInterpolation function 
+FAIL text-shadow: from none to other assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+FAIL text-shadow: from other to none assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+PASS text-shadow: single shadow 
+PASS text-shadow: shadow list 
+FAIL text-shadow: mismatched list length (from longer to shorter) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+FAIL text-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+FAIL text-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px"
+PASS transform (type: transformList) has testInterpolation function 
+FAIL transform: translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: scale assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: skew assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotate and translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: mismatch order of translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: matrix assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotate3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: matrix3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: mismatched 3D transforms assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotateY assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in matched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in mismatched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+PASS visibility (type: visibility) has testInterpolation function 
+PASS visibility uses visibility animation when animating from "visible" to "hidden" 
+PASS visibility uses visibility animation when animating from "hidden" to "visible" 
+FAIL visibility uses visibility animation when animating from "hidden" to "collapse" assert_equals: The value should be hidden at 0ms expected "hidden" but got "collapse"
+PASS visibility uses visibility animation when animating from "visible" to "hidden" with easeInOutBack easing 
+PASS word-spacing (type: lengthPercentageOrCalc) has testInterpolation function 
+PASS word-spacing supports animating as a length 
+FAIL word-spacing supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+FAIL word-spacing supports animating as a percentage assert_equals: The value should be 30% at 500ms expected "30%" but got "0.75px"
+FAIL word-spacing supports animating as combination units "px" and "%" assert_equals: The value should be calc(5px + 10%) at 500ms expected "calc(5px + 10%)" but got "3355448px"
+FAIL word-spacing supports animating as combination units "%" and "em" assert_equals: The value should be calc(10px + 5%) at 500ms expected "calc(10px + 5%)" but got "0.125px"
+FAIL word-spacing supports animating as combination units "em" and "rem" assert_equals: The value should be 15px at 500ms expected "15px" but got "1px"
+FAIL word-spacing supports animating as combination units "px" and "calc" assert_equals: The value should be calc(10px + 10%) at 500ms expected "calc(10px + 10%)" but got "0px"
+FAIL word-spacing supports animating as a calc assert_equals: The value should be calc(15px + 15%) at 500ms expected "calc(15px + 15%)" but got "0px"
 
index 746b3f6..b548ced 100644 (file)
@@ -28,7 +28,7 @@ PASS KeyframeEffect interface object length
 PASS KeyframeEffect interface object name 
 PASS KeyframeEffect interface: existence and properties of interface prototype object 
 PASS KeyframeEffect interface: existence and properties of interface prototype object's "constructor" property 
-FAIL KeyframeEffect interface: attribute target assert_own_property: expected property "target" missing
+PASS KeyframeEffect interface: attribute target 
 PASS KeyframeEffect interface: attribute iterationComposite 
 PASS KeyframeEffect interface: attribute composite 
 PASS KeyframeEffect interface: operation setKeyframes(object) 
index 09b93e5..550df7f 100644 (file)
@@ -38,10 +38,10 @@ PASS Equivalent property-indexed and sequenced keyframes: two properties with th
 PASS Equivalent property-indexed and sequenced keyframes: two properties with different numbers of values 
 PASS Equivalent property-indexed and sequenced keyframes: same easing applied to all keyframes 
 PASS Equivalent property-indexed and sequenced keyframes: same composite applied to all keyframes 
-FAIL Keyframes are read from a custom iterator assert_equals: number of frames expected 3 but got 0
-FAIL 'easing' and 'offset' are ignored on iterable objects assert_equals: number of frames expected 3 but got 0
-FAIL Keyframes are read from a custom iterator with multiple properties specified assert_equals: number of frames expected 3 but got 0
-FAIL Keyframes are read from a custom iterator with where an offset is specified assert_equals: number of frames expected 3 but got 0
+PASS Keyframes are read from a custom iterator 
+PASS 'easing' and 'offset' are ignored on iterable objects 
+PASS Keyframes are read from a custom iterator with multiple properties specified 
+FAIL Keyframes are read from a custom iterator with where an offset is specified assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.75 but got 0.5
 FAIL Reading from a custom iterator that returns a non-object keyframe should throw assert_throws: function "() => {
     new KeyframeEffect(null, createIterable([
       { done: false, value: { left: '100px' } },
@@ -50,10 +50,10 @@ FAIL Reading from a custom iterator that returns a non-object keyframe should th
       { done: true },
     ]));
   }" did not throw
-FAIL A list of values returned from a custom iterator should be ignored assert_equals: number of frames expected 1 but got 0
-FAIL Only enumerable properties on keyframes are read assert_equals: number of frames expected 2 but got 0
-FAIL Only properties defined directly on keyframes are read assert_equals: number of frames expected 2 but got 0
-FAIL Only enumerable properties on property-indexed keyframes are read assert_equals: number of frames expected 2 but got 0
-FAIL Only properties defined directly on property-indexed keyframes are read assert_equals: number of frames expected 2 but got 0
+PASS A list of values returned from a custom iterator should be ignored 
+PASS Only enumerable properties on keyframes are read 
+PASS Only properties defined directly on keyframes are read 
+PASS Only enumerable properties on property-indexed keyframes are read 
+PASS Only properties defined directly on property-indexed keyframes are read 
 FAIL Properties are read in ascending order by Unicode codepoint assert_array_equals: property access order property 0, expected "composite" but got "marginLeft"
 
index c7adab9..a49d481 100644 (file)
@@ -1,6 +1,6 @@
 
-FAIL Test setting target before constructing the associated animation Attempted to assign to readonly property.
-FAIL Test setting target from null to a valid target Attempted to assign to readonly property.
-FAIL Test setting target from a valid target to null Attempted to assign to readonly property.
-FAIL Test setting target from a valid target to another target Attempted to assign to readonly property.
+PASS Test setting target before constructing the associated animation 
+PASS Test setting target from null to a valid target 
+PASS Test setting target from a valid target to null 
+PASS Test setting target from a valid target to another target 
 
diff --git a/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt b/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
new file mode 100644 (file)
index 0000000..7d60e21
--- /dev/null
@@ -0,0 +1,224 @@
+
+PASS background-color (type: color) has testAccumulation function 
+FAIL background-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS background-image (type: discrete) has testAccumulation function 
+FAIL background-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL background-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-bottom-color (type: color) has testAccumulation function 
+FAIL border-bottom-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-bottom-width (type: length) has testAccumulation function 
+FAIL border-bottom-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-bottom-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-image-outset (type: discrete) has testAccumulation function 
+PASS border-image-outset: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-outset: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-slice (type: discrete) has testAccumulation function 
+PASS border-image-slice: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-slice: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-source (type: discrete) has testAccumulation function 
+FAIL border-image-source: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL border-image-source: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-image-width (type: discrete) has testAccumulation function 
+PASS border-image-width: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-width: "1 2 3 4" onto "5 6 7 8" 
+PASS border-left-color (type: color) has testAccumulation function 
+FAIL border-left-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-left-width (type: length) has testAccumulation function 
+FAIL border-left-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-left-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-right-color (type: color) has testAccumulation function 
+FAIL border-right-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-right-width (type: length) has testAccumulation function 
+FAIL border-right-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-right-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-spacing (type: lengthPair) has testAccumulation function 
+FAIL border-spacing: length pair assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "10px 10px"
+FAIL border-spacing: length pair of rem assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "1px 1px"
+PASS border-top-color (type: color) has testAccumulation function 
+FAIL border-top-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-top-width (type: length) has testAccumulation function 
+FAIL border-top-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-top-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS box-shadow (type: boxShadowList) has testAccumulation function 
+FAIL box-shadow: shadow assert_equals: The value should be rgb(240, 240, 240) 20px 20px 20px 20px at 0ms expected "rgb(240, 240, 240) 20px 20px 20px 20px" but got "rgb(120, 120, 120) 10px 10px 10px 10px"
+PASS caret-color (type: color) has testAccumulation function 
+FAIL caret-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS clip (type: rect) has testAccumulation function 
+FAIL clip: rect assert_equals: The value should be rect(110px, 110px, 110px, 110px) at 0ms expected "rect(110px, 110px, 110px, 110px)" but got "rect(10px, 10px, 10px, 10px)"
+PASS clip (type: discrete) has testAccumulation function 
+PASS clip: "auto" onto "rect(10px, 10px, 10px, 10px)" 
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "auto" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, auto)" onto "rect(10px, 10px, 10px, 10px)" assert_equals: The value should be rect(10px, 10px, 10px, auto) at 0ms expected "rect(10px, 10px, 10px, auto)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "rect(10px, 10px, 10px, auto)" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+PASS color (type: color) has testAccumulation function 
+FAIL color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-count (type: positiveInteger) has testAccumulation function 
+FAIL column-count: positive integer assert_equals: The value should be 3 at 0ms expected "3" but got "2"
+PASS column-count (type: discrete) has testAccumulation function 
+PASS column-count: "10" onto "auto" 
+FAIL column-count: "auto" onto "10" assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+PASS column-gap (type: length) has testAccumulation function 
+FAIL column-gap: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-gap: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-gap (type: discrete) has testAccumulation function 
+PASS column-gap: "200px" onto "normal" 
+PASS column-gap: "normal" onto "200px" 
+PASS column-rule-color (type: color) has testAccumulation function 
+FAIL column-rule-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-rule-width (type: length) has testAccumulation function 
+FAIL column-rule-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL column-rule-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS column-width (type: length) has testAccumulation function 
+FAIL column-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-width (type: discrete) has testAccumulation function 
+PASS column-width: "1px" onto "auto" 
+FAIL column-width: "auto" onto "1px" assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+PASS fill-opacity (type: opacity) has testAccumulation function 
+FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS filter (type: filterList) has testAccumulation function 
+FAIL filter: same ordered filter functions assert_equals: The value should be blur(30px) brightness(0) at 0ms expected "blur(30px) brightness(0)" but got "blur(20px) brightness(0.1)"
+PASS filter: mismatched ordered filter functions 
+PASS flood-color (type: color) has testAccumulation function 
+FAIL flood-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS flood-opacity (type: opacity) has testAccumulation function 
+FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS font-stretch (type: fontStretch) has testAccumulation function 
+FAIL font-stretch uses font-stretch behavior for composite type accumulate assert_equals: The value should be normal at 0ms expected "normal" but got "expanded"
+PASS font-style (type: discrete) has testAccumulation function 
+PASS font-style: "oblique" onto "italic" 
+FAIL font-style: "italic" onto "oblique" assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+PASS letter-spacing (type: length) has testAccumulation function 
+FAIL letter-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL letter-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS lighting-color (type: color) has testAccumulation function 
+FAIL lighting-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS list-style-image (type: discrete) has testAccumulation function 
+FAIL list-style-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL list-style-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS outline-color (type: color) has testAccumulation function 
+FAIL outline-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS outline-offset (type: length) has testAccumulation function 
+FAIL outline-offset: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-offset: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS outline-width (type: length) has testAccumulation function 
+FAIL outline-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS perspective (type: length) has testAccumulation function 
+FAIL perspective: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL perspective: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS shape-outside (type: discrete) has testAccumulation function 
+FAIL shape-outside: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS stop-color (type: color) has testAccumulation function 
+FAIL stop-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS stop-opacity (type: opacity) has testAccumulation function 
+FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS stroke-dasharray (type: dasharray) has testAccumulation function 
+FAIL stroke-dasharray: dasharray assert_equals: The value should be 1, 2, 3, 4, 5 at 0ms expected "1, 2, 3, 4, 5" but got "1px, 2px, 3px, 4px, 5px"
+PASS stroke-dasharray (type: discrete) has testAccumulation function 
+FAIL stroke-dasharray: "10, 20" onto "none" assert_equals: The value should be 10, 20 at 0ms expected "10, 20" but got "10px, 20px"
+PASS stroke-dasharray: "none" onto "10, 20" 
+PASS stroke-miterlimit (type: positiveNumber) has testAccumulation function 
+FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "1.100000023841858"
+PASS stroke-opacity (type: opacity) has testAccumulation function 
+FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS text-shadow (type: textShadowList) has testAccumulation function 
+FAIL text-shadow: shadow assert_equals: The value should be rgb(240, 240, 240) 20px 20px 20px at 0ms expected "rgb(240, 240, 240) 20px 20px 20px" but got "rgb(120, 120, 120) 10px 10px 10px"
+PASS transform (type: transformList) has testAccumulation function 
+FAIL transform: translate assert_approx_equals: expected matrix(1,0,0,1,-100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0): The value should be matrix(1,0,0,1,-100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0) expected -100 +/- 0.0001 but got -200
+FAIL transform: rotate assert_approx_equals: expected matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0) expected 0.7071067811865476 +/- 0.0001 but got 6.123233995736766e-17
+FAIL transform: scale assert_approx_equals: expected matrix(-2,0,0,-2,0,0) but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0): The value should be matrix(-2,0,0,-2,0,0) at 0ms but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0) expected -2 +/- 0.0001 but got -3
+FAIL transform: skew assert_approx_equals: expected matrix(1,0.5773502691896256,-0.36397023426620234,1,0,0) but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0): The value should be matrix(1,0.5773502691896256,-0.36397023426620234,1,0,0) at 0ms but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0) expected 0.5773502691896256 +/- 0.0001 but got 0.36397023426620234
+FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0) expected 100 +/- 0.0001 but got 0
+FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
+FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
+FAIL transform: none assert_equals: dimension of the matrix: The value should be matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1) at 0ms but got matrix(1, 0, 0, 1, 0, 0) expected 16 but got 6
+FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+PASS visibility (type: visibility) has testAccumulation function 
+FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
+PASS visibility: onto "hidden" 
+PASS word-spacing (type: lengthPercentageOrCalc) has testAccumulation function 
+FAIL word-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL word-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+FAIL word-spacing: percentage assert_equals: The value should be 130% at 0ms expected "130%" but got "1.75px"
+FAIL word-spacing: units "%" onto "px" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "0.25px"
+FAIL word-spacing: units "px" onto "%" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "10px"
+FAIL word-spacing: units "rem" onto "%" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "2px"
+FAIL word-spacing: units "%" onto "rem" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "0.25px"
+FAIL word-spacing: units "rem" onto "em" assert_equals: The value should be 40px at 0ms expected "40px" but got "2px"
+FAIL word-spacing: units "em" onto "rem" assert_equals: The value should be 40px at 0ms expected "40px" but got "0px"
+FAIL word-spacing: units "calc" onto "px" assert_equals: The value should be calc(30px + 20%) at 0ms expected "calc(30px + 20%)" but got "0px"
+FAIL word-spacing: calc assert_equals: The value should be calc(30px + 30%) at 0ms expected "calc(30px + 30%)" but got "0px"
+
diff --git a/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt b/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt
new file mode 100644 (file)
index 0000000..f0bb3b6
--- /dev/null
@@ -0,0 +1,220 @@
+
+PASS background-color (type: color) has testAddition function 
+FAIL background-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL background-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL background-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS background-image (type: discrete) has testAddition function 
+FAIL background-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL background-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-bottom-color (type: color) has testAddition function 
+FAIL border-bottom-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-bottom-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-bottom-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-bottom-width (type: length) has testAddition function 
+FAIL border-bottom-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-bottom-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-image-outset (type: discrete) has testAddition function 
+PASS border-image-outset: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-outset: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-slice (type: discrete) has testAddition function 
+PASS border-image-slice: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-slice: "1 2 3 4" onto "5 6 7 8" 
+PASS border-image-source (type: discrete) has testAddition function 
+FAIL border-image-source: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL border-image-source: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-image-width (type: discrete) has testAddition function 
+PASS border-image-width: "5 6 7 8" onto "1 2 3 4" 
+PASS border-image-width: "1 2 3 4" onto "5 6 7 8" 
+PASS border-left-color (type: color) has testAddition function 
+FAIL border-left-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-left-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-left-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-left-width (type: length) has testAddition function 
+FAIL border-left-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-left-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-right-color (type: color) has testAddition function 
+FAIL border-right-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-right-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-right-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-right-width (type: length) has testAddition function 
+FAIL border-right-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-right-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS border-spacing (type: lengthPair) has testAddition function 
+FAIL border-spacing: length pair assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "10px 10px"
+FAIL border-spacing: length pair of rem assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "1px 1px"
+PASS border-top-color (type: color) has testAddition function 
+FAIL border-top-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL border-top-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL border-top-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS border-top-width (type: length) has testAddition function 
+FAIL border-top-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL border-top-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS box-shadow (type: boxShadowList) has testAddition function 
+FAIL box-shadow: shadow assert_equals: The value should be rgb(0, 0, 0) 0px 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px 0px at 0ms expected "rgb(0, 0, 0) 0px 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px 0px" but got "rgb(120, 120, 120) 10px 10px 10px 0px"
+PASS caret-color (type: color) has testAddition function 
+FAIL caret-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL caret-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL caret-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS clip (type: rect) has testAddition function 
+FAIL clip: rect assert_equals: The value should be rect(110px, 110px, 110px, 110px) at 0ms expected "rect(110px, 110px, 110px, 110px)" but got "rect(10px, 10px, 10px, 10px)"
+PASS clip (type: discrete) has testAddition function 
+PASS clip: "auto" onto "rect(10px, 10px, 10px, 10px)" 
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "auto" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, auto)" onto "rect(10px, 10px, 10px, 10px)" assert_equals: The value should be rect(10px, 10px, 10px, auto) at 0ms expected "rect(10px, 10px, 10px, auto)" but got "auto"
+FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "rect(10px, 10px, 10px, auto)" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+PASS color (type: color) has testAddition function 
+FAIL color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-count (type: positiveInteger) has testAddition function 
+FAIL column-count: positive integer assert_equals: The value should be 3 at 0ms expected "3" but got "2"
+PASS column-count (type: discrete) has testAddition function 
+PASS column-count: "10" onto "auto" 
+FAIL column-count: "auto" onto "10" assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+PASS column-gap (type: length) has testAddition function 
+FAIL column-gap: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-gap: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-gap (type: discrete) has testAddition function 
+PASS column-gap: "200px" onto "normal" 
+PASS column-gap: "normal" onto "200px" 
+PASS column-rule-color (type: color) has testAddition function 
+FAIL column-rule-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL column-rule-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL column-rule-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS column-rule-width (type: length) has testAddition function 
+FAIL column-rule-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL column-rule-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS column-width (type: length) has testAddition function 
+FAIL column-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL column-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS column-width (type: discrete) has testAddition function 
+PASS column-width: "1px" onto "auto" 
+FAIL column-width: "auto" onto "1px" assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+PASS fill-opacity (type: opacity) has testAddition function 
+FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS filter (type: filterList) has testAddition function 
+FAIL filter: blur on blur assert_equals: The value should be blur(10px) blur(20px) at 0ms expected "blur(10px) blur(20px)" but got "blur(50px)"
+FAIL filter: different filter functions assert_equals: The value should be blur(10px) brightness(0.8) at 0ms expected "blur(10px) brightness(0.8)" but got "brightness(0.4)"
+PASS flood-color (type: color) has testAddition function 
+FAIL flood-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL flood-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL flood-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS flood-opacity (type: opacity) has testAddition function 
+FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS font-stretch (type: fontStretch) has testAddition function 
+FAIL font-stretch uses font-stretch behavior for composite type add assert_equals: The value should be normal at 0ms expected "normal" but got "expanded"
+PASS font-style (type: discrete) has testAddition function 
+PASS font-style: "oblique" onto "italic" 
+FAIL font-style: "italic" onto "oblique" assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+PASS letter-spacing (type: length) has testAddition function 
+FAIL letter-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL letter-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS lighting-color (type: color) has testAddition function 
+FAIL lighting-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL lighting-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL lighting-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS list-style-image (type: discrete) has testAddition function 
+FAIL list-style-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL list-style-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS outline-color (type: color) has testAddition function 
+FAIL outline-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL outline-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL outline-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS outline-offset (type: length) has testAddition function 
+FAIL outline-offset: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-offset: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS outline-width (type: length) has testAddition function 
+FAIL outline-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+FAIL outline-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
+PASS perspective (type: length) has testAddition function 
+FAIL perspective: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL perspective: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+PASS shape-outside (type: discrete) has testAddition function 
+FAIL shape-outside: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS stop-color (type: color) has testAddition function 
+FAIL stop-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
+FAIL stop-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+FAIL stop-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
+PASS stop-opacity (type: opacity) has testAddition function 
+FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS stroke-dasharray (type: dasharray) has testAddition function 
+FAIL stroke-dasharray: dasharray assert_equals: The value should be 1, 2, 3, 4, 5 at 0ms expected "1, 2, 3, 4, 5" but got "1px, 2px, 3px, 4px, 5px"
+PASS stroke-dasharray (type: discrete) has testAddition function 
+FAIL stroke-dasharray: "10, 20" onto "none" assert_equals: The value should be 10, 20 at 0ms expected "10, 20" but got "10px, 20px"
+PASS stroke-dasharray: "none" onto "10, 20" 
+PASS stroke-miterlimit (type: positiveNumber) has testAddition function 
+FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "1.100000023841858"
+PASS stroke-opacity (type: opacity) has testAddition function 
+FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
+FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
+PASS text-shadow (type: textShadowList) has testAddition function 
+FAIL text-shadow: shadow assert_equals: The value should be rgb(0, 0, 0) 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px at 0ms expected "rgb(0, 0, 0) 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px" but got "rgb(120, 120, 120) 10px 10px 10px"
+PASS transform (type: transformList) has testAddition function 
+FAIL transform: translate assert_approx_equals: expected matrix(1,0,0,1,-100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0): The value should be matrix(1,0,0,1,-100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0) expected -100 +/- 0.0001 but got -200
+FAIL transform: rotate assert_approx_equals: expected matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0) expected 0.7071067811865476 +/- 0.0001 but got 6.123233995736766e-17
+FAIL transform: scale assert_approx_equals: expected matrix(-6,0,0,-6,0,0) but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0): The value should be matrix(-6,0,0,-6,0,0) at 0ms but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0) expected -6 +/- 0.0001 but got -3
+FAIL transform: skew assert_approx_equals: expected matrix(1.064177772475912,0.5402972149746673,-0.40102328848116064,0.8981975702225738,0,0) but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0): The value should be matrix(1.064177772475912,0.5402972149746673,-0.40102328848116064,0.8981975702225738,0,0) at 0ms but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0) expected 1.064177772475912 +/- 0.0001 but got 1
+FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0) expected 100 +/- 0.0001 but got 0
+FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,0,100) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,0,100) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,0,100) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,0,100) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
+FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
+FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
+FAIL transform: non-invertible matrices assert_approx_equals: expected matrix(-1,0,0,-1,250,0) but got matrix(-1, 0.00000000000000012246467991473532, -0.00000000000000012246467991473532, -1, 200, 0): The value should be matrix(-1,0,0,-1,250,0) at 0ms but got matrix(-1, 0.00000000000000012246467991473532, -0.00000000000000012246467991473532, -1, 200, 0) expected 250 +/- 0.0001 but got 200
+FAIL transform: non-invertible matrices in matched transform lists assert_approx_equals: expected matrix(0,-1,1,0,250,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 200, 0): The value should be matrix(0,-1,1,0,250,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 200, 0) expected 250 +/- 0.0001 but got 200
+FAIL transform: non-invertible matrices in mismatched transform lists assert_approx_equals: expected matrix(-2,0,0,-2,250,0) but got matrix(-2, 0.00000000000000024492935982947064, -0.00000000000000024492935982947064, -2, 200, 0): The value should be matrix(-2,0,0,-2,250,0) at 0ms but got matrix(-2, 0.00000000000000024492935982947064, -0.00000000000000024492935982947064, -2, 200, 0) expected 250 +/- 0.0001 but got 200
+PASS visibility (type: visibility) has testAddition function 
+FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
+PASS visibility: onto "hidden" 
+PASS word-spacing (type: lengthPercentageOrCalc) has testAddition function 
+FAIL word-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
+FAIL word-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
+FAIL word-spacing: percentage assert_equals: The value should be 130% at 0ms expected "130%" but got "1.75px"
+FAIL word-spacing: units "%" onto "px" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "0.25px"
+FAIL word-spacing: units "px" onto "%" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "10px"
+FAIL word-spacing: units "rem" onto "%" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "2px"
+FAIL word-spacing: units "%" onto "rem" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "0.25px"
+FAIL word-spacing: units "rem" onto "em" assert_equals: The value should be 40px at 0ms expected "40px" but got "2px"
+FAIL word-spacing: units "em" onto "rem" assert_equals: The value should be 40px at 0ms expected "40px" but got "0px"
+FAIL word-spacing: units "calc" onto "px" assert_equals: The value should be calc(30px + 20%) at 0ms expected "calc(30px + 20%)" but got "0px"
+FAIL word-spacing: calc assert_equals: The value should be calc(30px + 30%) at 0ms expected "calc(30px + 30%)" but got "0px"
+
diff --git a/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt b/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
new file mode 100644 (file)
index 0000000..197e5c7
--- /dev/null
@@ -0,0 +1,257 @@
+
+PASS background-color (type: color) has testInterpolation function 
+PASS background-color supports animating as color of rgb() 
+PASS background-color supports animating as color of #RGB 
+PASS background-color supports animating as color of hsl() 
+PASS background-color supports animating as color of #RGBa 
+PASS background-color supports animating as color of rgba() 
+PASS background-color supports animating as color of hsla() 
+PASS background-image (type: discrete) has testInterpolation function 
+FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-bottom-color (type: color) has testInterpolation function 
+PASS border-bottom-color supports animating as color of rgb() 
+PASS border-bottom-color supports animating as color of #RGB 
+PASS border-bottom-color supports animating as color of hsl() 
+PASS border-bottom-color supports animating as color of #RGBa 
+PASS border-bottom-color supports animating as color of rgba() 
+PASS border-bottom-color supports animating as color of hsla() 
+PASS border-bottom-width (type: length) has testInterpolation function 
+FAIL border-bottom-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-bottom-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS border-image-outset (type: discrete) has testInterpolation function 
+FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
+FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+PASS border-image-slice (type: discrete) has testInterpolation function 
+FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
+FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+PASS border-image-source (type: discrete) has testInterpolation function 
+FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS border-image-width (type: discrete) has testInterpolation function 
+FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
+FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
+PASS border-left-color (type: color) has testInterpolation function 
+PASS border-left-color supports animating as color of rgb() 
+PASS border-left-color supports animating as color of #RGB 
+PASS border-left-color supports animating as color of hsl() 
+PASS border-left-color supports animating as color of #RGBa 
+PASS border-left-color supports animating as color of rgba() 
+PASS border-left-color supports animating as color of hsla() 
+PASS border-left-width (type: length) has testInterpolation function 
+FAIL border-left-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-left-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS border-right-color (type: color) has testInterpolation function 
+PASS border-right-color supports animating as color of rgb() 
+PASS border-right-color supports animating as color of #RGB 
+PASS border-right-color supports animating as color of hsl() 
+PASS border-right-color supports animating as color of #RGBa 
+PASS border-right-color supports animating as color of rgba() 
+PASS border-right-color supports animating as color of hsla() 
+PASS border-right-width (type: length) has testInterpolation function 
+FAIL border-right-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-right-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS border-spacing (type: lengthPair) has testInterpolation function 
+PASS border-spacing supports animating as a length pair 
+FAIL border-spacing supports animating as a length pair of rem assert_equals: The value should be 30px 30px at 500ms expected "30px 30px" but got "3px 3px"
+PASS border-top-color (type: color) has testInterpolation function 
+PASS border-top-color supports animating as color of rgb() 
+PASS border-top-color supports animating as color of #RGB 
+PASS border-top-color supports animating as color of hsl() 
+PASS border-top-color supports animating as color of #RGBa 
+PASS border-top-color supports animating as color of rgba() 
+PASS border-top-color supports animating as color of hsla() 
+PASS border-top-width (type: length) has testInterpolation function 
+FAIL border-top-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL border-top-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS box-shadow (type: boxShadowList) has testInterpolation function 
+FAIL box-shadow: from none to other assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+FAIL box-shadow: from other to none assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+PASS box-shadow: single shadow 
+PASS box-shadow: shadow list 
+FAIL box-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+FAIL box-shadow: mismatched list length (from longer to shorter) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
+FAIL box-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px 5px"
+PASS caret-color (type: color) has testInterpolation function 
+PASS caret-color supports animating as color of rgb() 
+PASS caret-color supports animating as color of #RGB 
+PASS caret-color supports animating as color of hsl() 
+PASS caret-color supports animating as color of #RGBa 
+PASS caret-color supports animating as color of rgba() 
+PASS caret-color supports animating as color of hsla() 
+PASS clip (type: rect) has testInterpolation function 
+FAIL clip supports animating as a rect assert_equals: The value should be rect(30px, 30px, 30px, 30px) at 500ms expected "rect(30px, 30px, 30px, 30px)" but got "auto"
+PASS clip (type: discrete) has testInterpolation function 
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with linear easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with effect easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with keyframe easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with linear easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with effect easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with keyframe easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
+PASS color (type: color) has testInterpolation function 
+PASS color supports animating as color of rgb() 
+PASS color supports animating as color of #RGB 
+PASS color supports animating as color of hsl() 
+PASS color supports animating as color of #RGBa 
+PASS color supports animating as color of rgba() 
+PASS color supports animating as color of hsla() 
+PASS column-count (type: positiveInteger) has testInterpolation function 
+PASS column-count supports animating as a positive integer 
+PASS column-count (type: discrete) has testInterpolation function 
+FAIL column-count uses discrete animation when animating between "auto" and "10" with linear easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+FAIL column-count uses discrete animation when animating between "auto" and "10" with effect easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+FAIL column-count uses discrete animation when animating between "auto" and "10" with keyframe easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
+PASS column-gap (type: length) has testInterpolation function 
+PASS column-gap supports animating as a length 
+FAIL column-gap supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS column-gap (type: discrete) has testInterpolation function 
+FAIL column-gap uses discrete animation when animating between "normal" and "200px" with linear easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
+FAIL column-gap uses discrete animation when animating between "normal" and "200px" with effect easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
+FAIL column-gap uses discrete animation when animating between "normal" and "200px" with keyframe easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
+PASS column-rule-color (type: color) has testInterpolation function 
+PASS column-rule-color supports animating as color of rgb() 
+PASS column-rule-color supports animating as color of #RGB 
+PASS column-rule-color supports animating as color of hsl() 
+PASS column-rule-color supports animating as color of #RGBa 
+PASS column-rule-color supports animating as color of rgba() 
+PASS column-rule-color supports animating as color of hsla() 
+PASS column-rule-width (type: length) has testInterpolation function 
+FAIL column-rule-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL column-rule-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS column-width (type: length) has testInterpolation function 
+PASS column-width supports animating as a length 
+FAIL column-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS column-width (type: discrete) has testInterpolation function 
+FAIL column-width uses discrete animation when animating between "auto" and "1px" with linear easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+FAIL column-width uses discrete animation when animating between "auto" and "1px" with effect easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+FAIL column-width uses discrete animation when animating between "auto" and "1px" with keyframe easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
+PASS fill-opacity (type: opacity) has testInterpolation function 
+FAIL fill-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS filter (type: filterList) has testInterpolation function 
+FAIL filter: blur function assert_equals: The value should be blur(30px) at 500ms expected "blur(30px)" but got "blur(50px)"
+FAIL filter: hue-rotate function with same unit(deg) assert_equals: The value should be hue-rotate(50deg) at 500ms expected "hue-rotate(50deg)" but got "hue-rotate(100deg)"
+FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(50.0873rad) at 500ms expected "hue-rotate(50.0873rad)" but got "hue-rotate(5729.5779513082325deg)"
+FAIL filter: drop-shadow function assert_equals: The value should be drop-shadow(rgba(85, 0, 170, 0.6) 30px 30px 30px) at 500ms expected "drop-shadow(rgba(85, 0, 170, 0.6) 30px 30px 30px)" but got "drop-shadow(rgba(0, 0, 255, 0.8) 50px 50px 50px)"
+FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.5) contrast(0.5) grayscale(0.5) invert(0.5) opacity(0.5) saturate(0.5) sepia(0.5)"
+FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.5) contrast(0.5) grayscale(0.5) invert(0.5) opacity(0.5) saturate(0.5) sepia(0.5)"
+FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)"
+FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0) grayscale(1) invert(1) sepia(1) blur(10px)"
+FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px at 500ms expected "blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)"
+FAIL filter: interpolate from none assert_equals: The value should be blur(5px) at 500ms expected "blur(5px)" but got "blur(10px)"
+FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(10px) url(#f2)"
+PASS flood-color (type: color) has testInterpolation function 
+PASS flood-color supports animating as color of rgb() 
+PASS flood-color supports animating as color of #RGB 
+PASS flood-color supports animating as color of hsl() 
+PASS flood-color supports animating as color of #RGBa 
+PASS flood-color supports animating as color of rgba() 
+PASS flood-color supports animating as color of hsla() 
+PASS flood-opacity (type: opacity) has testInterpolation function 
+FAIL flood-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS font-stretch (type: fontStretch) has testInterpolation function 
+FAIL font-stretch supports animating as a font-stretch (adjacent values) assert_equals: The value should be ultra-condensed at 499ms expected "ultra-condensed" but got "56%"
+PASS font-stretch supports animating as a font-stretch (between value) 
+PASS font-style (type: discrete) has testInterpolation function 
+FAIL font-style uses discrete animation when animating between "italic" and "oblique" with linear easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+FAIL font-style uses discrete animation when animating between "italic" and "oblique" with effect easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+FAIL font-style uses discrete animation when animating between "italic" and "oblique" with keyframe easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
+PASS letter-spacing (type: length) has testInterpolation function 
+PASS letter-spacing supports animating as a length 
+FAIL letter-spacing supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS lighting-color (type: color) has testInterpolation function 
+PASS lighting-color supports animating as color of rgb() 
+PASS lighting-color supports animating as color of #RGB 
+PASS lighting-color supports animating as color of hsl() 
+PASS lighting-color supports animating as color of #RGBa 
+PASS lighting-color supports animating as color of rgba() 
+PASS lighting-color supports animating as color of hsla() 
+PASS list-style-image (type: discrete) has testInterpolation function 
+FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
+PASS outline-color (type: color) has testInterpolation function 
+PASS outline-color supports animating as color of rgb() 
+PASS outline-color supports animating as color of #RGB 
+PASS outline-color supports animating as color of hsl() 
+PASS outline-color supports animating as color of #RGBa 
+PASS outline-color supports animating as color of rgba() 
+PASS outline-color supports animating as color of hsla() 
+PASS outline-offset (type: length) has testInterpolation function 
+FAIL outline-offset supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL outline-offset supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS outline-width (type: length) has testInterpolation function 
+FAIL outline-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+FAIL outline-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
+PASS perspective (type: length) has testInterpolation function 
+PASS perspective supports animating as a length 
+FAIL perspective supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+PASS shape-outside (type: discrete) has testInterpolation function 
+FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
+FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
+PASS stop-color (type: color) has testInterpolation function 
+PASS stop-color supports animating as color of rgb() 
+PASS stop-color supports animating as color of #RGB 
+PASS stop-color supports animating as color of hsl() 
+PASS stop-color supports animating as color of #RGBa 
+PASS stop-color supports animating as color of rgba() 
+PASS stop-color supports animating as color of hsla() 
+PASS stop-opacity (type: opacity) has testInterpolation function 
+FAIL stop-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS stroke-dasharray (type: dasharray) has testInterpolation function 
+PASS stroke-dasharray supports animating as a percentage 
+FAIL stroke-dasharray supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842px"
+FAIL stroke-dasharray supports animating as a dasharray (mismatched length) assert_equals: The value should be 6, 12, 8, 12, 10, 6, 10, 16, 4, 8, 14, 10 at 500ms expected "6, 12, 8, 12, 10, 6, 10, 16, 4, 8, 14, 10" but got "6px, 12px, 8px, 12px, 10px, 6px, 10px, 16px, 4px, 8px, 14px, 10px"
+FAIL stroke-dasharray supports animating as a dasharray (mixed number and percentage) assert_equals: The value should be 4, 40%, 4, 6 at 500ms expected "4, 40%, 4, 6" but got "4px, 40%, 4px, 6px"
+PASS stroke-dasharray (type: discrete) has testInterpolation function 
+FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with linear easing assert_equals: The value should be none at 499ms expected "none" but got "10px, 20px"
+FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with effect easing assert_equals: The value should be none at 940ms expected "none" but got "10px, 20px"
+FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with keyframe easing assert_equals: The value should be none at 940ms expected "none" but got "10px, 20px"
+PASS stroke-miterlimit (type: positiveNumber) has testInterpolation function 
+FAIL stroke-miterlimit supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842"
+PASS stroke-opacity (type: opacity) has testInterpolation function 
+FAIL stroke-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
+PASS text-shadow (type: textShadowList) has testInterpolation function 
+FAIL text-shadow: from none to other assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+FAIL text-shadow: from other to none assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+PASS text-shadow: single shadow 
+PASS text-shadow: shadow list 
+FAIL text-shadow: mismatched list length (from longer to shorter) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+FAIL text-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
+FAIL text-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px"
+PASS transform (type: transformList) has testInterpolation function 
+FAIL transform: translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: scale assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: skew assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotate and translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: mismatch order of translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: matrix assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotate3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: matrix3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: mismatched 3D transforms assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: rotateY assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in matched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+FAIL transform: non-invertible matrices in mismatched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
+PASS visibility (type: visibility) has testInterpolation function 
+PASS visibility uses visibility animation when animating from "visible" to "hidden" 
+PASS visibility uses visibility animation when animating from "hidden" to "visible" 
+FAIL visibility uses visibility animation when animating from "hidden" to "collapse" assert_equals: The value should be hidden at 0ms expected "hidden" but got "collapse"
+PASS visibility uses visibility animation when animating from "visible" to "hidden" with easeInOutBack easing 
+PASS word-spacing (type: lengthPercentageOrCalc) has testInterpolation function 
+PASS word-spacing supports animating as a length 
+FAIL word-spacing supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
+FAIL word-spacing supports animating as a percentage assert_equals: The value should be 30% at 500ms expected "30%" but got "0.75px"
+FAIL word-spacing supports animating as combination units "px" and "%" assert_equals: The value should be calc(5px + 10%) at 500ms expected "calc(5px + 10%)" but got "3355448px"
+FAIL word-spacing supports animating as combination units "%" and "em" assert_equals: The value should be calc(10px + 5%) at 500ms expected "calc(10px + 5%)" but got "0.125px"
+FAIL word-spacing supports animating as combination units "em" and "rem" assert_equals: The value should be 15px at 500ms expected "15px" but got "1px"
+FAIL word-spacing supports animating as combination units "px" and "calc" assert_equals: The value should be calc(10px + 10%) at 500ms expected "calc(10px + 10%)" but got "0px"
+FAIL word-spacing supports animating as a calc assert_equals: The value should be calc(15px + 15%) at 500ms expected "calc(15px + 15%)" but got "0px"
+
index d0d03e4..69455f3 100644 (file)
@@ -1,3 +1,52 @@
+2018-02-19  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Make KeyframeEffect target nullable and read-write
+        https://bugs.webkit.org/show_bug.cgi?id=182741
+
+        Reviewed by Dean Jackson.
+
+        We used to completely disregard null targets, for instance not parsing keyframes, but targets
+        can be null and are also supposed to be read-write for KeyframeEffect. We now update the IDL
+        for KeyframeEffect to mark the target property as read-write and update the implementation
+        to correctly handle null targets.
+
+        This revealed a few issues in our implementation by allowing more WPT tests to run. So we also
+        ensure that:
+        
+        - we don't crash when parsing font-related properties by calling update() on the generated
+        RenderStyle's FontCascade when parsing keyframes.
+
+        - CSS properties are provided as camel-case and not as hyphenated form
+
+        - values provided in keyframes dictionaries are only read for valid properties
+
+        - styles for effect targets are invalidated as soon as the timing model for that animation
+        is changed
+
+        * animation/KeyframeEffect.idl:
+        * animation/KeyframeEffectReadOnly.cpp:
+        (WebCore::invalidateElement): Add a new utility method to invalidate a given element since
+        we may want to invalidate not only the current target (m_target) but also a previous target.
+        (WebCore::IDLAttributeNameToAnimationPropertyName): Move this function below CSSPropertyIDToIDLAttributeName
+        so that it can call that function. We also check that we reject CSS properties that are not provided in
+        camel-case form (eg. "font-size" vs. "fontSize").
+        (WebCore::processIterableKeyframes): Only read the JS values if we know that the provided JS property name
+        maps to a valid CSS property.
+        (WebCore::KeyframeEffectReadOnly::processKeyframes): Allow keyframes to be processed even if the effect's
+        target is null.
+        (WebCore::KeyframeEffectReadOnly::setTarget): Notify the animation that the effect target has changed and
+        invalidate the style of the new target and the old targets, if any. We also update the blending keyframes
+        since this task may not have been completed in a previous call to processKeyframes() due to the target being
+        null at that time.
+        (WebCore::KeyframeEffectReadOnly::invalidate): Use the invalidateElement() utility.
+        * animation/KeyframeEffectReadOnly.h:
+        * animation/WebAnimation.cpp:
+        (WebCore::WebAnimation::effectTargetDidChange): This method is called in KeyframeEffectReadOnly::setTarget()
+        to inform the animation of the previous effect target and the new one upon a target change. This allows us to
+        forward this information onto the timeline so that we correctly add or remove the targets from the list of
+        animated elements.
+        * animation/WebAnimation.h:
+
 2018-02-19  Chris Dumez  <cdumez@apple.com>
 
         Crash under MIMETypeRegistry::isSupportedJavaScriptMIMEType()
index 3f90dd5..6204a42 100644 (file)
@@ -31,6 +31,7 @@
     Constructor(Element? target, object? keyframes, optional (unrestricted double or KeyframeEffectOptions) options),
     Constructor(KeyframeEffectReadOnly source)
 ] interface KeyframeEffect : KeyframeEffectReadOnly {
+    inherit attribute Element? target;
     inherit attribute IterationCompositeOperation iterationComposite;
     inherit attribute CompositeOperation composite;
     [MayThrowException, CallWith=ScriptState] void setKeyframes(object? keyframes);
index b655670..7737d1a 100644 (file)
 namespace WebCore {
 using namespace JSC;
 
-static inline CSSPropertyID IDLAttributeNameToAnimationPropertyName(String idlAttributeName)
+static inline void invalidateElement(Element* element)
 {
-    // https://drafts.csswg.org/web-animations-1/#idl-attribute-name-to-animation-property-name
-    // 1. If attribute conforms to the <custom-property-name> production, return attribute.
-    // 2. If attribute is the string "cssFloat", then return an animation property representing the CSS float property.
-    if (idlAttributeName == "cssFloat")
-        return CSSPropertyFloat;
-    // 3. If attribute is the string "cssOffset", then return an animation property representing the CSS offset property.
-    // FIXME: we don't support the CSS "offset" property
-    // 4. Otherwise, return the result of applying the IDL attribute to CSS property algorithm [CSSOM] to attribute.
-    return CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName(idlAttributeName);
+    if (!element)
+        return;
+
+    element->invalidateStyleAndLayerComposition();
+    element->document().updateStyleIfNeeded();
 }
 
 static inline String CSSPropertyIDToIDLAttributeName(CSSPropertyID cssPropertyId)
 {
     // https://drafts.csswg.org/web-animations-1/#animation-property-name-to-idl-attribute-name
     // 1. If property follows the <custom-property-name> production, return property.
+    // FIXME: We don't handle custom properties yet.
+
     // 2. If property refers to the CSS float property, return the string "cssFloat".
     if (cssPropertyId == CSSPropertyFloat)
         return "cssFloat";
+
     // 3. If property refers to the CSS offset property, return the string "cssOffset".
     // FIXME: we don't support the CSS "offset" property
+
     // 4. Otherwise, return the result of applying the CSS property to IDL attribute algorithm [CSSOM] to property.
     return getJSPropertyName(cssPropertyId);
 }
 
+static inline CSSPropertyID IDLAttributeNameToAnimationPropertyName(const String& idlAttributeName)
+{
+    // https://drafts.csswg.org/web-animations-1/#idl-attribute-name-to-animation-property-name
+    // 1. If attribute conforms to the <custom-property-name> production, return attribute.
+    // FIXME: We don't handle custom properties yet.
+
+    // 2. If attribute is the string "cssFloat", then return an animation property representing the CSS float property.
+    if (idlAttributeName == "cssFloat")
+        return CSSPropertyFloat;
+
+    // 3. If attribute is the string "cssOffset", then return an animation property representing the CSS offset property.
+    // FIXME: We don't support the CSS "offset" property.
+
+    // 4. Otherwise, return the result of applying the IDL attribute to CSS property algorithm [CSSOM] to attribute.
+    auto cssPropertyId = CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName(idlAttributeName);
+
+    // We need to check that converting the property back to IDL form yields the same result such that a property passed
+    // in non-IDL form is rejected, for instance "font-size".
+    if (idlAttributeName != CSSPropertyIDToIDLAttributeName(cssPropertyId))
+        return CSSPropertyInvalid;
+
+    return cssPropertyId;
+}
+
 static inline void computeMissingKeyframeOffsets(Vector<KeyframeEffectReadOnly::ParsedKeyframe>& keyframes)
 {
     // https://drafts.csswg.org/web-animations-1/#compute-missing-keyframe-offsets
@@ -146,17 +170,16 @@ static inline ExceptionOr<void> processIterableKeyframes(ExecState& state, Stron
 
         for (size_t j = 0; j < numberOfProperties; ++j) {
             auto ownPropertyName = ownPropertyNames[j];
-            auto ownPropertyRawValue = keyframe->get(&state, ownPropertyName);
             if (ownPropertyName == "easing")
-                easing = convert<IDLDOMString>(state, ownPropertyRawValue);
+                easing = convert<IDLDOMString>(state, keyframe->get(&state, ownPropertyName));
             else if (ownPropertyName == "offset")
-                offset = convert<IDLNullable<IDLDouble>>(state, ownPropertyRawValue);
+                offset = convert<IDLNullable<IDLDouble>>(state, keyframe->get(&state, ownPropertyName));
             else if (ownPropertyName == "composite")
-                composite = convert<IDLNullable<IDLEnumeration<CompositeOperation>>>(state, ownPropertyRawValue);
+                composite = convert<IDLNullable<IDLEnumeration<CompositeOperation>>>(state, keyframe->get(&state, ownPropertyName));
             else {
                 auto cssPropertyId = IDLAttributeNameToAnimationPropertyName(ownPropertyName.string());
                 if (CSSPropertyAnimation::isPropertyAnimatable(cssPropertyId)) {
-                    auto stringValue = convert<IDLDOMString>(state, ownPropertyRawValue);
+                    auto stringValue = convert<IDLDOMString>(state, keyframe->get(&state, ownPropertyName));
                     if (keyframeOutput.style->setProperty(cssPropertyId, stringValue))
                         keyframeOutput.unparsedStyle.set(cssPropertyId, stringValue);
                 }
@@ -516,7 +539,7 @@ Vector<Strong<JSObject>> KeyframeEffectReadOnly::getKeyframes(ExecState& state)
 ExceptionOr<void> KeyframeEffectReadOnly::processKeyframes(ExecState& state, Strong<JSObject>&& keyframesInput)
 {
     // 1. If object is null, return an empty sequence of keyframes.
-    if (!m_target || !keyframesInput.get())
+    if (!keyframesInput.get())
         return { };
 
     VM& vm = state.vm();
@@ -625,6 +648,27 @@ void KeyframeEffectReadOnly::computeStackingContextImpact()
     }
 }
 
+void KeyframeEffectReadOnly::setTarget(RefPtr<Element>&& newTarget)
+{
+    if (m_target == newTarget)
+        return;
+
+    auto previousTarget = std::exchange(m_target, WTFMove(newTarget));
+
+    if (auto* effectAnimation = animation())
+        effectAnimation->effectTargetDidChange(previousTarget.get(), m_target.get());
+
+    updateBlendingKeyframes();
+
+    // We need to invalidate the effect now that the target has changed
+    // to ensure the effect's styles are applied to the new target right away.
+    invalidate();
+
+    // Likewise, we need to invalidate styles on the previous target so that
+    // any animated styles are removed immediately.
+    invalidateElement(previousTarget.get());
+}
+
 void KeyframeEffectReadOnly::apply(RenderStyle& targetStyle)
 {
     if (!m_target)
@@ -661,11 +705,7 @@ void KeyframeEffectReadOnly::apply(RenderStyle& targetStyle)
 
 void KeyframeEffectReadOnly::invalidate()
 {
-    if (!m_target)
-        return;
-
-    m_target->invalidateStyleAndLayerComposition();
-    m_target->document().updateStyleIfNeeded();
+    invalidateElement(m_target.get());
 }
 
 bool KeyframeEffectReadOnly::shouldRunAccelerated()
index a97a531..3c53c0c 100644 (file)
@@ -87,6 +87,8 @@ public:
     };
 
     Element* target() const { return m_target.get(); }
+    void setTarget(RefPtr<Element>&&);
+
     Vector<JSC::Strong<JSC::JSObject>> getKeyframes(JSC::ExecState&);
 
     IterationCompositeOperation iterationComposite() const { return m_iterationCompositeOperation; }
index 20622ea..6bc1a9b 100644 (file)
@@ -161,7 +161,19 @@ void WebAnimation::setTimeline(RefPtr<AnimationTimeline>&& timeline)
     // and the synchronously notify flag set to false.
     updateFinishedState(DidSeek::No, SynchronouslyNotify::No);
 }
-    
+
+void WebAnimation::effectTargetDidChange(Element* previousTarget, Element* newTarget)
+{
+    if (!m_timeline)
+        return;
+
+    if (previousTarget)
+        m_timeline->animationWasRemovedFromElement(*this, *previousTarget);
+
+    if (newTarget)
+        m_timeline->animationWasAddedToElement(*this, *newTarget);
+}
+
 std::optional<double> WebAnimation::bindingsStartTime() const
 {
     if (!m_startTime)
index 96ff09c..e2fb9e8 100644 (file)
@@ -42,6 +42,7 @@ class AnimationEffectReadOnly;
 class AnimationPlaybackEvent;
 class AnimationTimeline;
 class Document;
+class Element;
 class RenderStyle;
 
 class WebAnimation final : public RefCounted<WebAnimation>, public EventTargetWithInlineData, public ActiveDOMObject {
@@ -91,6 +92,7 @@ public:
 
     Seconds timeToNextRequiredTick(Seconds) const;
     void resolve(RenderStyle&);
+    void effectTargetDidChange(Element* previousTarget, Element* newTarget);
     void acceleratedRunningStateDidChange();
     void startOrStopAccelerated();