diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_webconsole_network_message_ctrl_click.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_webconsole_network_message_ctrl_click.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_webconsole_network_message_ctrl_click.js b/devtools/client/webconsole/test/browser/browser_webconsole_network_message_ctrl_click.js new file mode 100644 index 0000000000..9941ac6a21 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_webconsole_network_message_ctrl_click.js @@ -0,0 +1,68 @@ +// Test that URL opens in a new tab when click while +// pressing CTR (or CMD in MacOS) as expected. + +"use strict"; + +const TEST_URI = + "https://example.com/browser/devtools/client/webconsole/" + + "test/browser/test-console.html"; + +add_task(async function () { + // Enable net messages in the console for this test. + await pushPref("devtools.webconsole.filter.net", true); + const isMacOS = Services.appinfo.OS === "Darwin"; + + // We open the console + const hud = await openNewTabAndConsole(TEST_URI); + + info("Reload the content window to produce a network log"); + await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => { + content.wrappedJSObject.location.reload(); + }); + const message = await waitFor(() => + findMessageByType(hud, "test-console.html", ".network") + ); + ok(message, "Network log found in the console"); + + const currentTab = gBrowser.selectedTab; + const tabLoaded = listenToTabLoad(); + + info("Cmd/Ctrl click on the message"); + const urlObject = message.querySelector(".url"); + + EventUtils.sendMouseEvent( + { + type: "click", + [isMacOS ? "metaKey" : "ctrlKey"]: true, + }, + urlObject, + hud.ui.window + ); + + info("Opening the URL of the message on a new tab"); + const newTab = await tabLoaded; + const newTabHref = newTab.linkedBrowser.currentURI.spec; + + is(newTabHref, TEST_URI, "Tab was opened with the expected URL"); + info("Remove the new tab and select the previous tab back"); + gBrowser.removeTab(newTab); + gBrowser.selectedTab = currentTab; +}); + +/** + * Simple helper to wrap a tab load listener in a promise. + */ +function listenToTabLoad() { + return new Promise(resolve => { + gBrowser.tabContainer.addEventListener( + "TabOpen", + function (evt) { + const newTab = evt.target; + BrowserTestUtils.browserLoaded(newTab.linkedBrowser).then(() => + resolve(newTab) + ); + }, + { capture: true, once: true } + ); + }); +} |