summaryrefslogtreecommitdiffstats
path: root/devtools/client/jsonview/test/browser_jsonview_expand_collapse.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/jsonview/test/browser_jsonview_expand_collapse.js')
-rw-r--r--devtools/client/jsonview/test/browser_jsonview_expand_collapse.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/devtools/client/jsonview/test/browser_jsonview_expand_collapse.js b/devtools/client/jsonview/test/browser_jsonview_expand_collapse.js
new file mode 100644
index 0000000000..6b681ff0cc
--- /dev/null
+++ b/devtools/client/jsonview/test/browser_jsonview_expand_collapse.js
@@ -0,0 +1,61 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+XPCOMUtils.defineLazyGetter(this, "jsonViewStrings", () => {
+ return Services.strings.createBundle(
+ "chrome://devtools/locale/jsonview.properties"
+ );
+});
+
+const TEST_JSON_URL = URL_ROOT + "array_json.json";
+const EXPAND_THRESHOLD = 100 * 1024;
+
+add_task(async function () {
+ info("Test expand/collapse small JSON started");
+
+ await addJsonViewTab(TEST_JSON_URL);
+
+ /* Initial sanity check */
+ const countBefore = await getElementCount(".treeRow");
+ is(countBefore, 6, "There must be six rows");
+
+ /* Test the "Collapse All" button */
+ let selector = ".jsonPanelBox .toolbar button.collapse";
+ await clickJsonNode(selector);
+ let countAfter = await getElementCount(".treeRow");
+ is(countAfter, 3, "There must be three rows");
+
+ /* Test the "Expand All" button */
+ selector = ".jsonPanelBox .toolbar button.expand";
+ is(
+ await getElementText(selector),
+ jsonViewStrings.GetStringFromName("jsonViewer.ExpandAll"),
+ "Expand button doesn't warn that the action will be slow"
+ );
+ await clickJsonNode(selector);
+ countAfter = await getElementCount(".treeRow");
+ is(countAfter, 6, "There must be six expanded rows");
+});
+
+add_task(async function () {
+ info("Test expand button for big JSON started");
+
+ const json = JSON.stringify({
+ data: Array(1e5)
+ .fill()
+ .map(x => "hoot"),
+ status: "ok",
+ });
+ ok(
+ json.length > EXPAND_THRESHOLD,
+ "The generated JSON must be larger than 100kB"
+ );
+ await addJsonViewTab("data:application/json," + json);
+ is(
+ await getElementText(".jsonPanelBox .toolbar button.expand"),
+ jsonViewStrings.GetStringFromName("jsonViewer.ExpandAllSlow"),
+ "Expand button warns that the action will be slow"
+ );
+});