Improve blending of LengthBox values
https://bugs.webkit.org/show_bug.cgi?id=222512

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Pass an extra 238 WPT tests across border-image-outset, border-image-slice and border-image-width.
As of this patch, web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
only has PASS results.

* web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:

Source/WebCore:

Blending of LengthBox values used to be handle with a generic wrapper for Length-related types using
LengthVariantPropertyWrapper. However, to properly blend LengthBox values, we need some logic specific
to this value type.

First off, all CSS properties that we represent using a LengthBox disallow negative values, so we update
the blendFunc() implementation for LengthBox to pass in ValueRangeNonNegative to the Length blendFunc().

Then, we need a custom implementation of the canInterpolate() virtual function override so as to cater for
properties that support <length> and <number>, and those that support <length-percentage> and <number>,
namely border-image-width.

Finally, we support the case for discrete blending in the blend() virtual function override.

* animation/CSSPropertyAnimation.cpp:
(WebCore::blendFunc):
(WebCore::LengthBoxPropertyWrapper::LengthBoxPropertyWrapper):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@273623 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog
index fd3bd689..e4b87cc 100644
--- a/LayoutTests/imported/w3c/ChangeLog
+++ b/LayoutTests/imported/w3c/ChangeLog
@@ -1,3 +1,21 @@
+2021-02-27  Antoine Quint  <graouts@webkit.org>
+
+        Improve blending of LengthBox values
+        https://bugs.webkit.org/show_bug.cgi?id=222512
+
+        Reviewed by Antti Koivisto.
+
+        Pass an extra 238 WPT tests across border-image-outset, border-image-slice and border-image-width.
+        As of this patch, web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
+        only has PASS results.
+
+        * web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
+
 2021-02-26  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, reverting r273435.
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt
index 3ee75e9..afd4049 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt
@@ -1,5 +1,5 @@
 
-FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0] assert_equals: expected "0 " but got "- 24 - 23 - 22 - 21 "
+PASS Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0]
 FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0) should be [2 4 6 8] assert_equals: expected "2 4 6 8 " but got "1 2 3 4 "
 FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.25) should be [27 29 31 33] assert_equals: expected "27 29 31 33 " but got "26 27 28 29 "
 FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.5) should be [52 54 56 58] assert_equals: expected "52 54 56 58 " but got "51 52 53 54 "
@@ -13,7 +13,7 @@
 FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.75) should be [275 450 700 650] assert_equals: expected "275 450 700 650 " but got "175 250 400 "
 FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1) should be [300 500 800 700] assert_equals: expected "300 500 800 700 " but got "200 300 500 "
 FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1.25) should be [325 550 900 750] assert_equals: expected "325 550 900 750 " but got "225 350 600 "
-FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (-0.25) should be [0 0 0px 0px] assert_equals: expected "0 0 0px 0px " but got "- 24 - 23 - 22px - 21px "
+PASS Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (-0.25) should be [0 0 0px 0px]
 FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0) should be [2 4 6px 8px] assert_equals: expected "2 4 6px 8px " but got "1 2 3px 4px "
 FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0.25) should be [27 29 31px 33px] assert_equals: expected "27 29 31px 33px " but got "26 27 28px 29px "
 FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0.5) should be [52 54 56px 58px] assert_equals: expected "52 54 56px 58px " but got "51 52 53px 54px "
@@ -40,7 +40,7 @@
 FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.5) should be [50px 50] assert_equals: expected "50px 50 " but got "45px 40 "
 FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.75) should be [25px 25] assert_equals: expected "25px 25 " but got "22.5px 20 "
 PASS Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1) should be [0px 0]
-FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1.25) should be [0px 0] assert_equals: expected "0px 0 " but got "- 22.5px - 20 "
+PASS Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1.25) should be [0px 0]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (-0.25) should be [75px 125px]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0) should be [100px 150px]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.25) should be [125px 175px]
@@ -50,9 +50,9 @@
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (1.25) should be [225px 275px]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (-0.25) should be [100 150px]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0) should be [100 150px]
-FAIL Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.25) should be [100 150px] assert_equals: expected "100 150px " but got ""
-FAIL Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.5) should be [200px 250] assert_equals: expected "200px 250 " but got ""
-FAIL Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.75) should be [200px 250] assert_equals: expected "200px 250 " but got ""
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.25) should be [100 150px]
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.5) should be [200px 250]
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.75) should be [200px 250]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (1) should be [200px 250]
 PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (1.25) should be [200px 250]
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt
index d8773d0..3b17b66 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation-expected.txt
@@ -23,25 +23,25 @@
 PASS Web Animations: property <border-image-outset> from neutral to [2px] at (0.6) should be [1.6px]
 PASS Web Animations: property <border-image-outset> from neutral to [2px] at (1) should be [2px]
 PASS Web Animations: property <border-image-outset> from neutral to [2px] at (1.5) should be [2.5px]
-FAIL CSS Transitions: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS CSS Transitions: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0]
 PASS CSS Transitions: property <border-image-outset> from [initial] to [2] at (0) should be [0]
 PASS CSS Transitions: property <border-image-outset> from [initial] to [2] at (0.3) should be [0.6]
 PASS CSS Transitions: property <border-image-outset> from [initial] to [2] at (0.6) should be [1.2]
 PASS CSS Transitions: property <border-image-outset> from [initial] to [2] at (1) should be [2]
 PASS CSS Transitions: property <border-image-outset> from [initial] to [2] at (1.5) should be [3]
-FAIL CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (0) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (0.3) should be [0.6]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (0.6) should be [1.2]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (1) should be [2]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [initial] to [2] at (1.5) should be [3]
-FAIL CSS Animations: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS CSS Animations: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0]
 PASS CSS Animations: property <border-image-outset> from [initial] to [2] at (0) should be [0]
 PASS CSS Animations: property <border-image-outset> from [initial] to [2] at (0.3) should be [0.6]
 PASS CSS Animations: property <border-image-outset> from [initial] to [2] at (0.6) should be [1.2]
 PASS CSS Animations: property <border-image-outset> from [initial] to [2] at (1) should be [2]
 PASS CSS Animations: property <border-image-outset> from [initial] to [2] at (1.5) should be [3]
-FAIL Web Animations: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS Web Animations: property <border-image-outset> from [initial] to [2] at (-0.3) should be [0]
 PASS Web Animations: property <border-image-outset> from [initial] to [2] at (0) should be [0]
 PASS Web Animations: property <border-image-outset> from [initial] to [2] at (0.3) should be [0.6]
 PASS Web Animations: property <border-image-outset> from [initial] to [2] at (0.6) should be [1.2]
@@ -52,116 +52,116 @@
 PASS CSS Transitions: property <border-image-outset> from [inherit] to [2px] at (0.3) should be [7.6px]
 PASS CSS Transitions: property <border-image-outset> from [inherit] to [2px] at (0.6) should be [5.2px]
 PASS CSS Transitions: property <border-image-outset> from [inherit] to [2px] at (1) should be [2px]
-FAIL CSS Transitions: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 2px "
+PASS CSS Transitions: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (-0.3) should be [12.4px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (0) should be [10px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (0.3) should be [7.6px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (0.6) should be [5.2px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (1) should be [2px]
-FAIL CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 2px "
+PASS CSS Transitions with transition: all: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px]
 PASS CSS Animations: property <border-image-outset> from [inherit] to [2px] at (-0.3) should be [12.4px]
 PASS CSS Animations: property <border-image-outset> from [inherit] to [2px] at (0) should be [10px]
 PASS CSS Animations: property <border-image-outset> from [inherit] to [2px] at (0.3) should be [7.6px]
 PASS CSS Animations: property <border-image-outset> from [inherit] to [2px] at (0.6) should be [5.2px]
 PASS CSS Animations: property <border-image-outset> from [inherit] to [2px] at (1) should be [2px]
-FAIL CSS Animations: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 2px "
+PASS CSS Animations: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px]
 PASS Web Animations: property <border-image-outset> from [inherit] to [2px] at (-0.3) should be [12.4px]
 PASS Web Animations: property <border-image-outset> from [inherit] to [2px] at (0) should be [10px]
 PASS Web Animations: property <border-image-outset> from [inherit] to [2px] at (0.3) should be [7.6px]
 PASS Web Animations: property <border-image-outset> from [inherit] to [2px] at (0.6) should be [5.2px]
 PASS Web Animations: property <border-image-outset> from [inherit] to [2px] at (1) should be [2px]
-FAIL Web Animations: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 2px "
-FAIL CSS Transitions: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS Web Animations: property <border-image-outset> from [inherit] to [2px] at (1.5) should be [0px]
+PASS CSS Transitions: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0]
 PASS CSS Transitions: property <border-image-outset> from [unset] to [2] at (0) should be [0]
 PASS CSS Transitions: property <border-image-outset> from [unset] to [2] at (0.3) should be [0.6]
 PASS CSS Transitions: property <border-image-outset> from [unset] to [2] at (0.6) should be [1.2]
 PASS CSS Transitions: property <border-image-outset> from [unset] to [2] at (1) should be [2]
 PASS CSS Transitions: property <border-image-outset> from [unset] to [2] at (1.5) should be [3]
-FAIL CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (0) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (0.3) should be [0.6]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (0.6) should be [1.2]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (1) should be [2]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [unset] to [2] at (1.5) should be [3]
-FAIL CSS Animations: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS CSS Animations: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0]
 PASS CSS Animations: property <border-image-outset> from [unset] to [2] at (0) should be [0]
 PASS CSS Animations: property <border-image-outset> from [unset] to [2] at (0.3) should be [0.6]
 PASS CSS Animations: property <border-image-outset> from [unset] to [2] at (0.6) should be [1.2]
 PASS CSS Animations: property <border-image-outset> from [unset] to [2] at (1) should be [2]
 PASS CSS Animations: property <border-image-outset> from [unset] to [2] at (1.5) should be [3]
-FAIL Web Animations: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.6 "
+PASS Web Animations: property <border-image-outset> from [unset] to [2] at (-0.3) should be [0]
 PASS Web Animations: property <border-image-outset> from [unset] to [2] at (0) should be [0]
 PASS Web Animations: property <border-image-outset> from [unset] to [2] at (0.3) should be [0.6]
 PASS Web Animations: property <border-image-outset> from [unset] to [2] at (0.6) should be [1.2]
 PASS Web Animations: property <border-image-outset> from [unset] to [2] at (1) should be [2]
 PASS Web Animations: property <border-image-outset> from [unset] to [2] at (1.5) should be [3]
