blob: 5eae773298232bdee9ea9e024e767bea3175bd82 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<style>
#container {
position: relative;
width: 400px;
height: 100px;
border: 1px solid black;
}
#box {
position: absolute;
left: 0px;
height: 100px;
width: 100px;
background-color: blue;
transition-duration: 1s;
transition-timing-function: linear;
}
</style>
</head>
<body>
<div id="container">
<div id="box">
</div>
</div>
<script>
'use strict';
// It may take a number of frames before the property updates.
// https://bugs.chromium.org/p/chromium/issues/detail?id=679981
function waitForProgress() {
var initialLeft = getComputedStyle(box).left;
return new Promise(resolve => {
function poll() {
var currentLeft = getComputedStyle(box).left;
if (currentLeft === initialLeft) {
requestAnimationFrame(poll);
} else {
resolve();
}
}
requestAnimationFrame(poll);
});
}
async_test(t => {
box.offsetTop; // Force style recalc
box.style.left = '300px';
box.style.opacity = 0.5;
var previousLeft;
waitForProgress().then(() => {
previousLeft = getComputedStyle(box).left;
box.style.left = '0px';
}).then(waitForProgress).then(t.step_func_done(() => {
var currentLeft = getComputedStyle(box).left;
assert_less_than(parseFloat(currentLeft), parseFloat(previousLeft));
}));
}, 'Box should start moving left after left style is reset');
</script>
</body>
</html>