Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/**
* 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.
*
*/
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.");
}
);
});