blob: a3e84c73553a491468611bd3029a2e70abaf053e [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<style type="text/css">
.target {
position: relative;
height: 100px;
width: 100px;
background-color: red;
left: 0px;
margin-bottom: 10px;
animation: test 5s linear forwards;
animation-play-state: paused;
}
.running {
animation-play-state: running;
}
#animation1 {
animation-delay: -4.7s;
}
#animation2 {
animation-delay: 0s;
}
#animation3 {
animation-delay: 0.1s;
}
@keyframes test {
from { left: 100px; }
to { left: 600px; }
}
</style>
</head>
<body>
<div class="target" id="animation1"></div>
<div class="target" id="animation2"></div>
<div class="target" id="animation3"></div>
<script>
'use strict';
var t = async_test('An animation which is initially paused produces the correct output when first created, and can be unpaused.');
setTimeout(t.step_func(() => { // this set timeout should be ok in the test environment
assert_equals(getComputedStyle(animation1).left, '570px');
assert_equals(getComputedStyle(animation2).left, '100px');
assert_equals(getComputedStyle(animation3).left, '0px');
animation1.addEventListener('animationend', t.step_func_done(finished));
var targets = document.getElementsByClassName('target');
for (var i = 0; i < targets.length; ++i) {
targets[i].classList.add('running');
}
assert_equals(getComputedStyle(animation1).left, '570px');
assert_equals(getComputedStyle(animation2).left, '100px');
assert_equals(getComputedStyle(animation3).left, '0px');
}), 102); // arbitrary
function finished() {
var left1 = parseFloat(getComputedStyle(animation1).left);
var left2 = parseFloat(getComputedStyle(animation2).left);
var left3 = parseFloat(getComputedStyle(animation3).left);
assert_equals(left1, 600);
assert_greater_than(left1, left2);
assert_greater_than(left2, left3);
assert_greater_than_equal(left3, 120);
}
</script>
</body>
</html>