diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_jsterm_copy_command.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_jsterm_copy_command.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_jsterm_copy_command.js b/devtools/client/webconsole/test/browser/browser_jsterm_copy_command.js new file mode 100644 index 0000000000..5e8b684c41 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_jsterm_copy_command.js @@ -0,0 +1,70 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Tests that the `copy` console helper works as intended. + +"use strict"; + +const text = + "Lorem ipsum dolor sit amet, consectetur adipisicing " + + "elit, sed do eiusmod tempor incididunt ut labore et dolore magna " + + "aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco " + + "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure " + + "dolor in reprehenderit in voluptate velit esse cillum dolore eu " + + "fugiat nulla pariatur. Excepteur sint occaecat cupidatat non " + + "proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + + new Date(); + +const id = "select-me"; +const TEST_URI = `data:text/html;charset=utf-8,<!DOCTYPE html> +<body> + <div> + <h1>Testing copy command</h1> + <p>This is some example text</p> + <p id="${id}">${text}</p> + </div> + <div><p></p></div> +</body>`; + +add_task(async function () { + const hud = await openNewTabAndConsole(TEST_URI); + const random = Math.random(); + const string = "Text: " + random; + const obj = { a: 1, b: "foo", c: random }; + + await testCopy(hud, random, random.toString()); + await testCopy(hud, JSON.stringify(string), string); + await testCopy(hud, obj.toSource(), JSON.stringify(obj, null, " ")); + + const outerHTML = await SpecialPowers.spawn( + gBrowser.selectedBrowser, + [id], + function (elementId) { + return content.document.getElementById(elementId).outerHTML; + } + ); + await testCopy(hud, `$("#${id}")`, outerHTML); +}); + +add_task(async function () { + const hud = await openNewTabAndConsole(TEST_URI); + await executeAndWaitForErrorMessage( + hud, + "var a = {}; a.b = a; copy(a);", + "`copy` command failed, object can’t be stringified: TypeError: cyclic object value" + ); +}); + +function testCopy(hud, stringToCopy, expectedResult) { + return waitForClipboardPromise(async () => { + info(`Attempting to copy: "${stringToCopy}"`); + const command = `copy(${stringToCopy})`; + info(`Executing command: "${command}"`); + await executeAndWaitForMessageByType( + hud, + command, + "String was copied to clipboard", + ".console-api" + ); + }, expectedResult); +} |