-FAIL CSS Transitions: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 1.5px "
+PASS CSS Transitions: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <border-image-outset> from [0px] to [5px] at (0) should be [0px]
 PASS CSS Transitions: property <border-image-outset> from [0px] to [5px] at (0.3) should be [1.5px]
 PASS CSS Transitions: property <border-image-outset> from [0px] to [5px] at (0.6) should be [3px]
 PASS CSS Transitions: property <border-image-outset> from [0px] to [5px] at (1) should be [5px]
 PASS CSS Transitions: property <border-image-outset> from [0px] to [5px] at (1.5) should be [7.5px]
-FAIL CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 1.5px "
+PASS CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (0.3) should be [1.5px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (0.6) should be [3px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (1) should be [5px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0px] to [5px] at (1.5) should be [7.5px]
-FAIL CSS Animations: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 1.5px "
+PASS CSS Animations: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px]
 PASS CSS Animations: property <border-image-outset> from [0px] to [5px] at (0) should be [0px]
 PASS CSS Animations: property <border-image-outset> from [0px] to [5px] at (0.3) should be [1.5px]
 PASS CSS Animations: property <border-image-outset> from [0px] to [5px] at (0.6) should be [3px]
 PASS CSS Animations: property <border-image-outset> from [0px] to [5px] at (1) should be [5px]
 PASS CSS Animations: property <border-image-outset> from [0px] to [5px] at (1.5) should be [7.5px]
-FAIL Web Animations: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 1.5px "
+PASS Web Animations: property <border-image-outset> from [0px] to [5px] at (-0.3) should be [0px]
 PASS Web Animations: property <border-image-outset> from [0px] to [5px] at (0) should be [0px]
 PASS Web Animations: property <border-image-outset> from [0px] to [5px] at (0.3) should be [1.5px]
 PASS Web Animations: property <border-image-outset> from [0px] to [5px] at (0.6) should be [3px]
 PASS Web Animations: property <border-image-outset> from [0px] to [5px] at (1) should be [5px]
 PASS Web Animations: property <border-image-outset> from [0px] to [5px] at (1.5) should be [7.5px]
-FAIL CSS Transitions: property <border-image-outset> from [0] to [1] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.3 "
+PASS CSS Transitions: property <border-image-outset> from [0] to [1] at (-0.3) should be [0]
 PASS CSS Transitions: property <border-image-outset> from [0] to [1] at (0) should be [0]
 PASS CSS Transitions: property <border-image-outset> from [0] to [1] at (0.3) should be [0.3]
 PASS CSS Transitions: property <border-image-outset> from [0] to [1] at (0.6) should be [0.6]
 PASS CSS Transitions: property <border-image-outset> from [0] to [1] at (1) should be [1]
 PASS CSS Transitions: property <border-image-outset> from [0] to [1] at (1.5) should be [1.5]
-FAIL CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.3 "
+PASS CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (-0.3) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (0) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (0.3) should be [0.3]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (0.6) should be [0.6]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (1) should be [1]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [0] to [1] at (1.5) should be [1.5]
-FAIL CSS Animations: property <border-image-outset> from [0] to [1] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.3 "
+PASS CSS Animations: property <border-image-outset> from [0] to [1] at (-0.3) should be [0]
 PASS CSS Animations: property <border-image-outset> from [0] to [1] at (0) should be [0]
 PASS CSS Animations: property <border-image-outset> from [0] to [1] at (0.3) should be [0.3]
 PASS CSS Animations: property <border-image-outset> from [0] to [1] at (0.6) should be [0.6]
 PASS CSS Animations: property <border-image-outset> from [0] to [1] at (1) should be [1]
 PASS CSS Animations: property <border-image-outset> from [0] to [1] at (1.5) should be [1.5]
-FAIL Web Animations: property <border-image-outset> from [0] to [1] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 0.3 "
+PASS Web Animations: property <border-image-outset> from [0] to [1] at (-0.3) should be [0]
 PASS Web Animations: property <border-image-outset> from [0] to [1] at (0) should be [0]
 PASS Web Animations: property <border-image-outset> from [0] to [1] at (0.3) should be [0.3]
 PASS Web Animations: property <border-image-outset> from [0] to [1] at (0.6) should be [0.6]
 PASS Web Animations: property <border-image-outset> from [0] to [1] at (1) should be [1]
 PASS Web Animations: property <border-image-outset> from [0] to [1] at (1.5) should be [1.5]
-FAIL CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px] assert_equals: expected "0 0 0px 0px " but got "- 29 - 28 - 27px - 26px "
+PASS CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px]
 PASS CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0) should be [1 2 3px 4px]
 PASS CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.3) should be [31 32 33px 34px]
 PASS CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.6) should be [61 62 63px 64px]
 PASS CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (1) should be [101 102 103px 104px]
 PASS CSS Transitions: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (1.5) should be [151 152 153px 154px]
-FAIL CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px] assert_equals: expected "0 0 0px 0px " but got "- 29 - 28 - 27px - 26px "
+PASS CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0) should be [1 2 3px 4px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.3) should be [31 32 33px 34px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.6) should be [61 62 63px 64px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (1) should be [101 102 103px 104px]
 PASS CSS Transitions with transition: all: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (1.5) should be [151 152 153px 154px]
-FAIL CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px] assert_equals: expected "0 0 0px 0px " but got "- 29 - 28 - 27px - 26px "
+PASS CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px]
 PASS CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0) should be [1 2 3px 4px]
 PASS CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.3) should be [31 32 33px 34px]
 PASS CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.6) should be [61 62 63px 64px]
 PASS CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (1) should be [101 102 103px 104px]
 PASS CSS Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (1.5) should be [151 152 153px 154px]
-FAIL Web Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px] assert_equals: expected "0 0 0px 0px " but got "- 29 - 28 - 27px - 26px "
+PASS Web Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (-0.3) should be [0 0 0px 0px]
 PASS Web Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0) should be [1 2 3px 4px]
 PASS Web Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.3) should be [31 32 33px 34px]
 PASS Web Animations: property <border-image-outset> from [1 2 3px 4px] to [101 102 103px 104px] at (0.6) should be [61 62 63px 64px]
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt
index 012e1ce..b5f271c 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt
@@ -1,5 +1,5 @@
 
-FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0] assert_equals: expected "0 " but got "- 24 - 23 - 22 - 21 "
+PASS Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0]
 FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0) should be [2 4 6 8] assert_equals: expected "2 4 6 8 " but got "1 2 3 4 "
 FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.25) should be [27 29 31 33] assert_equals: expected "27 29 31 33 " but got "26 27 28 29 "
 FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.5) should be [52 54 56 58] assert_equals: expected "52 54 56 58 " but got "51 52 53 54 "
@@ -13,7 +13,7 @@
 FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (0.75) should be [275 450 700 650 fill] assert_equals: expected "275 450 700 650 fill " but got "175 250 400 fill "
 FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (1) should be [300 500 800 700 fill] assert_equals: expected "300 500 800 700 fill " but got "200 300 500 fill "
 FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (1.25) should be [325 550 900 750 fill] assert_equals: expected "325 550 900 750 fill " but got "225 350 600 fill "
-FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (-0.25) should be [0 0 0% 0%] assert_equals: expected "0 0 0 % 0 % " but got "- 24 - 23 - 22 % - 21 % "
+PASS Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (-0.25) should be [0 0 0% 0%]
 FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0) should be [2 4 6% 8%] assert_equals: expected "2 4 6 % 8 % " but got "1 2 3 % 4 % "
 FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0.25) should be [27 29 31% 33%] assert_equals: expected "27 29 31 % 33 % " but got "26 27 28 % 29 % "
 FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0.5) should be [52 54 56% 58%] assert_equals: expected "52 54 56 % 58 % " but got "51 52 53 % 54 % "
@@ -40,7 +40,7 @@
 FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (0.5) should be [50% 50] assert_equals: expected "50 % 50 " but got "45 % 40 "
 FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (0.75) should be [25% 25] assert_equals: expected "25 % 25 " but got "22.5 % 20 "
 PASS Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (1) should be [0% 0]
-FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (1.25) should be [0% 0] assert_equals: expected "0 % 0 " but got "- 22.5 % - 20 "
+PASS Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (1.25) should be [0% 0]
 FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (-0.25) should be [100% 150%] assert_equals: expected "100 % 150 % " but got "75 % 125 % "
 PASS Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (0) should be [100% 150%]
 FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (0.25) should be [100% 150%] assert_equals: expected "100 % 150 % " but got "125 % 175 % "
@@ -50,9 +50,9 @@
 FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (1.25) should be [200% 250% fill] assert_equals: expected "200 % 250 % fill " but got "225 % 275 % "
 PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (-0.25) should be [100 150%]
 PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0) should be [100 150%]
-FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.25) should be [100 150%] assert_equals: expected "100 150 % " but got "0 "
-FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.5) should be [200% 250] assert_equals: expected "200 % 250 " but got "0 "
-FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.75) should be [200% 250] assert_equals: expected "200 % 250 " but got "0 "
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.25) should be [100 150%]
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.5) should be [200% 250]
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.75) should be [200% 250]
 PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (1) should be [200% 250]
 PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (1.25) should be [200% 250]
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt
index 39174f4..9cdd678 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-interpolation-expected.txt
@@ -33,334 +33,334 @@
 PASS CSS Transitions: property <border-image-slice> from [initial] to [10%] at (0.5) should be [55%]
 PASS CSS Transitions: property <border-image-slice> from [initial] to [10%] at (0.6) should be [46%]
 PASS CSS Transitions: property <border-image-slice> from [initial] to [10%] at (1) should be [10%]
