<!doctype html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <body> <div style="height: 1000px; width: 1000px;"></div> <div id="frag"></div> <script> promise_test(async t => { // Wait for after the load event so that the navigation doesn't get converted // into a replace navigation. await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0)); await navigation.navigate("#frag").finished; assert_not_equals(window.scrollY, 0); let intercept_resolve; let navigate_event; navigation.onnavigate = e => { navigate_event = e; e.intercept({ handler: () => new Promise(r => intercept_resolve = r), scroll: "manual" }); }; let promises = navigation.navigate("#does-not-exist"); await promises.committed; assert_not_equals(window.scrollY, 0); navigate_event.scroll(); assert_not_equals(window.scrollY, 0); intercept_resolve(); await promises.finished; assert_not_equals(window.scrollY, 0); }, "scroll: scroll() should do nothing when the fragment does not exist"); </script> </body>