<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Animations: adjust value of CSS variable used in keyframes</title>
<link rel="help" href="https://drafts.csswg.org/css-animations/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/testcommon.js"></script>
<style>

@keyframes anim {
    from { margin-left: var(--margin-left) }
    to   { margin-left: calc(var(--margin-left) * 2) }
}

</style>
<div id="log"></div>
<script>

test(t => {
  const div = addDiv(t);
  div.style.setProperty('--margin-left', '100px');

  div.style.animation = 'anim 1s linear';
  const animation = div.getAnimations()[0];
  animation.currentTime = 500;

  assert_equals(
    getComputedStyle(div).marginLeft,
    '150px',
    'Animated value before updating variable'
  );

  div.style.setProperty('--margin-left', '200px');

  assert_equals(
    getComputedStyle(div).marginLeft,
    '300px',
    'Animated value after updating variable'
  );
}, 'Animations reflect changes to variables on element');

test(t => {
  const parentDiv = addDiv(t);
  const div = addDiv(t);
  parentDiv.appendChild(div);
  parentDiv.style.setProperty('--margin-left', '100px');

  div.style.animation = 'anim 1s linear';
  const animation = div.getAnimations()[0];
  animation.currentTime = 500;

  assert_equals(
    getComputedStyle(div).marginLeft,
    '150px',
    'Animated value before updating variable'
  );

  parentDiv.style.setProperty('--margin-left', '200px');

  assert_equals(
    getComputedStyle(div).marginLeft,
    '300px',
    'Animated value after updating variable'
  );
}, 'Animations reflect changes to variables on parent element');


</script>