-FAIL CSS Transitions: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS CSS Transitions: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (-0.3) should be [127%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (0) should be [100%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (0.3) should be [73%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (0.5) should be [55%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (0.6) should be [46%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (1) should be [10%]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%]
 PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (-0.3) should be [127%]
 PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (0) should be [100%]
 PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (0.3) should be [73%]
 PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (0.5) should be [55%]
 PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (0.6) should be [46%]
 PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (1) should be [10%]
-FAIL CSS Animations: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS CSS Animations: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%]
 PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (-0.3) should be [127%]
 PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (0) should be [100%]
 PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (0.3) should be [73%]
 PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (0.5) should be [55%]
 PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (0.6) should be [46%]
 PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (1) should be [10%]
-FAIL Web Animations: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS Web Animations: property <border-image-slice> from [initial] to [10%] at (1.5) should be [0%]
 PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (-0.3) should be [62%]
 PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (0) should be [50%]
 PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (0.3) should be [38%]
 PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (0.5) should be [30%]
 PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (0.6) should be [26%]
 PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (1) should be [10%]
-FAIL CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 10 % "
+PASS CSS Transitions: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (-0.3) should be [62%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (0) should be [50%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (0.3) should be [38%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (0.5) should be [30%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (0.6) should be [26%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (1) should be [10%]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 10 % "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%]
 PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (-0.3) should be [62%]
 PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (0) should be [50%]
 PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (0.3) should be [38%]
 PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (0.5) should be [30%]
 PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (0.6) should be [26%]
 PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (1) should be [10%]
-FAIL CSS Animations: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 10 % "
+PASS CSS Animations: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%]
 PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (-0.3) should be [62%]
 PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (0) should be [50%]
 PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (0.3) should be [38%]
 PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (0.5) should be [30%]
 PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (0.6) should be [26%]
 PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (1) should be [10%]
-FAIL Web Animations: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 10 % "
+PASS Web Animations: property <border-image-slice> from [inherit] to [10%] at (1.5) should be [0%]
 PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (-0.3) should be [127%]
 PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (0) should be [100%]
 PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (0.3) should be [73%]
 PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (0.5) should be [55%]
 PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (0.6) should be [46%]
 PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (1) should be [10%]
-FAIL CSS Transitions: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS CSS Transitions: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (-0.3) should be [127%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (0) should be [100%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (0.3) should be [73%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (0.5) should be [55%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (0.6) should be [46%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (1) should be [10%]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%]
 PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (-0.3) should be [127%]
 PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (0) should be [100%]
 PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (0.3) should be [73%]
 PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (0.5) should be [55%]
 PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (0.6) should be [46%]
 PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (1) should be [10%]
-FAIL CSS Animations: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
+PASS CSS Animations: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%]
 PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (-0.3) should be [127%]
 PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (0) should be [100%]
 PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (0.3) should be [73%]
 PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (0.5) should be [55%]
 PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (0.6) should be [46%]
 PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (1) should be [10%]
-FAIL Web Animations: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%] assert_equals: expected "0 % " but got "- 35 % "
-FAIL CSS Transitions: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 15 % "
+PASS Web Animations: property <border-image-slice> from [unset] to [10%] at (1.5) should be [0%]
+PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%]
 PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (0) should be [0%]
 PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (0.3) should be [15%]
 PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (0.5) should be [25%]
 PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (0.6) should be [30%]
 PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (1) should be [50%]
 PASS CSS Transitions: property <border-image-slice> from [0%] to [50%] at (1.5) should be [75%]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 15 % "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (0) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (0.3) should be [15%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (0.5) should be [25%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (0.6) should be [30%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (1) should be [50%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0%] to [50%] at (1.5) should be [75%]
-FAIL CSS Animations: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 15 % "
+PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%]
 PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (0) should be [0%]
 PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (0.3) should be [15%]
 PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (0.5) should be [25%]
 PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (0.6) should be [30%]
 PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (1) should be [50%]
 PASS CSS Animations: property <border-image-slice> from [0%] to [50%] at (1.5) should be [75%]
-FAIL Web Animations: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 15 % "
+PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (-0.3) should be [0%]
 PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (0) should be [0%]
 PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (0.3) should be [15%]
 PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (0.5) should be [25%]
 PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (0.6) should be [30%]
 PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (1) should be [50%]
 PASS Web Animations: property <border-image-slice> from [0%] to [50%] at (1.5) should be [75%]
-FAIL CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%] assert_equals: expected "0 % 0 % 0 % 10 % " but got "- 20 % - 10 % 0 % 10 % "
+PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%]
 PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0) should be [0% 10% 20% 30%]
 PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.3) should be [12% 22% 32% 42%]
 PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.5) should be [20% 30% 40% 50%]
 PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.6) should be [24% 34% 44% 54%]
 PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1) should be [40% 50% 60% 70%]
 PASS CSS Transitions: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1.5) should be [60% 70% 80% 90%]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%] assert_equals: expected "0 % 0 % 0 % 10 % " but got "- 20 % - 10 % 0 % 10 % "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0) should be [0% 10% 20% 30%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.3) should be [12% 22% 32% 42%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.5) should be [20% 30% 40% 50%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.6) should be [24% 34% 44% 54%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1) should be [40% 50% 60% 70%]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1.5) should be [60% 70% 80% 90%]
-FAIL CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%] assert_equals: expected "0 % 0 % 0 % 10 % " but got "- 20 % - 10 % 0 % 10 % "
+PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%]
 PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0) should be [0% 10% 20% 30%]
 PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.3) should be [12% 22% 32% 42%]
 PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.5) should be [20% 30% 40% 50%]
 PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.6) should be [24% 34% 44% 54%]
 PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1) should be [40% 50% 60% 70%]
 PASS CSS Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1.5) should be [60% 70% 80% 90%]
-FAIL Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%] assert_equals: expected "0 % 0 % 0 % 10 % " but got "- 20 % - 10 % 0 % 10 % "
+PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (-0.5) should be [0% 0% 0% 10%]
 PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0) should be [0% 10% 20% 30%]
 PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.3) should be [12% 22% 32% 42%]
 PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.5) should be [20% 30% 40% 50%]
 PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (0.6) should be [24% 34% 44% 54%]
 PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1) should be [40% 50% 60% 70%]
 PASS Web Animations: property <border-image-slice> from [0% 10% 20% 30%] to [40% 50% 60% 70%] at (1.5) should be [60% 70% 80% 90%]
-FAIL CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill] assert_equals: expected "0 0 0 10 fill " but got "- 20 - 10 0 10 fill "
+PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill]
 PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0) should be [0 10 20 30 fill]
 PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.3) should be [12 22 32 42 fill]
 PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.5) should be [20 30 40 50 fill]
 PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.6) should be [24 34 44 54 fill]
 PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1) should be [40 50 60 70 fill]
 PASS CSS Transitions: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1.5) should be [60 70 80 90 fill]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill] assert_equals: expected "0 0 0 10 fill " but got "- 20 - 10 0 10 fill "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0) should be [0 10 20 30 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.3) should be [12 22 32 42 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.5) should be [20 30 40 50 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.6) should be [24 34 44 54 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1) should be [40 50 60 70 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1.5) should be [60 70 80 90 fill]
-FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill] assert_equals: expected "0 0 0 10 fill " but got "- 20 - 10 0 10 "
+FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill] assert_equals: expected "0 0 0 10 fill " but got "0 0 0 10 "
 FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0) should be [0 10 20 30 fill] assert_equals: expected "0 10 20 30 fill " but got "0 10 20 30 "
 FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.3) should be [12 22 32 42 fill] assert_equals: expected "12 22 32 42 fill " but got "12 22 32 42 "
 FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.5) should be [20 30 40 50 fill] assert_equals: expected "20 30 40 50 fill " but got "20 30 40 50 "
 FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.6) should be [24 34 44 54 fill] assert_equals: expected "24 34 44 54 fill " but got "24 34 44 54 "
 FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1) should be [40 50 60 70 fill] assert_equals: expected "40 50 60 70 fill " but got "40 50 60 70 "
 FAIL CSS Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1.5) should be [60 70 80 90 fill] assert_equals: expected "60 70 80 90 fill " but got "60 70 80 90 "
-FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill] assert_equals: expected "0 0 0 10 fill " but got "- 20 - 10 0 10 "
+FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (-0.5) should be [0 0 0 10 fill] assert_equals: expected "0 0 0 10 fill " but got "0 0 0 10 "
 FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0) should be [0 10 20 30 fill] assert_equals: expected "0 10 20 30 fill " but got "0 10 20 30 "
 FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.3) should be [12 22 32 42 fill] assert_equals: expected "12 22 32 42 fill " but got "12 22 32 42 "
 FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.5) should be [20 30 40 50 fill] assert_equals: expected "20 30 40 50 fill " but got "20 30 40 50 "
 FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (0.6) should be [24 34 44 54 fill] assert_equals: expected "24 34 44 54 fill " but got "24 34 44 54 "
 FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1) should be [40 50 60 70 fill] assert_equals: expected "40 50 60 70 fill " but got "40 50 60 70 "
 FAIL Web Animations: property <border-image-slice> from [0 10 20 30 fill] to [40 50 60 70 fill] at (1.5) should be [60 70 80 90 fill] assert_equals: expected "60 70 80 90 fill " but got "60 70 80 90 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill] assert_equals: expected "0 % 0 0 % 10 fill " but got "- 20 % - 10 0 % 10 fill "
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0) should be [0% 10 20% 30 fill]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.3) should be [12% 22 32% 42 fill]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.5) should be [20% 30 40% 50 fill]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.6) should be [24% 34 44% 54 fill]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1) should be [40% 50 60% 70 fill]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1.5) should be [60% 70 80% 90 fill]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill] assert_equals: expected "0 % 0 0 % 10 fill " but got "- 20 % - 10 0 % 10 fill "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0) should be [0% 10 20% 30 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.3) should be [12% 22 32% 42 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.5) should be [20% 30 40% 50 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.6) should be [24% 34 44% 54 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1) should be [40% 50 60% 70 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1.5) should be [60% 70 80% 90 fill]
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill] assert_equals: expected "0 % 0 0 % 10 fill " but got "- 20 % - 10 0 % 10 "
+FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill] assert_equals: expected "0 % 0 0 % 10 fill " but got "0 % 0 0 % 10 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "0 % 10 20 % 30 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.3) should be [12% 22 32% 42 fill] assert_equals: expected "12 % 22 32 % 42 fill " but got "12 % 22 32 % 42 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.5) should be [20% 30 40% 50 fill] assert_equals: expected "20 % 30 40 % 50 fill " but got "20 % 30 40 % 50 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.6) should be [24% 34 44% 54 fill] assert_equals: expected "24 % 34 44 % 54 fill " but got "24 % 34 44 % 54 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1) should be [40% 50 60% 70 fill] assert_equals: expected "40 % 50 60 % 70 fill " but got "40 % 50 60 % 70 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1.5) should be [60% 70 80% 90 fill] assert_equals: expected "60 % 70 80 % 90 fill " but got "60 % 70 80 % 90 "
-FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill] assert_equals: expected "0 % 0 0 % 10 fill " but got "- 20 % - 10 0 % 10 "
+FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (-0.5) should be [0% 0 0% 10 fill] assert_equals: expected "0 % 0 0 % 10 fill " but got "0 % 0 0 % 10 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "0 % 10 20 % 30 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.3) should be [12% 22 32% 42 fill] assert_equals: expected "12 % 22 32 % 42 fill " but got "12 % 22 32 % 42 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.5) should be [20% 30 40% 50 fill] assert_equals: expected "20 % 30 40 % 50 fill " but got "20 % 30 40 % 50 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (0.6) should be [24% 34 44% 54 fill] assert_equals: expected "24 % 34 44 % 54 fill " but got "24 % 34 44 % 54 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1) should be [40% 50 60% 70 fill] assert_equals: expected "40 % 50 60 % 70 fill " but got "40 % 50 60 % 70 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70 fill] at (1.5) should be [60% 70 80% 90 fill] assert_equals: expected "60 % 70 80 % 90 fill " but got "60 % 70 80 % 90 "
-FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [50%] assert_equals: expected "50 % " but got "- 15 % "
+FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [50%] assert_equals: expected "50 % " but got "0 % "
 FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (0) should be [50%] assert_equals: expected "50 % " but got "0 % "
 FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (0.3) should be [50%] assert_equals: expected "50 % " but got "15 % "
 FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (0.5) should be [50%] assert_equals: expected "50 % " but got "25 % "
 FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (0.6) should be [50%] assert_equals: expected "50 % " but got "30 % "
 PASS CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (1) should be [50%]
 FAIL CSS Transitions: property <border-image-slice> from [0% fill] to [50%] at (1.5) should be [50%] assert_equals: expected "50 % " but got "75 % "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [50%] assert_equals: expected "50 % " but got "- 15 % "
+FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [50%] assert_equals: expected "50 % " but got "0 % "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (0) should be [50%] assert_equals: expected "50 % " but got "0 % "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (0.3) should be [50%] assert_equals: expected "50 % " but got "15 % "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (0.5) should be [50%] assert_equals: expected "50 % " but got "25 % "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (0.6) should be [50%] assert_equals: expected "50 % " but got "30 % "
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (1) should be [50%]
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% fill] to [50%] at (1.5) should be [50%] assert_equals: expected "50 % " but got "75 % "
-FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [0% fill] assert_equals: expected "0 % fill " but got "- 15 % "
+FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [0% fill] assert_equals: expected "0 % fill " but got "0 % "
 FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (0) should be [0% fill] assert_equals: expected "0 % fill " but got "0 % "
 FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (0.3) should be [0% fill] assert_equals: expected "0 % fill " but got "15 % "
 FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (0.5) should be [50%] assert_equals: expected "50 % " but got "25 % "
 FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (0.6) should be [50%] assert_equals: expected "50 % " but got "30 % "
 PASS CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (1) should be [50%]
 FAIL CSS Animations: property <border-image-slice> from [0% fill] to [50%] at (1.5) should be [50%] assert_equals: expected "50 % " but got "75 % "
-FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [0% fill] assert_equals: expected "0 % fill " but got "- 15 % "
+FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (-0.3) should be [0% fill] assert_equals: expected "0 % fill " but got "0 % "
 FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (0) should be [0% fill] assert_equals: expected "0 % fill " but got "0 % "
 FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (0.3) should be [0% fill] assert_equals: expected "0 % fill " but got "15 % "
 FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (0.5) should be [50%] assert_equals: expected "50 % " but got "25 % "
 FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (0.6) should be [50%] assert_equals: expected "50 % " but got "30 % "
 PASS Web Animations: property <border-image-slice> from [0% fill] to [50%] at (1) should be [50%]
 FAIL Web Animations: property <border-image-slice> from [0% fill] to [50%] at (1.5) should be [50%] assert_equals: expected "50 % " but got "75 % "
-FAIL CSS Transitions: property <border-image-slice> from [50%] to [100] at (-0.3) should be [100] assert_equals: expected "100 " but got "50 % "
-FAIL CSS Transitions: property <border-image-slice> from [50%] to [100] at (0) should be [100] assert_equals: expected "100 " but got "50 % "
-FAIL CSS Transitions: property <border-image-slice> from [50%] to [100] at (0.3) should be [100] assert_equals: expected "100 " but got "0 "
-FAIL CSS Transitions: property <border-image-slice> from [50%] to [100] at (0.5) should be [100] assert_equals: expected "100 " but got "0 "
-FAIL CSS Transitions: property <border-image-slice> from [50%] to [100] at (0.6) should be [100] assert_equals: expected "100 " but got "0 "
+PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (-0.3) should be [100]
+PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (0) should be [100]
+PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (0.3) should be [100]
+PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (0.5) should be [100]
+PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (0.6) should be [100]
 PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (1) should be [100]
 PASS CSS Transitions: property <border-image-slice> from [50%] to [100] at (1.5) should be [100]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (-0.3) should be [100] assert_equals: expected "100 " but got "50 % "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0) should be [100] assert_equals: expected "100 " but got "50 % "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0.3) should be [100] assert_equals: expected "100 " but got "0 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0.5) should be [100] assert_equals: expected "100 " but got "0 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0.6) should be [100] assert_equals: expected "100 " but got "0 "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (-0.3) should be [100]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0) should be [100]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0.3) should be [100]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0.5) should be [100]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (0.6) should be [100]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (1) should be [100]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [50%] to [100] at (1.5) should be [100]
 PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (-0.3) should be [50%]
 PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (0) should be [50%]
-FAIL CSS Animations: property <border-image-slice> from [50%] to [100] at (0.3) should be [50%] assert_equals: expected "50 % " but got "0 "
-FAIL CSS Animations: property <border-image-slice> from [50%] to [100] at (0.5) should be [100] assert_equals: expected "100 " but got "0 "
-FAIL CSS Animations: property <border-image-slice> from [50%] to [100] at (0.6) should be [100] assert_equals: expected "100 " but got "0 "
+PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (0.3) should be [50%]
+PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (0.5) should be [100]
+PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (0.6) should be [100]
 PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (1) should be [100]
 PASS CSS Animations: property <border-image-slice> from [50%] to [100] at (1.5) should be [100]
 PASS Web Animations: property <border-image-slice> from [50%] to [100] at (-0.3) should be [50%]
 PASS Web Animations: property <border-image-slice> from [50%] to [100] at (0) should be [50%]
-FAIL Web Animations: property <border-image-slice> from [50%] to [100] at (0.3) should be [50%] assert_equals: expected "50 % " but got "0 "
-FAIL Web Animations: property <border-image-slice> from [50%] to [100] at (0.5) should be [100] assert_equals: expected "100 " but got "0 "
-FAIL Web Animations: property <border-image-slice> from [50%] to [100] at (0.6) should be [100] assert_equals: expected "100 " but got "0 "
+PASS Web Animations: property <border-image-slice> from [50%] to [100] at (0.3) should be [50%]
+PASS Web Animations: property <border-image-slice> from [50%] to [100] at (0.5) should be [100]
+PASS Web Animations: property <border-image-slice> from [50%] to [100] at (0.6) should be [100]
 PASS Web Animations: property <border-image-slice> from [50%] to [100] at (1) should be [100]
 PASS Web Animations: property <border-image-slice> from [50%] to [100] at (1.5) should be [100]
-FAIL CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (-0.3) should be [100 fill] assert_equals: expected "100 fill " but got "50 % fill "
-FAIL CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0) should be [100 fill] assert_equals: expected "100 fill " but got "50 % fill "
-FAIL CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [100 fill] assert_equals: expected "100 fill " but got "0 fill "
-FAIL CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill] assert_equals: expected "100 fill " but got "0 fill "
-FAIL CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill] assert_equals: expected "100 fill " but got "0 fill "
+PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (-0.3) should be [100 fill]
+PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0) should be [100 fill]
+PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [100 fill]
+PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill]
+PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill]
 PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (1) should be [100 fill]
 PASS CSS Transitions: property <border-image-slice> from [50% fill] to [100 fill] at (1.5) should be [100 fill]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (-0.3) should be [100 fill] assert_equals: expected "100 fill " but got "50 % fill "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0) should be [100 fill] assert_equals: expected "100 fill " but got "50 % fill "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [100 fill] assert_equals: expected "100 fill " but got "0 fill "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill] assert_equals: expected "100 fill " but got "0 fill "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill] assert_equals: expected "100 fill " but got "0 fill "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (-0.3) should be [100 fill]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0) should be [100 fill]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [100 fill]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (1) should be [100 fill]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [50% fill] to [100 fill] at (1.5) should be [100 fill]
 FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (-0.3) should be [50% fill] assert_equals: expected "50 % fill " but got "50 % "
 FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0) should be [50% fill] assert_equals: expected "50 % fill " but got "50 % "
-FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [50% fill] assert_equals: expected "50 % fill " but got "0 "
-FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill] assert_equals: expected "100 fill " but got "0 "
-FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill] assert_equals: expected "100 fill " but got "0 "
+FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [50% fill] assert_equals: expected "50 % fill " but got "50 % "
+FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
+FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
 FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (1) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
 FAIL CSS Animations: property <border-image-slice> from [50% fill] to [100 fill] at (1.5) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
 FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (-0.3) should be [50% fill] assert_equals: expected "50 % fill " but got "50 % "
 FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0) should be [50% fill] assert_equals: expected "50 % fill " but got "50 % "
-FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [50% fill] assert_equals: expected "50 % fill " but got "0 "
-FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill] assert_equals: expected "100 fill " but got "0 "
-FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill] assert_equals: expected "100 fill " but got "0 "
+FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.3) should be [50% fill] assert_equals: expected "50 % fill " but got "50 % "
+FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.5) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
+FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (0.6) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
 FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (1) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
 FAIL Web Animations: property <border-image-slice> from [50% fill] to [100 fill] at (1.5) should be [100 fill] assert_equals: expected "100 fill " but got "100 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "- 12 % - 2 8 % 18 "
+FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "0 % 0 8 % 18 "
 FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "0 % 10 20 % 30 "
 FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.3) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "12 % 22 32 % 42 "
 FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "20 % 30 40 % 50 "
 FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.6) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "24 % 34 44 % 54 "
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1) should be [40% 50 60% 70]
 FAIL CSS Transitions: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "60 % 70 80 % 90 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "- 12 % - 2 8 % 18 "
+FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "0 % 0 8 % 18 "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "0 % 10 20 % 30 "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.3) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "12 % 22 32 % 42 "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "20 % 30 40 % 50 "
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.6) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "24 % 34 44 % 54 "
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1) should be [40% 50 60% 70]
 FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "60 % 70 80 % 90 "
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "- 12 % - 2 8 % 18 "
+FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "0 % 0 8 % 18 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "0 % 10 20 % 30 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.3) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "12 % 22 32 % 42 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "20 % 30 40 % 50 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.6) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "24 % 34 44 % 54 "
 PASS CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1) should be [40% 50 60% 70]
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "60 % 70 80 % 90 "
-FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "- 12 % - 2 8 % 18 "
+FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (-0.3) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "0 % 0 8 % 18 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "0 % 10 20 % 30 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.3) should be [0% 10 20% 30 fill] assert_equals: expected "0 % 10 20 % 30 fill " but got "12 % 22 32 % 42 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "20 % 30 40 % 50 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (0.6) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "24 % 34 44 % 54 "
 PASS Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1) should be [40% 50 60% 70]
 FAIL Web Animations: property <border-image-slice> from [0% 10 20% 30 fill] to [40% 50 60% 70] at (1.5) should be [40% 50 60% 70] assert_equals: expected "40 % 50 60 % 70 " but got "60 % 70 80 % 90 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "- 12 - 2 20 18 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "0 10 20 30 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "12 22 0 42 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "20 30 0 50 "
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "24 34 0 54 "
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [40 50 60% 70]
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0) should be [40 50 60% 70]
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [40 50 60% 70]
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70]
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70]
 PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1) should be [40 50 60% 70]
