LibWeb: Normalize rotate3d() axis vector when computing transform matrix

This commit is contained in:
Tim Ledbetter
2026-01-13 10:36:56 +00:00
committed by Jelle Raaijmakers
parent 668d3afde0
commit 03f262f03d
Notes: github-actions[bot] 2026-01-13 11:41:53 +00:00
3 changed files with 62 additions and 58 deletions

View File

@@ -2,8 +2,7 @@ Harness status: OK
Found 76 tests
72 Pass
4 Fail
76 Pass
Pass CSS Transitions: property <transform> from [none] to [none] at (0.25) should be [none]
Pass CSS Transitions with transition: all: property <transform> from [none] to [none] at (0.25) should be [none]
Pass CSS Animations: property <transform> from [none] to [none] at (0.25) should be [none]
@@ -40,10 +39,10 @@ Pass CSS Transitions: property <transform> from [rotateX(90deg) translateX(100px
Pass CSS Transitions with transition: all: property <transform> from [rotateX(90deg) translateX(100px)] to [rotateY(0deg) translateY(200px)] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)]
Pass CSS Animations: property <transform> from [rotateX(90deg) translateX(100px)] to [rotateY(0deg) translateY(200px)] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)]
Pass Web Animations: property <transform> from [rotateX(90deg) translateX(100px)] to [rotateY(0deg) translateY(200px)] at (0.25) should be [rotateX(67.5deg) translate(75px, 50px)]
Fail CSS Transitions: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Fail CSS Animations: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Fail Web Animations: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 1, -60deg) translateX(100px)] to [rotate3d(2, 2, 2, 60deg) translateY(200px)] at (0.25) should be [rotate3d(1, 1, 1, -30deg) translate(75px, 50px)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)] to [rotate3d(0, 1, 0, -720deg) translateY(200px)] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)] to [rotate3d(0, 1, 0, -720deg) translateY(200px)] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)]
Pass CSS Animations: property <transform> from [rotate3d(1, 0, 0, 360deg) translateX(100px)] to [rotate3d(0, 1, 0, -720deg) translateY(200px)] at (0.25) should be [rotate3d(0, 0, 1, 0deg) translate(75px, 50px)]

View File

@@ -2,8 +2,8 @@ Harness status: OK
Found 448 tests
296 Pass
152 Fail
344 Pass
104 Fail
Pass CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)]
Pass CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0) should be [perspective(400px)]
Pass CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)]
@@ -260,54 +260,54 @@ Fail Web Animations: property <transform> from [rotateY(900deg)] to [rotateZ(0de
Fail Web Animations: property <transform> from [rotateY(900deg)] to [rotateZ(0deg)] at (0.75) should be [rotateY(225deg)]
Pass Web Animations: property <transform> from [rotateY(900deg)] to [rotateZ(0deg)] at (1) should be [rotateY(0deg)]
Pass Web Animations: property <transform> from [rotateY(900deg)] to [rotateZ(0deg)] at (2) should be [rotateY(-900deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (-1) should be [rotate3d(7, 8, 9, -60deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0) should be [rotate3d(7, 8, 9, 100deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.25) should be [rotate3d(7, 8, 9, 140deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (0.75) should be [rotate3d(7, 8, 9, 220deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (1) should be [rotate3d(7, 8, 9, 260deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 100deg)] to [rotate3d(7, 8, 9, 260deg)] at (2) should be [rotate3d(7, 8, 9, 420deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Fail CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Pass CSS Transitions: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Fail CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Pass CSS Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (-1) should be [rotate3d(7, 8, 9, -450deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0) should be [rotate3d(7, 8, 9, 0deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.25) should be [rotate3d(7, 8, 9, 112.5deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (0.75) should be [rotate3d(7, 8, 9, 337.5deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Fail Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (1) should be [rotate3d(7, 8, 9, 450deg)]
Pass Web Animations: property <transform> from [rotate3d(7, 8, 9, 0deg)] to [rotate3d(7, 8, 9, 450deg)] at (2) should be [rotate3d(7, 8, 9, 900deg)]
Pass CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 1, 0, 450deg)] at (-1) should be [rotate3d(0, 1, 0, -450deg)]
Pass CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 1, 0, 450deg)] at (0) should be [rotate3d(0, 1, 0, 0deg)]
Fail CSS Transitions: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 1, 0, 450deg)] at (0.25) should be [rotate3d(0, 1, 0, 112.5deg)]
@@ -356,29 +356,29 @@ Fail Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rot
Fail Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 2, 0, 450deg)] at (0.75) should be [rotate3d(0, 1, 0, 337.5deg)]
Pass Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 2, 0, 450deg)] at (1) should be [rotate3d(0, 1, 0, 450deg)]
Fail Web Animations: property <transform> from [rotate3d(0, 1, 0, 0deg)] to [rotate3d(0, 2, 0, 450deg)] at (2) should be [rotate3d(0, 1, 0, 900deg)]
Fail CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Fail CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)]
Fail CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass CSS Transitions: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)]
Fail CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass CSS Transitions with transition: all: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)]
Fail CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Fail CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)]
Fail CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass CSS Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)]
Fail Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Fail Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (-1) should be [rotate3d(0.41, -0.41, -0.82, 120deg)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0) should be [rotate3d(1, 1, 0, 90deg)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.25) should be [rotate3d(0.524083, 0.804261, 0.280178, 106.91deg)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (0.75) should be [rotate3d(0.163027, 0.774382, 0.611354, 153.99deg)]
Fail Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (1) should be [rotate3d(0, 1, 1, 180deg)]
Pass Web Animations: property <transform> from [rotate3d(1, 1, 0, 90deg)] to [rotate3d(0, 1, 1, 180deg)] at (2) should be [rotate3d(0.71, 0, -0.71, 90deg)]
Pass CSS Transitions: property <transform> from [none] to [rotate(90deg)] at (-1) should be [rotate(-90deg)]
Pass CSS Transitions: property <transform> from [none] to [rotate(90deg)] at (0) should be [rotate(0deg)]