diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_webconsole_context_menu_copy_link_location.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_webconsole_context_menu_copy_link_location.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_webconsole_context_menu_copy_link_location.js b/devtools/client/webconsole/test/browser/browser_webconsole_context_menu_copy_link_location.js new file mode 100644 index 0000000000..229470edcd --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_webconsole_context_menu_copy_link_location.js @@ -0,0 +1,101 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test the Copy Link Location menu item of the webconsole is displayed for network +// messages and copies the expected URL. + +"use strict"; + +const TEST_URI = + "http://example.com/browser/devtools/client/webconsole/" + + "test/browser/test-console.html?_date=" + + Date.now(); +const CONTEXT_MENU_ID = "#console-menu-copy-url"; + +add_task(async function () { + // Enable net messages in the console for this test. + await pushPref("devtools.webconsole.filter.net", true); + + const hud = await openNewTabAndConsole(TEST_URI); + await clearOutput(hud); + + info("Test Copy URL menu item for text log"); + + info("Logging a text message in the content window"); + const onLogMessage = waitForMessageByType(hud, "stringLog", ".console-api"); + await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => { + content.wrappedJSObject.stringLog(); + }); + let message = await onLogMessage; + ok(message, "Text log found in the console"); + + info("Open and check the context menu for the logged text message"); + let menuPopup = await openContextMenu(hud, message.node); + + let copyURLItem = menuPopup.querySelector(CONTEXT_MENU_ID); + ok(!copyURLItem, "Copy URL menu item is hidden for a simple text message"); + + info("Open and check the context menu for the logged text message"); + const locationElement = message.node.querySelector(".frame-link-source"); + menuPopup = await openContextMenu(hud, locationElement); + copyURLItem = menuPopup.querySelector(CONTEXT_MENU_ID); + ok(copyURLItem, "The Copy Link Location entry is displayed"); + + info("Click on Copy URL menu item and wait for clipboard to be updated"); + await waitForClipboardPromise(() => copyURLItem.click(), TEST_URI); + ok(true, "Expected text was copied to the clipboard."); + + await hideContextMenu(hud); + await clearOutput(hud); + + info("Test Copy URL menu item for network log"); + + info("Reload the content window to produce a network log"); + const onNetworkMessage = waitForMessageByType( + hud, + "test-console.html", + ".network" + ); + await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => { + content.wrappedJSObject.location.reload(); + }); + + message = await onNetworkMessage; + ok(message, "Network log found in the console"); + + info("Open and check the context menu for the logged network message"); + menuPopup = await openContextMenu(hud, message.node); + copyURLItem = menuPopup.querySelector(CONTEXT_MENU_ID); + ok(copyURLItem, "Copy url menu item is available in context menu"); + + info("Click on Copy URL menu item and wait for clipboard to be updated"); + await waitForClipboardPromise(() => copyURLItem.click(), TEST_URI); + ok(true, "Expected text was copied to the clipboard."); + + await hideContextMenu(hud); + await clearOutput(hud); + + info("Test Copy URL menu item from [Learn More] link"); + + info("Generate a Reference Error in the JS Console"); + message = await executeAndWaitForErrorMessage( + hud, + "area51.aliens", + "ReferenceError:" + ); + ok(message, "Error log found in the console"); + + const learnMoreElement = message.node.querySelector(".learn-more-link"); + menuPopup = await openContextMenu(hud, learnMoreElement); + copyURLItem = menuPopup.querySelector(CONTEXT_MENU_ID); + ok(copyURLItem, "Copy url menu item is available in context menu"); + + info("Click on Copy URL menu item and wait for clipboard to be updated"); + await waitForClipboardPromise( + () => copyURLItem.click(), + learnMoreElement.href + ); + ok(true, "Expected text was copied to the clipboard."); + + await hideContextMenu(hud); +}); |