"use strict";

const TEST_URI =
  getRootDirectory(gTestPath).replace(
    "chrome://mochitests/content",
    "https://example.com"
  ) + "file_replace_state_during_navigation.html";

add_setup(async function () {
  await SpecialPowers.pushPrefEnv({
    set: [
      ["test.wait300msAfterTabSwitch", true],
      ["browser.navigation.requireUserInteraction", true],
    ],
  });
});

add_task(async () => {
  await BrowserTestUtils.withNewTab(TEST_URI, async browser => {
    // Add user interaction to the first page.
    await BrowserTestUtils.synthesizeMouseAtCenter("body", {}, browser);

    // Navigate, causing a hashchange event to fire and call history.replaceState
    let loaded = BrowserTestUtils.waitForLocationChange(
      gBrowser,
      TEST_URI + "#1"
    );
    await BrowserTestUtils.synthesizeMouseAtCenter("#link", {}, browser);
    await loaded;

    await assertMenulist([TEST_URI + "#1", TEST_URI]);
  });
});
