Bug 1437802 - Create selectNodeText(node) in new web console test head.js r?nchevobbe
MozReview-Commit-ID: LlgLPe2SMsO
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy.js
@@ -1,34 +1,32 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
+/* import-globals-from head.js */
+
"use strict";
// Test copy to clipboard on the console output. See Bug 587617.
const TEST_URI = "data:text/html,Test copy to clipboard on the console output";
add_task(async function () {
let hud = await openNewTabAndConsole(TEST_URI);
const smokeMessage = "Hello world!";
let onMessage = waitForMessage(hud, smokeMessage);
ContentTask.spawn(gBrowser.selectedBrowser, smokeMessage, function (msg) {
content.wrappedJSObject.console.log(msg);
});
const {node} = await onMessage;
ok(true, "Message was logged");
- const selection = node.ownerDocument.getSelection();
- const range = document.createRange();
- range.selectNodeContents(node);
- selection.removeAllRanges();
- selection.addRange(range);
+ let selection = selectNode(hud, node);
const selectionString = selection.toString().trim();
is(selectionString, smokeMessage, `selection has expected "${smokeMessage}" value`);
await waitForClipboardPromise(
() => {
// The focus is on the JsTerm, so we need to blur it for the copy comand to work.
node.ownerDocument.activeElement.blur();
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy_newlines.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy_newlines.js
@@ -1,13 +1,15 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
+/* import-globals-from head.js */
+
"use strict";
// Test that multiple messages are copied into the clipboard and that they are
// separated by new lines. See bug 916997.
const TEST_URI = "data:text/html,<meta charset=utf8>" +
"Test copy multiple messages to clipboard";
add_task(async function () {
@@ -19,21 +21,17 @@ add_task(async function () {
ContentTask.spawn(gBrowser.selectedBrowser, messages, msgs => {
msgs.forEach(msg => content.wrappedJSObject.console.log(msg));
});
const {node} = await onMessage;
ok(node, "Messages were logged");
// Select the whole output.
const output = node.closest(".webconsole-output");
- const selection = node.ownerDocument.getSelection();
- const range = document.createRange();
- range.selectNodeContents(output);
- selection.removeAllRanges();
- selection.addRange(range);
+ selectNode(hud, output);
info("Wait for the clipboard to contain the text corresponding to all the messages");
await waitForClipboardPromise(
() => {
// The focus is on the JsTerm, so we need to blur it for the copy comand to work.
output.ownerDocument.activeElement.blur();
goDoCommand("cmd_copy");
},
--- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js
@@ -545,8 +545,23 @@ async function openMessageInNetmonitor(t
await waitUntil(() => {
const selected = getSelectedRequest(store.getState());
return selected && selected.url === url;
});
ok(true, "The attached url is correct.");
}
+
+function selectNode(hud, node) {
+ let outputContainer = hud.ui.outputNode.querySelector(".webconsole-output");
+
+ // We must first blur the input or else we can't select anything.
+ outputContainer.ownerDocument.activeElement.blur();
+
+ let selection = outputContainer.ownerDocument.getSelection();
+ let range = document.createRange();
+ range.selectNodeContents(node);
+ selection.removeAllRanges();
+ selection.addRange(range);
+
+ return selection;
+}