<html class="reftest-wait">
<title>WorkletAnimation should respect delay given in options</title>
<link rel="help" href="https://drafts.css-houdini.org/css-animationworklet/">
<meta name="assert" content="Worklet Animation should respect delay given in options">
<link rel="match" href="worklet-animation-start-delay-ref.html">

<script src="/web-animations/testcommon.js"></script>
<script src="/common/reftest-wait.js"></script>
<script src="common.js"></script>

<style>
  .box {
    width: 100px;
    height: 100px;
    background-color: green;
  }
</style>

<div id="t0" class="box"></div>
<div id="t1" class="box"></div>
<div id="out"></div>
<script id="visual_update"  type="text/worklet">
  registerAnimator("t0_animator", class {
    animate(currentTime, effect) {
      effect.localTime = 500;
    }
  });

  registerAnimator("t1_animator", class {
    animate(currentTime, effect) {
      effect.localTime = 5500;
    }
  });
</script>

<script>
  runInAnimationWorklet(
    document.getElementById('visual_update').textContent
  ).then(()=>{
    const keyframes = [
      {transform: 'translateX(0)' },
      {transform: 'translateX(200px)' }
    ];
    const options = {
      duration: 1000,
      delay: 5000,
    };

    const $t0 = document.getElementById('t0');
    const $t0_effect = new KeyframeEffect($t0, keyframes, options);
    const $t0_animation = new WorkletAnimation('t0_animator', $t0_effect);

    const $t1 = document.getElementById('t1');
    const $t1_effect = new KeyframeEffect($t1, keyframes, options);
    const $t1_animation = new WorkletAnimation('t1_animator', $t1_effect);

    $t0_animation.play();
    $t1_animation.play();

    waitForAsyncAnimationFrames(1).then(_ => {
      takeScreenshot();
    });
  });
</script>
