browser_replace_state_during_navigation.js (1167B)
1 "use strict"; 2 3 const TEST_URI = 4 getRootDirectory(gTestPath).replace( 5 "chrome://mochitests/content", 6 "https://example.com" 7 ) + "dummy_page.html"; 8 const TEST_URI_2 = 9 getRootDirectory(gTestPath).replace( 10 "chrome://mochitests/content", 11 "https://example.com" 12 ) + "file_replace_state_during_navigation.html"; 13 14 add_setup(async function () { 15 await SpecialPowers.pushPrefEnv({ 16 set: [ 17 ["test.wait300msAfterTabSwitch", true], 18 ["browser.navigation.requireUserInteraction", true], 19 ], 20 }); 21 }); 22 23 add_task(async () => { 24 await BrowserTestUtils.withNewTab(TEST_URI, async browser => { 25 // Add user interaction to the first page. 26 await BrowserTestUtils.synthesizeMouseAtCenter("body", {}, browser); 27 28 // Follow link to the next page. 29 await followLink(TEST_URI_2); 30 31 // Navigate, causing a hashchange event to fire and call history.replaceState 32 let loaded = BrowserTestUtils.waitForLocationChange( 33 gBrowser, 34 TEST_URI_2 + "#1" 35 ); 36 await BrowserTestUtils.synthesizeMouseAtCenter("#link", {}, browser); 37 await loaded; 38 39 await assertMenulist([TEST_URI_2 + "#1", TEST_URI_2, TEST_URI]); 40 }); 41 });