/* 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/. */ // Basic test to assert that the storage tree and table corresponding to each // item in the storage tree is correctly displayed. "use strict"; // Entries that should be present in the tree for this test // Format for each entry in the array: // [ // ["path", "to", "tree", "item"], // - The path to the tree item to click formed by id of each item // ["key_value1", "key_value2", ...] // - The value of the first (unique) column for each row in the table // corresponding to the tree item selected. // ] // These entries are formed by the cookies, local storage, session storage and // indexedDB entries created in storage-listings.html, // storage-secured-iframe.html and storage-unsecured-iframe.html const storeItems = [ [ ["indexedDB", "https://test1.example.org"], ["idb1 (default)", "idb2 (default)"], ], [ ["indexedDB", "https://test1.example.org", "idb1 (default)"], ["obj1", "obj2"], ], [["indexedDB", "https://test1.example.org", "idb2 (default)"], []], [ ["indexedDB", "https://test1.example.org", "idb1 (default)", "obj1"], [1, 2, 3], ], [["indexedDB", "https://test1.example.org", "idb1 (default)", "obj2"], [1]], ]; /** * Test that the desired number of tree items are present */ function testTree() { const doc = gPanelWindow.document; for (const [item] of storeItems) { ok( doc.querySelector(`[data-id='${JSON.stringify(item)}']`), `Tree item ${item} should be present in the storage tree` ); } } /** * Test that correct table entries are shown for each of the tree item */ const testTables = async function () { const doc = gPanelWindow.document; // Expand all nodes so that the synthesized click event actually works gUI.tree.expandAll(); // Click the tree items and wait for the table to be updated for (const [item, ids] of storeItems) { await selectTreeItem(item); // Check whether correct number of items are present in the table is( doc.querySelectorAll( ".table-widget-column:first-of-type .table-widget-cell" ).length, ids.length, "Number of items in table is correct" ); // Check if all the desired items are present in the table for (const id of ids) { ok( doc.querySelector(".table-widget-cell[data-id='" + id + "']"), `Table item ${id} should be present` ); } } }; add_task(async function () { await openTabAndSetupStorage( MAIN_DOMAIN_SECURED + "storage-empty-objectstores.html" ); testTree(); await testTables(); });