Status: FAIL | Duration: 53ms | Subtests: 0/1 | Open test on wpt.live | wpt.fyi
/svg/animations/animateMotion-from-to-rotate-auto-no-motion.html
<!doctype html> <title><animateMotion> from/to animation with rotate=auto and no motion</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/SVGAnimationTestCase-testharness.js"></script> <svg> <rect x="-200" width="200" height="100" fill="blue"> <animateMotion id="anim" from="100,100" to="100,100" rotate="auto" fill="freeze" dur="4s"/> </rect> </svg> <script> const rootSVGElement = document.querySelector('svg'); function assert_bbox_position(element, x, y) { const bbox = element.getBBox(); const epsilon = 0.5; // A NaN angle would propagate through rotate() and make these NaN, so the // approx_equals assertions below double as a NaN guard. assert_approx_equals(bbox.x, x, epsilon, 'bbox x'); assert_approx_equals(bbox.y, y, epsilon, 'bbox y'); } // delta = to - from = (0, 0). The slope angle is atan2(0, 0), which must // resolve to 0deg (not NaN), so the element is translated to (100, 100) with // no rotation. This covers the fromPoint == toPoint (zero delta) case. function sample1() { assert_bbox_position(rootSVGElement, -100, 100); } function sample2() { assert_bbox_position(rootSVGElement, -100, 100); } function sample3() { assert_bbox_position(rootSVGElement, -100, 100); } smil_async_test(t => { const expectedValues = [ // [animationId, time, sampleCallback] ['anim', 0.0, sample1], ['anim', 2.0, sample2], ['anim', 4.0, sample3], ]; runAnimationTest(t, expectedValues); }); window.animationStartsImmediately = true; </script>