summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js b/devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js
new file mode 100644
index 0000000000..6e64579269
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js
@@ -0,0 +1,53 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+// Test copy outer HTML from the keyboard/copy event
+
+const TEST_URL = URL_ROOT + "doc_inspector_outerhtml.html";
+
+add_task(async function () {
+ const { inspector } = await openInspectorForURL(TEST_URL);
+ const root = inspector.markup._elt;
+
+ info("Test copy outerHTML for COMMENT node");
+ const comment = getElementByType(inspector, Node.COMMENT_NODE);
+ await setSelectionNodeFront(comment, inspector);
+ await checkClipboard("<!-- Comment -->", root);
+
+ info("Test copy outerHTML for DOCTYPE node");
+ const doctype = getElementByType(inspector, Node.DOCUMENT_TYPE_NODE);
+ await setSelectionNodeFront(doctype, inspector);
+ await checkClipboard("<!DOCTYPE html>", root);
+
+ info("Test copy outerHTML for ELEMENT node");
+ await selectAndHighlightNode("div", inspector);
+ await checkClipboard("<div><p>Test copy OuterHTML</p></div>", root);
+});
+
+async function setSelectionNodeFront(node, inspector) {
+ const updated = inspector.once("inspector-updated");
+ inspector.selection.setNodeFront(node);
+ await updated;
+}
+
+async function checkClipboard(expectedText, node) {
+ try {
+ await waitForClipboardPromise(() => fireCopyEvent(node), expectedText);
+ ok(true, "Clipboard successfully filled with : " + expectedText);
+ } catch (e) {
+ ok(
+ false,
+ "Clipboard could not be filled with the expected text : " + expectedText
+ );
+ }
+}
+
+function getElementByType(inspector, type) {
+ for (const [node] of inspector.markup._containers) {
+ if (node.nodeType === type) {
+ return node;
+ }
+ }
+ return null;
+}