Bug 1424690 - Enhanced the browser_webconsole_console_group test; r=nchevobbe draft
authorabhinav <abhinav.koppula@gmail.com>
Fri, 15 Dec 2017 00:39:34 +0530
changeset 714122 d6f68715665d92511d33d0cd65faa60c547441ff
parent 714075 36f78343dc679be6f77a6ffcf73419df51d84606
child 744528 1ff0df2bf0b001d9e90cd4f92f08e4280f9b783a
push id93855
push userbmo:abhinav.koppula@gmail.com
push dateThu, 21 Dec 2017 19:04:00 +0000
reviewersnchevobbe
bugs1424690
milestone59.0a1
Bug 1424690 - Enhanced the browser_webconsole_console_group test; r=nchevobbe MozReview-Commit-ID: Efe5xb8sq7C
devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_console_group.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_console_group.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_console_group.js
@@ -34,26 +34,40 @@ add_task(async function () {
   ContentTask.spawn(gBrowser.selectedBrowser, null, function () {
     content.wrappedJSObject.doLog();
   });
 
   info("Test a group at root level");
   let node = await waitFor(() => findMessage(hud, "group-1"));
   testClass(node, "startGroup");
   testIndent(node, 0);
+  testGroupToggle({
+    node,
+    store,
+    shouldBeOpen: true,
+    visibleMessageIdsAfterExpand: ["1","2","3","4","6","8","9","12"],
+    visibleMessageIdsAfterCollapse: ["1","8","9","12"],
+  });
 
   info("Test a message in a 1 level deep group");
   node = await waitFor(() => findMessage(hud, "log-1"), undefined, 200);
   testClass(node, "log");
   testIndent(node, 1);
 
   info("Test a group in a 1 level deep group");
   node = await waitFor(() => findMessage(hud, "group-2"));
   testClass(node, "startGroup");
   testIndent(node, 1);
+  testGroupToggle({
+    node,
+    store,
+    shouldBeOpen: true,
+    visibleMessageIdsAfterExpand: ["1","2","3","4","6","8","9","12"],
+    visibleMessageIdsAfterCollapse: ["1","2","3","6","8","9","12"],
+  });
 
   info("Test a message in a 2 level deep group");
   node = await waitFor(() => findMessage(hud, "log-2"));
   testClass(node, "log");
   testIndent(node, 2);
 
   info("Test a message in a 1 level deep group, after closing a 2 level deep group");
   node = await waitFor(() => findMessage(hud, "log-3"));
@@ -64,16 +78,24 @@ add_task(async function () {
   node = await waitFor(() => findMessage(hud, "log-4"));
   testClass(node, "log");
   testIndent(node, 0);
 
   info("Test a collapsed group at root level");
   node = await waitFor(() => findMessage(hud, "group-3"));
   testClass(node, "startGroupCollapsed");
   testIndent(node, 0);
+  testGroupToggle({
+    node,
+    store,
+    shouldBeOpen: false,
+    visibleMessageIdsAfterExpand: ["1","2","3","4","6","8","9","10","12"],
+    visibleMessageIdsAfterCollapse: ["1","2","3","4","6","8","9","12"]
+  });
+
   info("Test a message at root level, after closing a collapsed group");
   node = await waitFor(() => findMessage(hud, "log-6"));
   testClass(node, "log");
   testIndent(node, 0);
   let nodes = hud.ui.outputNode.querySelectorAll(".message");
   is(nodes.length, 8, "expected number of messages are displayed");
 });
 
@@ -81,8 +103,32 @@ function testClass(node, className) {
   ok(node.classList.contains(className), `message has the expected "${className}" class`);
 }
 
 function testIndent(node, indent) {
   indent = `${indent * INDENT_WIDTH}px`;
   is(node.querySelector(".indent").style.width, indent,
     "message has the expected level of indentation");
 }
+
+function testGroupToggle({ node, store, shouldBeOpen,
+  visibleMessageIdsAfterExpand, visibleMessageIdsAfterCollapse }) {
+  let toggleArrow = node.querySelector(".theme-twisty");
+  const isOpen = node => node.classList.contains("open");
+  const assertVisibleMessageIds = (expanded) => {
+    let visibleMessageIds = store.getState().messages.visibleMessages;
+    expanded ? is(visibleMessageIds.toString(), visibleMessageIdsAfterExpand.toString()) :
+      is(visibleMessageIds.toString(), visibleMessageIdsAfterCollapse.toString());
+  }
+
+  is(isOpen(node), shouldBeOpen);
+  assertVisibleMessageIds(shouldBeOpen);
+
+  toggleArrow.click();
+  shouldBeOpen = !shouldBeOpen;
+  is(isOpen(node), shouldBeOpen);
+  assertVisibleMessageIds(shouldBeOpen);
+
+  toggleArrow.click();
+  shouldBeOpen = !shouldBeOpen;
+  is(isOpen(node), shouldBeOpen);
+  assertVisibleMessageIds(shouldBeOpen);
+}
\ No newline at end of file