Status: PASS | Duration: 5ms | Subtests: 1/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-transforms/animation/rotate-transform-equivalent.html
<!doctype html> <html class="reftest-wait"> <meta charset="utf-8"> <title>Rotate transform equivalent</title> <link rel="match" href="rotate-transform-equivalent-ref.html"> <meta name="fuzzy" content="maxDifference=0-46;totalPixels=0-450"> <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm"> <script src="/common/reftest-wait.js"></script> <style> .block { border: 2px solid white; /* Avoid anti-aliasing artifacts */ height: 100px; width: 100px; position: absolute; left: 100px; top: 100px; } .rotation { background: red; } .overlay { background: green; } #rotateAdd { rotate: 1 0 0 45deg; } </style> <body> <div id="rotateAdd" class="block rotation"></div> <div id="rotateReplace" class="block rotation"></div> <div id="transform" class="block overlay"></div> <script> 'use strict'; async function waitForNextFrame() { return new Promise(resolve => { window.requestAnimationFrame(() => { resolve(); }); }); } async function createAnimation(elementName, keyframes) { const element = document.getElementById(elementName); const anim = element.animate(keyframes, 1000); anim.pause(); anim.currentTime = 500; return anim.ready; } onload = async function() { await waitForNextFrame(); await createAnimation('rotateAdd', [ {rotate: '1 0 0 45deg', composite: 'add'}, {rotate: '0 0 1 90deg'}]); await createAnimation('rotateReplace', [ {rotate: '1 0 0 90deg'}, {rotate: '0 0 1 90deg'}]); await createAnimation('transform', [ {transform: 'matrix3d(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1)'}, {transform: 'matrix(0, 1, -1, 0, 0, 0)'}]); await waitForNextFrame(); takeScreenshot(); }; </script> </body>
/css/css-transforms/animation/rotate-transform-equivalent-ref.html
<!doctype html> <html class="reftest-wait"> <meta charset="utf-8"> <title>Reference for rotate transform equivalent</title> <script src="/common/reftest-wait.js"></script> <style> .block { border: 2px solid white; /* Avoid anti-aliasing artifacts */ height: 100px; width: 100px; position: absolute; left: 100px; top: 100px; } .overlay { background: green; z-index: 2; } </style> <body> <div id="transform" class="block overlay"></div> <script> 'use strict'; async function waitForNextFrame() { return new Promise(resolve => { window.requestAnimationFrame(() => { resolve(); }); }); } async function createAnimation(elementName, keyframes) { const element = document.getElementById(elementName); const anim = element.animate(keyframes, 1000); anim.pause(); anim.currentTime = 500; return anim.ready; } onload = async function() { await waitForNextFrame(); await createAnimation('transform', [ {transform: 'matrix3d(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1)'}, {transform: 'matrix(0, 1, -1, 0, 0, 0)'}]); await waitForNextFrame(); takeScreenshot(); }; </script> </body>