-FAIL CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "60 70 60 % 90 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "- 12 - 2 20 18 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "0 10 20 30 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "12 22 0 42 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "20 30 0 50 "
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "24 34 0 54 "
+PASS CSS Transitions: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [40 50 60% 70]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0) should be [40 50 60% 70]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [40 50 60% 70]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70]
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70]
 PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1) should be [40 50 60% 70]
-FAIL CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "60 70 60 % 90 "
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "- 12 - 2 20 18 "
+PASS CSS Transitions with transition: all: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70]
+FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "0 10 20 30 "
 FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "0 10 20 30 "
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "12 22 0 42 "
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "20 30 0 50 "
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "24 34 0 54 "
+FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "0 10 20 30 "
+PASS CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70]
+PASS CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70]
 PASS CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1) should be [40 50 60% 70]
-FAIL CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "60 70 60 % 90 "
-FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "- 12 - 2 20 18 "
+PASS CSS Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70]
+FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (-0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "0 10 20 30 "
 FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "0 10 20 30 "
-FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "12 22 0 42 "
-FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "20 30 0 50 "
-FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "24 34 0 54 "
+FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.3) should be [0% 10 20 30 fill] assert_equals: expected "0 % 10 20 30 fill " but got "0 10 20 30 "
+PASS Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.5) should be [40 50 60% 70]
+PASS Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (0.6) should be [40 50 60% 70]
 PASS Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1) should be [40 50 60% 70]
-FAIL Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70] assert_equals: expected "40 50 60 % 70 " but got "60 70 60 % 90 "
+PASS Web Animations: property <border-image-slice> from [0% 10 20 30 fill] to [40 50 60% 70] at (1.5) should be [40 50 60% 70]
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt
index 647b5de..fbbea2f 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt
@@ -1,5 +1,5 @@
 
-FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0] assert_equals: expected "0 " but got "- 24 - 23 - 22 - 21 "
+PASS Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0]
 FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0) should be [2 4 6 8] assert_equals: expected "2 4 6 8 " but got "1 2 3 4 "
 FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.25) should be [27 29 31 33] assert_equals: expected "27 29 31 33 " but got "26 27 28 29 "
 FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.5) should be [52 54 56 58] assert_equals: expected "52 54 56 58 " but got "51 52 53 54 "
@@ -13,7 +13,7 @@
 FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.75) should be [275 450 700 650] assert_equals: expected "275 450 700 650 " but got "175 250 400 "
 FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1) should be [300 500 800 700] assert_equals: expected "300 500 800 700 " but got "200 300 500 "
 FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1.25) should be [325 550 900 750] assert_equals: expected "325 550 900 750 " but got "225 350 600 "
-FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (-0.25) should be [0 0 0px 0%] assert_equals: expected "0 0 0px 0 % " but got "- 24 - 23 - 22px - 21 % "
+PASS Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (-0.25) should be [0 0 0px 0%]
 FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0) should be [2 4 6px 8%] assert_equals: expected "2 4 6px 8 % " but got "1 2 3px 4 % "
 FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0.25) should be [27 29 31px 33%] assert_equals: expected "27 29 31px 33 % " but got "26 27 28px 29 % "
 FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0.5) should be [52 54 56px 58%] assert_equals: expected "52 54 56px 58 % " but got "51 52 53px 54 % "
@@ -40,7 +40,7 @@
 FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.5) should be [50px 50] assert_equals: expected "50px 50 " but got "45px 40 "
 FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.75) should be [25px 25] assert_equals: expected "25px 25 " but got "22.5px 20 "
 PASS Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1) should be [0px 0]
-FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1.25) should be [0px 0] assert_equals: expected "0px 0 " but got "- 22.5px - 20 "
+PASS Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1.25) should be [0px 0]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (-0.25) should be [75px 125px]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0) should be [100px 150px]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.25) should be [125px 175px]
@@ -50,9 +50,9 @@
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (1.25) should be [225px 275px]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (-0.25) should be [100 150px]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0) should be [100 150px]
-FAIL Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.25) should be [100 150px] assert_equals: expected "100 150px " but got ""
-FAIL Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.5) should be [200% 250] assert_equals: expected "200 % 250 " but got ""
-FAIL Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.75) should be [200% 250] assert_equals: expected "200 % 250 " but got ""
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.25) should be [100 150px]
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.5) should be [200% 250]
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.75) should be [200% 250]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (1) should be [200% 250]
 PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (1.25) should be [200% 250]
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt
index 5afd10a..15b97e1 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt
@@ -31,32 +31,32 @@
 PASS Web Animations: property <border-image-width> from neutral to [20px] at (1.5) should be [25px]
 PASS Web Animations: property <border-image-width> from neutral to [20px] at (5) should be [60px]
 PASS Web Animations: property <border-image-width> from neutral to [20px] at (10) should be [110px]
-FAIL CSS Transitions: property <border-image-width> from [initial] to [20px] at (-0.3) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions: property <border-image-width> from [initial] to [20px] at (0) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions: property <border-image-width> from [initial] to [20px] at (0.3) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (-0.3) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (0) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (0.3) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [initial] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (-0.3) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0.3) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (-0.3) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0.3) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [initial] to [20px] at (1.5) should be [20px]
 PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (-0.3) should be [initial]
 PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (0) should be [initial]
-FAIL CSS Animations: property <border-image-width> from [initial] to [20px] at (0.3) should be [initial] assert_equals: expected "1 " but got ""
-FAIL CSS Animations: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Animations: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (0.3) should be [initial]
+PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px]
+PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px]
 PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <border-image-width> from [initial] to [20px] at (1.5) should be [20px]
 PASS Web Animations: property <border-image-width> from [initial] to [20px] at (-0.3) should be [initial]
 PASS Web Animations: property <border-image-width> from [initial] to [20px] at (0) should be [initial]
-FAIL Web Animations: property <border-image-width> from [initial] to [20px] at (0.3) should be [initial] assert_equals: expected "1 " but got ""
-FAIL Web Animations: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL Web Animations: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS Web Animations: property <border-image-width> from [initial] to [20px] at (0.3) should be [initial]
+PASS Web Animations: property <border-image-width> from [initial] to [20px] at (0.5) should be [20px]
+PASS Web Animations: property <border-image-width> from [initial] to [20px] at (0.6) should be [20px]
 PASS Web Animations: property <border-image-width> from [initial] to [20px] at (1) should be [20px]
 PASS Web Animations: property <border-image-width> from [initial] to [20px] at (1.5) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (-0.3) should be [124px]
@@ -64,62 +64,62 @@
 PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (0.3) should be [76px]
 PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (0.6) should be [52px]
 PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (1) should be [20px]
