Bug 1408922 - Rename and enable browser_webconsole_autocomplete_popup.js in the new console frontend; r=Honza. draft
authorNicolas Chevobbe <nchevobbe@mozilla.com>
Mon, 30 Oct 2017 09:46:57 +0100
changeset 688567 c5e4e0022f9fb9de354f5dbc9f74d6c45e27fed5
parent 687699 f436ce17387cfbdc434e65f6e6462a9570c1f1b4
child 738102 467c38e501953ee82883477f3247a64b1f673f5c
push id86786
push userbmo:nchevobbe@mozilla.com
push dateMon, 30 Oct 2017 08:47:39 +0000
reviewersHonza
bugs1408922
milestone58.0a1
Bug 1408922 - Rename and enable browser_webconsole_autocomplete_popup.js in the new console frontend; r=Honza. MozReview-Commit-ID: A8wZ3MCHgCt
devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
devtools/client/webconsole/new-console-output/test/mochitest/browser_jsterm_popup.js
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_autocomplete_popup.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -207,31 +207,30 @@ skip-if = true #	Bug 1403188
 [browser_jsterm_copy_command.js]
 [browser_jsterm_dollar.js]
 [browser_jsterm_history_persist.js]
 [browser_jsterm_inspect.js]
 [browser_jsterm_no_autocompletion_on_defined_variables.js]
 [browser_jsterm_no_input_and_tab_key_pressed.js]
 [browser_jsterm_no_input_change_and_tab_key_pressed.js]
 [browser_jsterm_popup_close_on_tab_switch.js]
+[browser_jsterm_popup.js]
 [browser_netmonitor_shows_reqs_in_webconsole.js]
 [browser_webconsole_allow_mixedcontent_securityerrors.js]
 tags = mcb
 skip-if = true #	Bug 1403452
 # old console skip-if = (os == 'win' && bits == 64) # Bug 1390001
 [browser_webconsole_autocomplete_and_selfxss.js]
 subsuite = clipboard
 skip-if = true #	Bug 1404850
 # old console skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_webconsole_autocomplete_crossdomain_iframe.js]
 skip-if = true # Bug 1408919
 [browser_webconsole_autocomplete_in_debugger_stackframe.js]
 skip-if = true # Bug 1408920
-[browser_webconsole_autocomplete_popup.js]
-skip-if = true # Bug 1408922
 [browser_webconsole_batching.js]
 [browser_webconsole_block_mixedcontent_securityerrors.js]
 tags = mcb
 skip-if = true #	Bug 1403899
 # old console skip-if = (os == 'win' && bits == 64) # Bug 1390001
 [browser_webconsole_cached_autocomplete.js]
 skip-if = true # Bug 1408924
 [browser_webconsole_cached_messages.js]
rename from devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_autocomplete_popup.js
rename to devtools/client/webconsole/new-console-output/test/mochitest/browser_jsterm_popup.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_autocomplete_popup.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_jsterm_popup.js
@@ -2,124 +2,109 @@
 /* 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/ */
 
 "use strict";
 
 // See Bug 585991.
 
-const TEST_URI = "data:text/html;charset=utf-8,<p>bug 585991 - autocomplete " +
-                 "popup test";
+const TEST_URI = "data:text/html;charset=utf-8,<p>bug 585991 - autocomplete popup test";
 
