gecko-dev/devtools/client/jsonview/test/browser_jsonview_expand_col...

62 строки
1.8 KiB
JavaScript

/* 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"
);
});