blob: 5471c8d3ad06effa1c8f6f8d088ee8b95072d69c [file] [log] [blame]
<style>
body {
background-color: green;
}
div {
position: absolute;
top: 0;
height: 100px;
}
#test {
left: 0;
width: 100px;
background-color: red;
}
#reference {
left: -1px;
width: 102px;
background-color: green;
}
</style>
<div id="test"></div>
<div id="reference"></div>
<script src="../resources/ui-helper.js"></script>
<script>
(async () => {
if (window.testRunner)
testRunner.waitUntilDone();
const keyframes = { "transform": "translateX(600px)" };
const easing = "cubic-bezier(1,0,1,0)";
const duration = 10000;
// Create two animations, a test which will change easing and direction during playback and a reference
// which will use the test animation's changed playback throughout its entire duration. The two animations
// should be in sync and the animated elements overlap, ensuring no red is visible after the update.
const test = document.getElementById("test").animate(keyframes, { easing: "linear", duration });
document.getElementById("reference").animate(keyframes, { easing, duration }).reverse();
// Wait for the animations to be ready and to have updated once before the easing and the direction on the
// test animation to match the reference animation.
await Promise.all(document.getAnimations().map(animation => animation.ready));
await UIHelper.renderingUpdate();
test.effect.updateTiming({ easing, direction: "reverse" });
// Wait another frame and compare the rendering.
await UIHelper.renderingUpdate();
if (window.testRunner)
testRunner.notifyDone();
})();
</script>