|  | <html class="reftest-wait"> | 
|  | <title>Animation effect delays should be accounted for when using a progress based timeline</title> | 
|  | <link rel="help" href="https://drafts.csswg.org/scroll-animations/"> | 
|  | <meta name="assert" content="Effect delay should be accounted for by progress based animations"> | 
|  | <link rel="match" href="progress-based-effect-delay-ref.html"> | 
|  |  | 
|  | <script src="/web-animations/testcommon.js"></script> | 
|  | <script src="/common/reftest-wait.js"></script> | 
|  |  | 
|  | <style> | 
|  | #box { | 
|  | width: 100px; | 
|  | height: 100px; | 
|  | background-color: green; | 
|  | } | 
|  |  | 
|  | #covered { | 
|  | width: 100px; | 
|  | height: 100px; | 
|  | background-color: red; | 
|  | } | 
|  |  | 
|  | #scroller { | 
|  | overflow: auto; | 
|  | height: 100px; | 
|  | width: 100px; | 
|  | will-change: transform; /* force compositing */ | 
|  | } | 
|  |  | 
|  | #contents { | 
|  | height: 1000px; | 
|  | width: 100%; | 
|  | } | 
|  | </style> | 
|  |  | 
|  | <div id="box"></div> | 
|  | <div id="covered"></div> | 
|  | <div id="scroller"> | 
|  | <div id="contents"><p>Scrolling Contents</p></div> | 
|  | </div> | 
|  | <script> | 
|  | const box = document.getElementById('box'); | 
|  | const effect = new KeyframeEffect(box, | 
|  | [ | 
|  | { transform: 'translateY(0)', opacity: 1}, | 
|  | { transform: 'translateY(200px)', opacity: 0} | 
|  | ], { | 
|  | delay: 1000, | 
|  | duration: 1000 | 
|  | } | 
|  | ); | 
|  |  | 
|  | const scroller = document.getElementById('scroller'); | 
|  | const timeline = new ScrollTimeline( | 
|  | { source: scroller, orientation: 'block' }); | 
|  | const animation = new Animation(effect, timeline); | 
|  |  | 
|  | animation.play(); | 
|  |  | 
|  | animation.ready.then(() => { | 
|  | // Move the scroller to the halfway point. | 
|  | const maxScroll = scroller.scrollHeight - scroller.clientHeight; | 
|  | scroller.scrollTop = 0.75 * maxScroll; | 
|  |  | 
|  | waitForAnimationFrames(2).then(_ => { | 
|  | takeScreenshot(); | 
|  | }); | 
|  | }); | 
|  | </script> |