55 lines
2.2 KiB
JavaScript
55 lines
2.2 KiB
JavaScript
/**
|
|
* This test ensures that a page navigated to via the URL bar, containing a text fragment,
|
|
* scrolls correctly to the specified text fragment. The test simulates user actions by
|
|
* entering a URL in the URL bar and pressing Enter to navigate to a cross-origin URL.
|
|
*
|
|
* The steps are as follows:
|
|
* 1. Open a new tab with "about:blank".
|
|
* 2. Programmatically set the URL bar to a cross-origin URL containing a text fragment.
|
|
* 3. Simulate a click in the URL bar to focus it.
|
|
* 4. Simulate pressing the Enter key to navigate to the new URL.
|
|
* 5. Wait for the cross-origin page to load completely.
|
|
* 6. Verify that the page has scrolled to the specified text fragment.
|
|
*
|
|
* See Bug 1904773.
|
|
*/
|
|
add_task(async function test_scroll_to_text_fragment() {
|
|
// Initial URL to open the tab with (about:blank)
|
|
let initialUrl = "about:blank";
|
|
|
|
// Define the cross-origin URL with the text fragment
|
|
let crossOriginUrl = `https://example.org/browser/browser/base/content/test/scroll-to-text-fragment/scroll-to-text-fragment-from-browser-chrome-target.html#:~:text=This%20is%20the%20text%20fragment%20to%20scroll%20to.`;
|
|
|
|
await BrowserTestUtils.withNewTab(
|
|
{ gBrowser, url: initialUrl },
|
|
async function (browser) {
|
|
// Select the URL bar and set the new URL
|
|
gURLBar.focus();
|
|
gURLBar.value = crossOriginUrl;
|
|
|
|
// Synthesize a click in the URL bar to place the cursor in it
|
|
info("Synthesize a click in the URL bar...");
|
|
await BrowserTestUtils.synthesizeMouseAtCenter(
|
|
gURLBar.inputField,
|
|
{},
|
|
browser
|
|
);
|
|
|
|
// Synthesize pressing the Enter key to navigate to the cross-origin URL
|
|
info("Synthesize pressing the Enter key...");
|
|
EventUtils.synthesizeKey("VK_RETURN", {});
|
|
|
|
// Wait for the cross-origin page to load completely
|
|
info("Waiting for cross-origin page to load...");
|
|
await BrowserTestUtils.browserLoaded(browser, false);
|
|
info("Cross-origin page loaded.");
|
|
|
|
// Verify that the page has scrolled
|
|
let scrolled = await SpecialPowers.spawn(browser, [], () => {
|
|
return content.window.scrollY > 0;
|
|
});
|
|
|
|
ok(scrolled, "Page has scrolled down from the top.");
|
|
}
|
|
);
|
|
});
|