-add_task(function* () {
-  yield loadTab(TEST_URI);
-  let hud = yield openConsole();
-
-  yield consoleOpened(hud);
-});
-
-function consoleOpened(HUD) {
-  let deferred = defer();
+add_task(async function () {
+  const {jsterm} = await openNewTabAndConsole(TEST_URI);
+  const {
+    autocompletePopup: popup,
+    inputNode: input,
+  } = jsterm;
 
   let items = [
     {label: "item0", value: "value0"},
     {label: "item1", value: "value1"},
     {label: "item2", value: "value2"},
   ];
 
-  let popup = HUD.jsterm.autocompletePopup;
-  let input = HUD.jsterm.inputNode;
-
   ok(!popup.isOpen, "popup is not open");
   ok(!input.hasAttribute("aria-activedescendant"), "no aria-activedescendant");
 
-  popup.once("popup-opened", () => {
-    ok(popup.isOpen, "popup is open");
+  let onPopupOpen = popup.once("popup-opened");
+  popup.openPopup(input);
+  await onPopupOpen;
 
-    is(popup.itemCount, 0, "no items");
-    ok(!input.hasAttribute("aria-activedescendant"), "no aria-activedescendant");
-
-    popup.setItems(items);
+  ok(popup.isOpen, "popup is open");
+  is(popup.itemCount, 0, "no items");
+  ok(!input.hasAttribute("aria-activedescendant"), "no aria-activedescendant");
 
-    is(popup.itemCount, items.length, "items added");
+  popup.setItems(items);
 
-    let sameItems = popup.getItems();
-    is(sameItems.every(function (item, index) {
-      return item === items[index];
-    }), true, "getItems returns back the same items");
-
-    is(popup.selectedIndex, 2, "Index of the first item from bottom is selected.");
-    is(popup.selectedItem, items[2], "First item from bottom is selected");
-    checkActiveDescendant(popup, input);
+  is(popup.itemCount, items.length, "items added");
+  is(JSON.stringify(popup.getItems()), JSON.stringify(items),
+    "getItems returns back the same items");
+  is(popup.selectedIndex, 2, "Index of the first item from bottom is selected.");
+  is(popup.selectedItem, items[2], "First item from bottom is selected");
+  checkActiveDescendant(popup, input);
 
-    popup.selectedIndex = 1;
+  popup.selectedIndex = 1;
 
-    is(popup.selectedIndex, 1, "index 1 is selected");
-    is(popup.selectedItem, items[1], "item1 is selected");
-    checkActiveDescendant(popup, input);
+  is(popup.selectedIndex, 1, "index 1 is selected");
+  is(popup.selectedItem, items[1], "item1 is selected");
+  checkActiveDescendant(popup, input);
 
-    popup.selectedItem = items[2];
+  popup.selectedItem = items[2];
 
-    is(popup.selectedIndex, 2, "index 2 is selected");
-    is(popup.selectedItem, items[2], "item2 is selected");
-    checkActiveDescendant(popup, input);
-
-    is(popup.selectPreviousItem(), items[1], "selectPreviousItem() works");
+  is(popup.selectedIndex, 2, "index 2 is selected");
+  is(popup.selectedItem, items[2], "item2 is selected");
+  checkActiveDescendant(popup, input);
 
-    is(popup.selectedIndex, 1, "index 1 is selected");
-    is(popup.selectedItem, items[1], "item1 is selected");
-    checkActiveDescendant(popup, input);
+  is(popup.selectPreviousItem(), items[1], "selectPreviousItem() works");
 
-    is(popup.selectNextItem(), items[2], "selectNextItem() works");
+  is(popup.selectedIndex, 1, "index 1 is selected");
+  is(popup.selectedItem, items[1], "item1 is selected");
+  checkActiveDescendant(popup, input);
 
-    is(popup.selectedIndex, 2, "index 2 is selected");
-    is(popup.selectedItem, items[2], "item2 is selected");
-    checkActiveDescendant(popup, input);
+  is(popup.selectNextItem(), items[2], "selectNextItem() works");
 
-    ok(popup.selectNextItem(), "selectNextItem() works");
+  is(popup.selectedIndex, 2, "index 2 is selected");
+  is(popup.selectedItem, items[2], "item2 is selected");
+  checkActiveDescendant(popup, input);
+
+  ok(popup.selectNextItem(), "selectNextItem() works");
 
-    is(popup.selectedIndex, 0, "index 0 is selected");
-    is(popup.selectedItem, items[0], "item0 is selected");
-    checkActiveDescendant(popup, input);
+  is(popup.selectedIndex, 0, "index 0 is selected");
+  is(popup.selectedItem, items[0], "item0 is selected");
+  checkActiveDescendant(popup, input);
 
-    items.push({label: "label3", value: "value3"});
-    popup.appendItem(items[3]);
+  items.push({label: "label3", value: "value3"});
+  popup.appendItem(items[3]);
 
-    is(popup.itemCount, items.length, "item3 appended");
-
-    popup.selectedIndex = 3;
-    is(popup.selectedItem, items[3], "item3 is selected");
-    checkActiveDescendant(popup, input);
+  is(popup.itemCount, items.length, "item3 appended");
 
-    popup.removeItem(items[2]);
+  popup.selectedIndex = 3;
+  is(popup.selectedItem, items[3], "item3 is selected");
+  checkActiveDescendant(popup, input);
 
-    is(popup.selectedIndex, 2, "index2 is selected");
-    is(popup.selectedItem, items[3], "item3 is still selected");
-    checkActiveDescendant(popup, input);
-    is(popup.itemCount, items.length - 1, "item2 removed");
-
-    popup.clearItems();
-    is(popup.itemCount, 0, "items cleared");
-    ok(!input.hasAttribute("aria-activedescendant"), "no aria-activedescendant");
+  popup.removeItem(items[2]);
 
-    popup.once("popup-closed", () => {
-      deferred.resolve();
-    });
-    popup.hidePopup();
-  });
+  is(popup.selectedIndex, 2, "index2 is selected");
+  is(popup.selectedItem, items[3], "item3 is still selected");
+  checkActiveDescendant(popup, input);
+  is(popup.itemCount, items.length - 1, "item2 removed");
 
-  popup.openPopup(input);
+  popup.clearItems();
+  is(popup.itemCount, 0, "items cleared");
+  ok(!input.hasAttribute("aria-activedescendant"), "no aria-activedescendant");
 
-  return deferred.promise;
-}
+  const onPopupClose = popup.once("popup-closed");
+  popup.hidePopup();
+  await onPopupClose;
+});
 
 function checkActiveDescendant(popup, input) {
   let activeElement = input.ownerDocument.activeElement;
   let descendantId = activeElement.getAttribute("aria-activedescendant");
   let popupItem = popup._tooltip.panel.querySelector("#" + descendantId);
   let cloneItem = input.ownerDocument.querySelector("#" + descendantId);
 
   ok(popupItem, "Active descendant is found in the popup list");
   ok(cloneItem, "Active descendant is found in the list clone");
-  is(popupItem.innerHTML, cloneItem.innerHTML,
+  is(popupItem.outerHTML, cloneItem.outerHTML,
     "Cloned item has the same HTML as the original element");
 }