-FAIL CSS Transitions: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 20px "
-FAIL CSS Transitions: property <border-image-width> from [inherit] to [20px] at (5) should be [0px] assert_equals: expected "0px " but got "- 300px "
-FAIL CSS Transitions: property <border-image-width> from [inherit] to [20px] at (10) should be [0px] assert_equals: expected "0px " but got "- 700px "
+PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px]
+PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (5) should be [0px]
+PASS CSS Transitions: property <border-image-width> from [inherit] to [20px] at (10) should be [0px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (-0.3) should be [124px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (0) should be [100px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (0.3) should be [76px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (0.6) should be [52px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (1) should be [20px]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 20px "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (5) should be [0px] assert_equals: expected "0px " but got "- 300px "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (10) should be [0px] assert_equals: expected "0px " but got "- 700px "
+PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (5) should be [0px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [inherit] to [20px] at (10) should be [0px]
 PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (-0.3) should be [124px]
 PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (0) should be [100px]
 PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (0.3) should be [76px]
 PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (0.6) should be [52px]
 PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (1) should be [20px]
-FAIL CSS Animations: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 20px "
-FAIL CSS Animations: property <border-image-width> from [inherit] to [20px] at (5) should be [0px] assert_equals: expected "0px " but got "- 300px "
-FAIL CSS Animations: property <border-image-width> from [inherit] to [20px] at (10) should be [0px] assert_equals: expected "0px " but got "- 700px "
+PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px]
+PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (5) should be [0px]
+PASS CSS Animations: property <border-image-width> from [inherit] to [20px] at (10) should be [0px]
 PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (-0.3) should be [124px]
 PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (0) should be [100px]
 PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (0.3) should be [76px]
 PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (0.6) should be [52px]
 PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (1) should be [20px]
-FAIL Web Animations: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px] assert_equals: expected "0px " but got "- 20px "
-FAIL Web Animations: property <border-image-width> from [inherit] to [20px] at (5) should be [0px] assert_equals: expected "0px " but got "- 300px "
-FAIL Web Animations: property <border-image-width> from [inherit] to [20px] at (10) should be [0px] assert_equals: expected "0px " but got "- 700px "
-FAIL CSS Transitions: property <border-image-width> from [unset] to [20px] at (-0.3) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions: property <border-image-width> from [unset] to [20px] at (0) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions: property <border-image-width> from [unset] to [20px] at (0.3) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (1.5) should be [0px]
+PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (5) should be [0px]
+PASS Web Animations: property <border-image-width> from [inherit] to [20px] at (10) should be [0px]
+PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (-0.3) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (0) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (0.3) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [unset] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (-0.3) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0) should be [20px] assert_equals: expected "20px " but got "1 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0.3) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (-0.3) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0.3) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [unset] to [20px] at (1.5) should be [20px]
 PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (-0.3) should be [unset]
 PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (0) should be [unset]
-FAIL CSS Animations: property <border-image-width> from [unset] to [20px] at (0.3) should be [unset] assert_equals: expected "1 " but got ""
-FAIL CSS Animations: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Animations: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (0.3) should be [unset]
+PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px]
+PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px]
 PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <border-image-width> from [unset] to [20px] at (1.5) should be [20px]
 PASS Web Animations: property <border-image-width> from [unset] to [20px] at (-0.3) should be [unset]
 PASS Web Animations: property <border-image-width> from [unset] to [20px] at (0) should be [unset]
-FAIL Web Animations: property <border-image-width> from [unset] to [20px] at (0.3) should be [unset] assert_equals: expected "1 " but got ""
-FAIL Web Animations: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL Web Animations: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS Web Animations: property <border-image-width> from [unset] to [20px] at (0.3) should be [unset]
+PASS Web Animations: property <border-image-width> from [unset] to [20px] at (0.5) should be [20px]
+PASS Web Animations: property <border-image-width> from [unset] to [20px] at (0.6) should be [20px]
 PASS Web Animations: property <border-image-width> from [unset] to [20px] at (1) should be [20px]
 PASS Web Animations: property <border-image-width> from [unset] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (0) should be [0px]
 PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (0.6) should be [12px]
@@ -127,7 +127,7 @@
 PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (1.5) should be [30px]
 PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (5) should be [100px]
 PASS CSS Transitions: property <border-image-width> from [0px] to [20px] at (10) should be [200px]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (0) should be [0px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (0.3) should be [6px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (0.6) should be [12px]
@@ -135,7 +135,7 @@
 PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (1.5) should be [30px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (5) should be [100px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0px] to [20px] at (10) should be [200px]
-FAIL CSS Animations: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px]
 PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (0) should be [0px]
 PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (0.3) should be [6px]
 PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (0.6) should be [12px]
@@ -143,7 +143,7 @@
 PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (1.5) should be [30px]
 PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (5) should be [100px]
 PASS CSS Animations: property <border-image-width> from [0px] to [20px] at (10) should be [200px]
-FAIL Web Animations: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px] assert_equals: expected "0px " but got "- 6px "
+PASS Web Animations: property <border-image-width> from [0px] to [20px] at (-0.3) should be [0px]
 PASS Web Animations: property <border-image-width> from [0px] to [20px] at (0) should be [0px]
 PASS Web Animations: property <border-image-width> from [0px] to [20px] at (0.3) should be [6px]
 PASS Web Animations: property <border-image-width> from [0px] to [20px] at (0.6) should be [12px]
@@ -151,7 +151,7 @@
 PASS Web Animations: property <border-image-width> from [0px] to [20px] at (1.5) should be [30px]
 PASS Web Animations: property <border-image-width> from [0px] to [20px] at (5) should be [100px]
 PASS Web Animations: property <border-image-width> from [0px] to [20px] at (10) should be [200px]
-FAIL CSS Transitions: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 6 % "
+PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%]
 PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (0) should be [0%]
 PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (0.3) should be [6%]
 PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (0.6) should be [12%]
@@ -159,7 +159,7 @@
 PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (1.5) should be [30%]
 PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (5) should be [100%]
 PASS CSS Transitions: property <border-image-width> from [0%] to [20%] at (10) should be [200%]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 6 % "
+PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (0) should be [0%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (0.3) should be [6%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (0.6) should be [12%]
@@ -167,7 +167,7 @@
 PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (1.5) should be [30%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (5) should be [100%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0%] to [20%] at (10) should be [200%]
-FAIL CSS Animations: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 6 % "
+PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%]
 PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (0) should be [0%]
 PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (0.3) should be [6%]
 PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (0.6) should be [12%]
@@ -175,7 +175,7 @@
 PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (1.5) should be [30%]
 PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (5) should be [100%]
 PASS CSS Animations: property <border-image-width> from [0%] to [20%] at (10) should be [200%]
-FAIL Web Animations: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%] assert_equals: expected "0 % " but got "- 6 % "
+PASS Web Animations: property <border-image-width> from [0%] to [20%] at (-0.3) should be [0%]
 PASS Web Animations: property <border-image-width> from [0%] to [20%] at (0) should be [0%]
 PASS Web Animations: property <border-image-width> from [0%] to [20%] at (0.3) should be [6%]
 PASS Web Animations: property <border-image-width> from [0%] to [20%] at (0.6) should be [12%]
@@ -183,7 +183,7 @@
 PASS Web Animations: property <border-image-width> from [0%] to [20%] at (1.5) should be [30%]
 PASS Web Animations: property <border-image-width> from [0%] to [20%] at (5) should be [100%]
 PASS Web Animations: property <border-image-width> from [0%] to [20%] at (10) should be [200%]
-FAIL CSS Transitions: property <border-image-width> from [0] to [20] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 6 "
+PASS CSS Transitions: property <border-image-width> from [0] to [20] at (-0.3) should be [0]
 PASS CSS Transitions: property <border-image-width> from [0] to [20] at (0) should be [0]
 PASS CSS Transitions: property <border-image-width> from [0] to [20] at (0.3) should be [6]
 PASS CSS Transitions: property <border-image-width> from [0] to [20] at (0.6) should be [12]
@@ -191,7 +191,7 @@
 PASS CSS Transitions: property <border-image-width> from [0] to [20] at (1.5) should be [30]
 PASS CSS Transitions: property <border-image-width> from [0] to [20] at (5) should be [100]
 PASS CSS Transitions: property <border-image-width> from [0] to [20] at (10) should be [200]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 6 "
+PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (-0.3) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (0) should be [0]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (0.3) should be [6]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (0.6) should be [12]
@@ -199,7 +199,7 @@
 PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (1.5) should be [30]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (5) should be [100]
 PASS CSS Transitions with transition: all: property <border-image-width> from [0] to [20] at (10) should be [200]
-FAIL CSS Animations: property <border-image-width> from [0] to [20] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 6 "
+PASS CSS Animations: property <border-image-width> from [0] to [20] at (-0.3) should be [0]
 PASS CSS Animations: property <border-image-width> from [0] to [20] at (0) should be [0]
 PASS CSS Animations: property <border-image-width> from [0] to [20] at (0.3) should be [6]
 PASS CSS Animations: property <border-image-width> from [0] to [20] at (0.6) should be [12]
@@ -207,7 +207,7 @@
 PASS CSS Animations: property <border-image-width> from [0] to [20] at (1.5) should be [30]
 PASS CSS Animations: property <border-image-width> from [0] to [20] at (5) should be [100]
 PASS CSS Animations: property <border-image-width> from [0] to [20] at (10) should be [200]
-FAIL Web Animations: property <border-image-width> from [0] to [20] at (-0.3) should be [0] assert_equals: expected "0 " but got "- 6 "
+PASS Web Animations: property <border-image-width> from [0] to [20] at (-0.3) should be [0]
 PASS Web Animations: property <border-image-width> from [0] to [20] at (0) should be [0]
 PASS Web Animations: property <border-image-width> from [0] to [20] at (0.3) should be [6]
 PASS Web Animations: property <border-image-width> from [0] to [20] at (0.6) should be [12]
@@ -215,7 +215,7 @@
 PASS Web Animations: property <border-image-width> from [0] to [20] at (1.5) should be [30]
 PASS Web Animations: property <border-image-width> from [0] to [20] at (5) should be [100]
 PASS Web Animations: property <border-image-width> from [0] to [20] at (10) should be [200]
-FAIL CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px] assert_equals: expected "0px 5 % 21 37px " but got "- 11px 5 % 21 37px "
+PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px]
 PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0) should be [10px  20%  30  40px]
 PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.3) should be [31px  35%  39  43px]
 PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.6) should be [52px  50%  48  46px]
@@ -223,7 +223,7 @@
 PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (1.5) should be [115px  95%  75  55px]
 PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (5) should be [360px 270% 180  90px]
 PASS CSS Transitions: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (10) should be [710px 520% 330 140px]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px] assert_equals: expected "0px 5 % 21 37px " but got "- 11px 5 % 21 37px "
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0) should be [10px  20%  30  40px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.3) should be [31px  35%  39  43px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.6) should be [52px  50%  48  46px]
@@ -231,7 +231,7 @@
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (1.5) should be [115px  95%  75  55px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (5) should be [360px 270% 180  90px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (10) should be [710px 520% 330 140px]
-FAIL CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px] assert_equals: expected "0px 5 % 21 37px " but got "- 11px 5 % 21 37px "
+PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px]
 PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0) should be [10px  20%  30  40px]
 PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.3) should be [31px  35%  39  43px]
 PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.6) should be [52px  50%  48  46px]
@@ -239,7 +239,7 @@
 PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (1.5) should be [115px  95%  75  55px]
 PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (5) should be [360px 270% 180  90px]
 PASS CSS Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (10) should be [710px 520% 330 140px]
-FAIL Web Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px] assert_equals: expected "0px 5 % 21 37px " but got "- 11px 5 % 21 37px "
+PASS Web Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (-0.3) should be [0px   5%  21  37px]
 PASS Web Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0) should be [10px  20%  30  40px]
 PASS Web Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.3) should be [31px  35%  39  43px]
 PASS Web Animations: property <border-image-width> from [10px 20% 30 40px] to [80px 70% 60 50px] at (0.6) should be [52px  50%  48  46px]
@@ -295,168 +295,168 @@
 FAIL Web Animations: property <border-image-width> from [10px] to [20%] at (0.6) should be [calc(4px + 12%)] assert_equals: expected "16px " but got ""
 PASS Web Animations: property <border-image-width> from [10px] to [20%] at (1) should be [20%]
 FAIL Web Animations: property <border-image-width> from [10px] to [20%] at (1.5) should be [calc(-5px + 30%)] assert_equals: expected "25px " but got "20 % "
-FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0] assert_equals: expected "0px auto auto 0 " but got "- 20px auto auto - 10 "
+PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0]
 PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0) should be [ 10px auto auto  20]
 PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) should be [ 40px auto auto  50]
 PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) should be [ 70px auto auto  80]
 PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1) should be [110px auto auto 120]
 PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) should be [160px auto auto 170]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0] assert_equals: expected "0px auto auto 0 " but got "- 20px auto auto - 10 "
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0) should be [ 10px auto auto  20]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) should be [ 40px auto auto  50]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) should be [ 70px auto auto  80]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1) should be [110px auto auto 120]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) should be [160px auto auto 170]
-FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0] assert_equals: expected "0px auto auto 0 " but got "- 20px auto auto - 10 "
+PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0]
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0) should be [ 10px auto auto  20]
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) should be [ 40px auto auto  50]
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) should be [ 70px auto auto  80]
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1) should be [110px auto auto 120]
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) should be [160px auto auto 170]
-FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0] assert_equals: expected "0px auto auto 0 " but got "- 20px auto auto - 10 "
+PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (-0.3) should be [  0px auto auto   0]
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0) should be [ 10px auto auto  20]
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.3) should be [ 40px auto auto  50]
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (0.6) should be [ 70px auto auto  80]
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1) should be [110px auto auto 120]
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto auto 120] at (1.5) should be [160px auto auto 170]
-FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "- 20px auto auto 20 "
+FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "0px auto auto 20 "
 FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "10px auto auto 20 "
 FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.3) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "40px auto auto 20 "
 FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "60px auto 120 "
 FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.6) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "70px auto 120 "
 PASS CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1) should be [110px auto 120 auto]
 FAIL CSS Transitions: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "160px auto 120 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "- 20px auto auto 20 "
+FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "0px auto auto 20 "
 FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "10px auto auto 20 "
 FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.3) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "40px auto auto 20 "
 FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "60px auto 120 "
 FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.6) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "70px auto 120 "
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1) should be [110px auto 120 auto]
 FAIL CSS Transitions with transition: all: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "160px auto 120 "
-FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [10px auto auto 20] assert_equals: expected "10px auto auto 20 " but got "- 20px auto auto 20 "
+FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [10px auto auto 20] assert_equals: expected "10px auto auto 20 " but got "0px auto auto 20 "
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0) should be [10px auto auto 20]
 FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.3) should be [10px auto auto 20] assert_equals: expected "10px auto auto 20 " but got "40px auto auto 20 "
 FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "60px auto 120 "
 FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.6) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "70px auto 120 "
 PASS CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1) should be [110px auto 120 auto]
 FAIL CSS Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "160px auto 120 "
-FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [10px auto auto 20] assert_equals: expected "10px auto auto 20 " but got "- 20px auto auto 20 "
+FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (-0.3) should be [10px auto auto 20] assert_equals: expected "10px auto auto 20 " but got "0px auto auto 20 "
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0) should be [10px auto auto 20]
 FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.3) should be [10px auto auto 20] assert_equals: expected "10px auto auto 20 " but got "40px auto auto 20 "
 FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "60px auto 120 "
 FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (0.6) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "70px auto 120 "
 PASS Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1) should be [110px auto 120 auto]
 FAIL Web Animations: property <border-image-width> from [10px auto auto 20] to [110px auto 120 auto] at (1.5) should be [110px auto 120 auto] assert_equals: expected "110px auto 120 " but got "160px auto 120 "
-FAIL CSS Transitions: property <border-image-width> from [10px] to [20] at (-0.3) should be [20] assert_equals: expected "20 " but got "10px "
-FAIL CSS Transitions: property <border-image-width> from [10px] to [20] at (0) should be [20] assert_equals: expected "20 " but got "10px "
-FAIL CSS Transitions: property <border-image-width> from [10px] to [20] at (0.3) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10px] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10px] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (-0.3) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (0) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (0.3) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (0.5) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (0.6) should be [20]
 PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (1) should be [20]
 PASS CSS Transitions: property <border-image-width> from [10px] to [20] at (1.5) should be [20]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (-0.3) should be [20] assert_equals: expected "20 " but got "10px "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0) should be [20] assert_equals: expected "20 " but got "10px "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0.3) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (-0.3) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0.3) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0.5) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (0.6) should be [20]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (1) should be [20]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10px] to [20] at (1.5) should be [20]
 PASS CSS Animations: property <border-image-width> from [10px] to [20] at (-0.3) should be [10px]
 PASS CSS Animations: property <border-image-width> from [10px] to [20] at (0) should be [10px]
-FAIL CSS Animations: property <border-image-width> from [10px] to [20] at (0.3) should be [10px] assert_equals: expected "10px " but got ""
-FAIL CSS Animations: property <border-image-width> from [10px] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Animations: property <border-image-width> from [10px] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS CSS Animations: property <border-image-width> from [10px] to [20] at (0.3) should be [10px]
+PASS CSS Animations: property <border-image-width> from [10px] to [20] at (0.5) should be [20]
+PASS CSS Animations: property <border-image-width> from [10px] to [20] at (0.6) should be [20]
 PASS CSS Animations: property <border-image-width> from [10px] to [20] at (1) should be [20]
 PASS CSS Animations: property <border-image-width> from [10px] to [20] at (1.5) should be [20]
 PASS Web Animations: property <border-image-width> from [10px] to [20] at (-0.3) should be [10px]
 PASS Web Animations: property <border-image-width> from [10px] to [20] at (0) should be [10px]
-FAIL Web Animations: property <border-image-width> from [10px] to [20] at (0.3) should be [10px] assert_equals: expected "10px " but got ""
-FAIL Web Animations: property <border-image-width> from [10px] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL Web Animations: property <border-image-width> from [10px] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS Web Animations: property <border-image-width> from [10px] to [20] at (0.3) should be [10px]
+PASS Web Animations: property <border-image-width> from [10px] to [20] at (0.5) should be [20]
+PASS Web Animations: property <border-image-width> from [10px] to [20] at (0.6) should be [20]
 PASS Web Animations: property <border-image-width> from [10px] to [20] at (1) should be [20]
 PASS Web Animations: property <border-image-width> from [10px] to [20] at (1.5) should be [20]
-FAIL CSS Transitions: property <border-image-width> from [10] to [20px] at (-0.3) should be [20px] assert_equals: expected "20px " but got "10 "
-FAIL CSS Transitions: property <border-image-width> from [10] to [20px] at (0) should be [20px] assert_equals: expected "20px " but got "10 "
-FAIL CSS Transitions: property <border-image-width> from [10] to [20px] at (0.3) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (-0.3) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (0) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (0.3) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (0.5) should be [20px]
+PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (0.6) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (1) should be [20px]
 PASS CSS Transitions: property <border-image-width> from [10] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (-0.3) should be [20px] assert_equals: expected "20px " but got "10 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0) should be [20px] assert_equals: expected "20px " but got "10 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0.3) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (-0.3) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0.3) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0.5) should be [20px]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (0.6) should be [20px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (1) should be [20px]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20px] at (1.5) should be [20px]
 PASS CSS Animations: property <border-image-width> from [10] to [20px] at (-0.3) should be [10]
 PASS CSS Animations: property <border-image-width> from [10] to [20px] at (0) should be [10]
-FAIL CSS Animations: property <border-image-width> from [10] to [20px] at (0.3) should be [10] assert_equals: expected "10 " but got ""
-FAIL CSS Animations: property <border-image-width> from [10] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL CSS Animations: property <border-image-width> from [10] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS CSS Animations: property <border-image-width> from [10] to [20px] at (0.3) should be [10]
+PASS CSS Animations: property <border-image-width> from [10] to [20px] at (0.5) should be [20px]
+PASS CSS Animations: property <border-image-width> from [10] to [20px] at (0.6) should be [20px]
 PASS CSS Animations: property <border-image-width> from [10] to [20px] at (1) should be [20px]
 PASS CSS Animations: property <border-image-width> from [10] to [20px] at (1.5) should be [20px]
 PASS Web Animations: property <border-image-width> from [10] to [20px] at (-0.3) should be [10]
 PASS Web Animations: property <border-image-width> from [10] to [20px] at (0) should be [10]
-FAIL Web Animations: property <border-image-width> from [10] to [20px] at (0.3) should be [10] assert_equals: expected "10 " but got ""
-FAIL Web Animations: property <border-image-width> from [10] to [20px] at (0.5) should be [20px] assert_equals: expected "20px " but got ""
-FAIL Web Animations: property <border-image-width> from [10] to [20px] at (0.6) should be [20px] assert_equals: expected "20px " but got ""
+PASS Web Animations: property <border-image-width> from [10] to [20px] at (0.3) should be [10]
+PASS Web Animations: property <border-image-width> from [10] to [20px] at (0.5) should be [20px]
+PASS Web Animations: property <border-image-width> from [10] to [20px] at (0.6) should be [20px]
 PASS Web Animations: property <border-image-width> from [10] to [20px] at (1) should be [20px]
 PASS Web Animations: property <border-image-width> from [10] to [20px] at (1.5) should be [20px]
-FAIL CSS Transitions: property <border-image-width> from [10%] to [20] at (-0.3) should be [20] assert_equals: expected "20 " but got "10 % "
-FAIL CSS Transitions: property <border-image-width> from [10%] to [20] at (0) should be [20] assert_equals: expected "20 " but got "10 % "
-FAIL CSS Transitions: property <border-image-width> from [10%] to [20] at (0.3) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10%] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10%] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (-0.3) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (0) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (0.3) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (0.5) should be [20]
+PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (0.6) should be [20]
 PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (1) should be [20]
 PASS CSS Transitions: property <border-image-width> from [10%] to [20] at (1.5) should be [20]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (-0.3) should be [20] assert_equals: expected "20 " but got "10 % "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0) should be [20] assert_equals: expected "20 " but got "10 % "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0.3) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (-0.3) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0.3) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0.5) should be [20]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (0.6) should be [20]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (1) should be [20]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10%] to [20] at (1.5) should be [20]
 PASS CSS Animations: property <border-image-width> from [10%] to [20] at (-0.3) should be [10%]
 PASS CSS Animations: property <border-image-width> from [10%] to [20] at (0) should be [10%]
-FAIL CSS Animations: property <border-image-width> from [10%] to [20] at (0.3) should be [10%] assert_equals: expected "10 % " but got ""
-FAIL CSS Animations: property <border-image-width> from [10%] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL CSS Animations: property <border-image-width> from [10%] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS CSS Animations: property <border-image-width> from [10%] to [20] at (0.3) should be [10%]
+PASS CSS Animations: property <border-image-width> from [10%] to [20] at (0.5) should be [20]
+PASS CSS Animations: property <border-image-width> from [10%] to [20] at (0.6) should be [20]
 PASS CSS Animations: property <border-image-width> from [10%] to [20] at (1) should be [20]
 PASS CSS Animations: property <border-image-width> from [10%] to [20] at (1.5) should be [20]
 PASS Web Animations: property <border-image-width> from [10%] to [20] at (-0.3) should be [10%]
 PASS Web Animations: property <border-image-width> from [10%] to [20] at (0) should be [10%]
-FAIL Web Animations: property <border-image-width> from [10%] to [20] at (0.3) should be [10%] assert_equals: expected "10 % " but got ""
-FAIL Web Animations: property <border-image-width> from [10%] to [20] at (0.5) should be [20] assert_equals: expected "20 " but got ""
-FAIL Web Animations: property <border-image-width> from [10%] to [20] at (0.6) should be [20] assert_equals: expected "20 " but got ""
+PASS Web Animations: property <border-image-width> from [10%] to [20] at (0.3) should be [10%]
+PASS Web Animations: property <border-image-width> from [10%] to [20] at (0.5) should be [20]
+PASS Web Animations: property <border-image-width> from [10%] to [20] at (0.6) should be [20]
 PASS Web Animations: property <border-image-width> from [10%] to [20] at (1) should be [20]
 PASS Web Animations: property <border-image-width> from [10%] to [20] at (1.5) should be [20]
