Status: PASS | Duration: 7ms | Subtests: 1/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-view-transitions/reset-state-after-scrolled-view-transition.html
<!DOCTYPE html> <html class="reftest-wait"> <head> <title>Finishing a View Transition on a scrolled page should properly reset state</title> <link rel="author" title="Tim Nguyen" href="https://github.com/nt1m"> <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="match" href="reset-state-after-scrolled-view-transition-ref.html"> <style> html { background: lightblue; } body { background-color: lightgreen; } ::view-transition-group(*) { animation-duration: 2s; } </style> </head> <body> <p>Start</p> <div id="block" style="height: 150vh"></div> <p>End</p> <script> function scrollBy(y) { return new Promise(resolve => { addEventListener("scroll", () => { requestAnimationFrame(() => { requestAnimationFrame(resolve); }); }, { once: true, capture: true }); document.documentElement.scrollBy({ top: y, behavior: "instant" }); }); } addEventListener("load", async () => { await scrollBy(document.documentElement.scrollHeight / 2); const transition = document.startViewTransition(() => { block.style.height = '200vh' }); await transition.ready; scrollBy(document.documentElement.scrollHeight / 2); await transition.finished; document.documentElement.classList.remove("reftest-wait"); }); </script> </body> </html>
/css/css-view-transitions/reset-state-after-scrolled-view-transition-ref.html
<!DOCTYPE html> <html class="reftest-wait"> <head> <title>Reference: Finishing a View Transition on a scrolled page should properly reset state</title> <style> html { background: lightblue; } body { background-color: lightgreen; } </style> </head> <body> <p>Start</p> <div style="height: 200vh"></div> <p>End</p> <script> function scrollBy(y) { return new Promise(resolve => { addEventListener("scroll", () => { requestAnimationFrame(() => { requestAnimationFrame(resolve); }); }, { once: true, capture: true }); document.documentElement.scrollBy({ top: y, behavior: "instant" }); }); } addEventListener("load", async () => { await scrollBy(document.documentElement.scrollHeight); document.documentElement.classList.remove("reftest-wait"); }); </script> </body> </html>