summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js')
-rw-r--r--devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js b/devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js
new file mode 100644
index 000000000..df901f0a4
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js
@@ -0,0 +1,79 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+// Test that attribute items work in the context menu
+
+const TEST_URL = URL_ROOT + "doc_inspector_menu.html";
+
+add_task(function* () {
+ let { inspector, testActor } = yield openInspectorForURL(TEST_URL);
+ yield selectNode("#attributes", inspector);
+
+ yield testAddAttribute();
+ yield testEditAttribute();
+ yield testRemoveAttribute();
+
+ function* testAddAttribute() {
+ info("Triggering 'Add Attribute' and waiting for mutation to occur");
+ let addAttribute = getMenuItem("node-menu-add-attribute");
+ addAttribute.click();
+
+ EventUtils.synthesizeKey('class="u-hidden"', {});
+ let onMutation = inspector.once("markupmutation");
+ EventUtils.synthesizeKey("VK_RETURN", {});
+ yield onMutation;
+
+ let hasAttribute = testActor.hasNode("#attributes.u-hidden");
+ ok(hasAttribute, "attribute was successfully added");
+ }
+
+ function* testEditAttribute() {
+ info("Testing 'Edit Attribute' menu item");
+ let editAttribute = getMenuItem("node-menu-edit-attribute");
+
+ info("Triggering 'Edit Attribute' and waiting for mutation to occur");
+ inspector.nodeMenuTriggerInfo = {
+ type: "attribute",
+ name: "data-edit"
+ };
+ editAttribute.click();
+ EventUtils.synthesizeKey("data-edit='edited'", {});
+ let onMutation = inspector.once("markupmutation");
+ EventUtils.synthesizeKey("VK_RETURN", {});
+ yield onMutation;
+
+ let isAttributeChanged =
+ yield testActor.hasNode("#attributes[data-edit='edited']");
+ ok(isAttributeChanged, "attribute was successfully edited");
+ }
+
+ function* testRemoveAttribute() {
+ info("Testing 'Remove Attribute' menu item");
+ let removeAttribute = getMenuItem("node-menu-remove-attribute");
+
+ info("Triggering 'Remove Attribute' and waiting for mutation to occur");
+ inspector.nodeMenuTriggerInfo = {
+ type: "attribute",
+ name: "data-remove"
+ };
+ let onMutation = inspector.once("markupmutation");
+ removeAttribute.click();
+ yield onMutation;
+
+ let hasAttribute = yield testActor.hasNode("#attributes[data-remove]");
+ ok(!hasAttribute, "attribute was successfully removed");
+ }
+
+ function getMenuItem(id) {
+ let allMenuItems = openContextMenuAndGetAllItems(inspector, {
+ target: getContainerForSelector("#attributes", inspector).tagLine,
+ });
+ let menuItem = allMenuItems.find(i => i.id === id);
+ ok(menuItem, "Menu item '" + id + "' found");
+ // Close the menu so synthesizing future keys won't select menu items.
+ EventUtils.synthesizeKey("VK_ESCAPE", {});
+ return menuItem;
+ }
+});