-FAIL CSS Transitions: property <border-image-width> from [10] to [20%] at (-0.3) should be [20%] assert_equals: expected "20 % " but got "10 "
-FAIL CSS Transitions: property <border-image-width> from [10] to [20%] at (0) should be [20%] assert_equals: expected "20 % " but got "10 "
-FAIL CSS Transitions: property <border-image-width> from [10] to [20%] at (0.3) should be [20%] assert_equals: expected "20 % " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10] to [20%] at (0.5) should be [20%] assert_equals: expected "20 % " but got ""
-FAIL CSS Transitions: property <border-image-width> from [10] to [20%] at (0.6) should be [20%] assert_equals: expected "20 % " but got ""
+PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (-0.3) should be [20%]
+PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (0) should be [20%]
+PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (0.3) should be [20%]
+PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (0.5) should be [20%]
+PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (0.6) should be [20%]
 PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (1) should be [20%]
 PASS CSS Transitions: property <border-image-width> from [10] to [20%] at (1.5) should be [20%]
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (-0.3) should be [20%] assert_equals: expected "20 % " but got "10 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0) should be [20%] assert_equals: expected "20 % " but got "10 "
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0.3) should be [20%] assert_equals: expected "20 % " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0.5) should be [20%] assert_equals: expected "20 % " but got ""
-FAIL CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0.6) should be [20%] assert_equals: expected "20 % " but got ""
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (-0.3) should be [20%]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0) should be [20%]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0.3) should be [20%]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0.5) should be [20%]
+PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (0.6) should be [20%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (1) should be [20%]
 PASS CSS Transitions with transition: all: property <border-image-width> from [10] to [20%] at (1.5) should be [20%]
 PASS CSS Animations: property <border-image-width> from [10] to [20%] at (-0.3) should be [10]
 PASS CSS Animations: property <border-image-width> from [10] to [20%] at (0) should be [10]
-FAIL CSS Animations: property <border-image-width> from [10] to [20%] at (0.3) should be [10] assert_equals: expected "10 " but got ""
-FAIL CSS Animations: property <border-image-width> from [10] to [20%] at (0.5) should be [20%] assert_equals: expected "20 % " but got ""
-FAIL CSS Animations: property <border-image-width> from [10] to [20%] at (0.6) should be [20%] assert_equals: expected "20 % " but got ""
+PASS CSS Animations: property <border-image-width> from [10] to [20%] at (0.3) should be [10]
+PASS CSS Animations: property <border-image-width> from [10] to [20%] at (0.5) should be [20%]
+PASS CSS Animations: property <border-image-width> from [10] to [20%] at (0.6) should be [20%]
 PASS CSS Animations: property <border-image-width> from [10] to [20%] at (1) should be [20%]
 PASS CSS Animations: property <border-image-width> from [10] to [20%] at (1.5) should be [20%]
 PASS Web Animations: property <border-image-width> from [10] to [20%] at (-0.3) should be [10]
 PASS Web Animations: property <border-image-width> from [10] to [20%] at (0) should be [10]
-FAIL Web Animations: property <border-image-width> from [10] to [20%] at (0.3) should be [10] assert_equals: expected "10 " but got ""
-FAIL Web Animations: property <border-image-width> from [10] to [20%] at (0.5) should be [20%] assert_equals: expected "20 % " but got ""
-FAIL Web Animations: property <border-image-width> from [10] to [20%] at (0.6) should be [20%] assert_equals: expected "20 % " but got ""
+PASS Web Animations: property <border-image-width> from [10] to [20%] at (0.3) should be [10]
+PASS Web Animations: property <border-image-width> from [10] to [20%] at (0.5) should be [20%]
+PASS Web Animations: property <border-image-width> from [10] to [20%] at (0.6) should be [20%]
 PASS Web Animations: property <border-image-width> from [10] to [20%] at (1) should be [20%]
 PASS Web Animations: property <border-image-width> from [10] to [20%] at (1.5) should be [20%]
 
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 3559070..9a9634b 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,28 @@
+2021-02-27  Antoine Quint  <graouts@webkit.org>
+
+        Improve blending of LengthBox values
+        https://bugs.webkit.org/show_bug.cgi?id=222512
+
+        Reviewed by Antti Koivisto.
+
+        Blending of LengthBox values used to be handle with a generic wrapper for Length-related types using
+        LengthVariantPropertyWrapper. However, to properly blend LengthBox values, we need some logic specific
+        to this value type.
+
+        First off, all CSS properties that we represent using a LengthBox disallow negative values, so we update
+        the blendFunc() implementation for LengthBox to pass in ValueRangeNonNegative to the Length blendFunc().
+
+        Then, we need a custom implementation of the canInterpolate() virtual function override so as to cater for
+        properties that support <length> and <number>, and those that support <length-percentage> and <number>,
+        namely border-image-width.
+
+        Finally, we support the case for discrete blending in the blend() virtual function override.
+
+        * animation/CSSPropertyAnimation.cpp:
+        (WebCore::blendFunc):
+        (WebCore::LengthBoxPropertyWrapper::LengthBoxPropertyWrapper):
+        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
+
 2021-02-27  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, reverting r273474 and r273479.
diff --git a/Source/WebCore/animation/CSSPropertyAnimation.cpp b/Source/WebCore/animation/CSSPropertyAnimation.cpp
index 42df060..92e97a0 100644
--- a/Source/WebCore/animation/CSSPropertyAnimation.cpp
+++ b/Source/WebCore/animation/CSSPropertyAnimation.cpp
@@ -385,10 +385,11 @@
 
 static inline LengthBox blendFunc(const CSSPropertyBlendingClient* anim, const LengthBox& from, const LengthBox& to, double progress)
 {
-    LengthBox result(blendFunc(anim, from.top(), to.top(), progress),
-                     blendFunc(anim, from.right(), to.right(), progress),
-                     blendFunc(anim, from.bottom(), to.bottom(), progress),
-                     blendFunc(anim, from.left(), to.left(), progress));
+    LengthBox result(blendFunc(anim, from.top(), to.top(), progress, ValueRangeNonNegative),
+                     blendFunc(anim, from.right(), to.right(), progress, ValueRangeNonNegative),
+                     blendFunc(anim, from.bottom(), to.bottom(), progress, ValueRangeNonNegative),
+                     blendFunc(anim, from.left(), to.left(), progress, ValueRangeNonNegative));
+
     return result;
 }
 
@@ -732,6 +733,55 @@
     void (RenderStyle::*m_setter)(T&&);
 };
 
+class LengthBoxPropertyWrapper : public PropertyWrapperGetter<const LengthBox&> {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    enum class IsLengthPercentage { Yes, No };
+    LengthBoxPropertyWrapper(CSSPropertyID prop, const LengthBox& (RenderStyle::*getter)() const, void (RenderStyle::*setter)(LengthBox&&), IsLengthPercentage isLengthPercentage = IsLengthPercentage::No)
+        : PropertyWrapperGetter<const LengthBox&>(prop, getter)
+        , m_setter(setter)
+        , m_isLengthPercentage(isLengthPercentage)
+    {
+    }
+
+    bool canInterpolate(const RenderStyle* a, const RenderStyle* b) const override
+    {
+        auto canInterpolateBetweenLengths = [&](const Length& a, const Length& b) -> bool {
+            if (a.type() == b.type() || a.isZero() || b.isZero())
+                return true;
+
+            // Some property allow for <length-percentage> and <number> values. We must allow animating
+            // between a <length> and a <percentage>, but exclude animating between a <number> and either
+            // a <length> or <percentage>. We can use Length::isRelative() to determine whether we are
+            // dealing with a <number> as opposed to a <length> or <percentage>.
+            if (m_isLengthPercentage == IsLengthPercentage::Yes)
+                return a.isRelative() == b.isRelative();
+
+            return false;
+        };
+
+        auto& aLengthBox = (a->*PropertyWrapperGetter<const LengthBox&>::m_getter)();
+        auto& bLengthBox = (b->*PropertyWrapperGetter<const LengthBox&>::m_getter)();
+        return canInterpolateBetweenLengths(aLengthBox.top(), bLengthBox.top())
+            && canInterpolateBetweenLengths(aLengthBox.right(), bLengthBox.right())
+            && canInterpolateBetweenLengths(aLengthBox.bottom(), bLengthBox.bottom())
+            && canInterpolateBetweenLengths(aLengthBox.left(), bLengthBox.left());
+    }
+
+    void blend(const CSSPropertyBlendingClient* anim, RenderStyle* dst, const RenderStyle* a, const RenderStyle* b, double progress) const override
+    {
+        if (!canInterpolate(a, b))
+            progress = progress < 0.5 ? 0 : 1;
+        (dst->*m_setter)(blendFunc(anim, (a->*PropertyWrapperGetter<const LengthBox&>::m_getter)(), (b->*PropertyWrapperGetter<const LengthBox&>::m_getter)(), progress));
+    }
+
+protected:
+    void (RenderStyle::*m_setter)(LengthBox&&);
+
+private:
+    IsLengthPercentage m_isLengthPercentage;
+};
+
 class PropertyWrapperClipPath : public RefCountedPropertyWrapper<ClipPathOperation> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
@@ -1793,9 +1843,9 @@
         new StyleImagePropertyWrapper(CSSPropertyWebkitMaskImage, &RenderStyle::maskImage, &RenderStyle::setMaskImage),
 
         new StyleImagePropertyWrapper(CSSPropertyBorderImageSource, &RenderStyle::borderImageSource, &RenderStyle::setBorderImageSource),
-        new LengthVariantPropertyWrapper<LengthBox>(CSSPropertyBorderImageSlice, &RenderStyle::borderImageSlices, &RenderStyle::setBorderImageSlices),
-        new LengthVariantPropertyWrapper<LengthBox>(CSSPropertyBorderImageWidth, &RenderStyle::borderImageWidth, &RenderStyle::setBorderImageWidth),
-        new LengthVariantPropertyWrapper<LengthBox>(CSSPropertyBorderImageOutset, &RenderStyle::borderImageOutset, &RenderStyle::setBorderImageOutset),
+        new LengthBoxPropertyWrapper(CSSPropertyBorderImageSlice, &RenderStyle::borderImageSlices, &RenderStyle::setBorderImageSlices),
+        new LengthBoxPropertyWrapper(CSSPropertyBorderImageWidth, &RenderStyle::borderImageWidth, &RenderStyle::setBorderImageWidth, LengthBoxPropertyWrapper::IsLengthPercentage::Yes),
+        new LengthBoxPropertyWrapper(CSSPropertyBorderImageOutset, &RenderStyle::borderImageOutset, &RenderStyle::setBorderImageOutset),
 
         new StyleImagePropertyWrapper(CSSPropertyWebkitMaskBoxImageSource, &RenderStyle::maskBoxImageSource, &RenderStyle::setMaskBoxImageSource),
         new PropertyWrapper<const NinePieceImage&>(CSSPropertyWebkitMaskBoxImage, &RenderStyle::maskBoxImage, &RenderStyle::setMaskBoxImage),
@@ -1840,7 +1890,7 @@
         new PropertyWrapper<Visibility>(CSSPropertyVisibility, &RenderStyle::visibility, &RenderStyle::setVisibility),
         new PropertyWrapper<float>(CSSPropertyZoom, &RenderStyle::zoom, &RenderStyle::setZoomWithoutReturnValue),
 
-        new LengthVariantPropertyWrapper<LengthBox>(CSSPropertyClip, &RenderStyle::clip, &RenderStyle::setClip),
+        new LengthBoxPropertyWrapper(CSSPropertyClip, &RenderStyle::clip, &RenderStyle::setClip),
 
         new PropertyWrapperAcceleratedOpacity(),
         new PropertyWrapperAcceleratedTransform(),