<!DOCTYPE html>
<title>beginElement() timing</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<svg width="100" height="20" style="border: grey 1px solid">
<rect width="1" height="20">
<animateMotion path="M0,0h100" dur="100ms"/>
</rect>
</svg>
<script>
async_test(t => {
const svg = document.querySelector('svg');
const motion = document.querySelector('animateMotion');
motion.addEventListener('endEvent', t.step_func(() => {
t.step_timeout(t.step_func(() => {
motion.beginElement();
let start = svg.getCurrentTime();
requestAnimationFrame(t.step_func_done(() => {
svg.pauseAnimations();
let elapsed = svg.getCurrentTime() - start;
let expected_pos = Math.min(elapsed * 1000, 100);
let actual_pos = motion.parentElement.getCTM().e;
assert_approx_equals(actual_pos, expected_pos, 2, `position after ${elapsed}`);
}));
}), 50);
}), { once: true });
});
</script>