105 lines
2.9 KiB
JavaScript
105 lines
2.9 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
// Test endless scrolling when a lot of items are present in the storage
|
|
// inspector table.
|
|
"use strict";
|
|
|
|
const ITEMS_PER_PAGE = 50;
|
|
|
|
add_task(async function () {
|
|
await openTabAndSetupStorage(MAIN_URL_SECURED + "storage-overflow.html");
|
|
|
|
info("Run the tests with short DevTools");
|
|
await runTests();
|
|
|
|
info("Close Toolbox");
|
|
await gDevTools.closeToolboxForTab(gBrowser.selectedTab);
|
|
|
|
info("Set a toolbox height of 1000px");
|
|
await pushPref("devtools.toolbox.footer.height", 1000);
|
|
|
|
info("Open storage panel again");
|
|
await openStoragePanel();
|
|
|
|
info("Run the tests with tall DevTools");
|
|
await runTests(true);
|
|
});
|
|
|
|
async function runTests(tall) {
|
|
if (tall) {
|
|
// We need to zoom out and a tall storage panel in order to fit more than 50
|
|
// items in the table. We do this to ensure that we load enough content to
|
|
// show a scrollbar so that we can still use infinite scrolling.
|
|
zoom(0.5);
|
|
}
|
|
|
|
gUI.tree.expandAll();
|
|
await selectTreeItem(["localStorage", MAIN_ORIGIN_SECURED]);
|
|
|
|
if (tall) {
|
|
if (getCellLength() === ITEMS_PER_PAGE) {
|
|
await scrollToAddItems();
|
|
await waitForStorageData("item-100", "value-100");
|
|
}
|
|
|
|
if (getCellLength() === ITEMS_PER_PAGE * 2) {
|
|
await scrollToAddItems();
|
|
await waitForStorageData("item-150", "value-150");
|
|
}
|
|
|
|
if (getCellLength() === ITEMS_PER_PAGE * 3) {
|
|
await scrollToAddItems();
|
|
await waitForStorageData("item-151", "value-151");
|
|
}
|
|
} else {
|
|
checkCellLength(ITEMS_PER_PAGE);
|
|
await scrollToAddItems();
|
|
await waitForStorageData("item-100", "value-100");
|
|
|
|
checkCellLength(ITEMS_PER_PAGE * 2);
|
|
await scrollToAddItems();
|
|
await waitForStorageData("item-150", "value-150");
|
|
|
|
checkCellLength(ITEMS_PER_PAGE * 3);
|
|
await scrollToAddItems();
|
|
await waitForStorageData("item-151", "value-151");
|
|
}
|
|
|
|
is(getCellLength(), 151, "Storage table contains 151 items");
|
|
|
|
// Check that the columns are sorted in a human readable way (ascending).
|
|
checkCellValues("ASC");
|
|
|
|
// Sort descending.
|
|
clickColumnHeader("name");
|
|
|
|
// Check that the columns are sorted in a human readable way (descending).
|
|
checkCellValues("DEC");
|
|
|
|
if (tall) {
|
|
zoom(1);
|
|
}
|
|
}
|
|
|
|
function checkCellValues(order) {
|
|
const cells = [
|
|
...gPanelWindow.document.querySelectorAll("#name .table-widget-cell"),
|
|
];
|
|
cells.forEach(function (cell, index, arr) {
|
|
const i = order === "ASC" ? index + 1 : arr.length - index;
|
|
is(cell.value, `item-${i}`, `Cell value is "item-${i}" (${order}).`);
|
|
});
|
|
}
|
|
|
|
async function scrollToAddItems() {
|
|
info(`Scrolling to add ${ITEMS_PER_PAGE} items`);
|
|
await scroll();
|
|
}
|
|
|
|
function zoom(zoomValue) {
|
|
const bc = BrowsingContext.getFromWindow(gPanelWindow);
|
|
bc.fullZoom = zoomValue;
|
|
}
|