diff options
Diffstat (limited to 'devtools/client/storage/test/browser_storage_search.js')
-rw-r--r-- | devtools/client/storage/test/browser_storage_search.js | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/devtools/client/storage/test/browser_storage_search.js b/devtools/client/storage/test/browser_storage_search.js new file mode 100644 index 0000000000..1f7c8a5c06 --- /dev/null +++ b/devtools/client/storage/test/browser_storage_search.js @@ -0,0 +1,140 @@ +// Tests the filter search box in the storage inspector +"use strict"; + +add_task(async function () { + await openTabAndSetupStorage(MAIN_DOMAIN_SECURED + "storage-search.html"); + + gUI.tree.expandAll(); + await selectTreeItem(["cookies", "https://test1.example.org"]); + + showColumn("expires", false); + showColumn("host", false); + showColumn("isHttpOnly", false); + showColumn("lastAccessed", false); + showColumn("path", false); + + // Results: 0=hidden, 1=visible + const testcases = [ + // Test that search isn't case-sensitive + { + value: "FoO", + results: [0, 0, 1, 1, 0, 1, 0], + }, + { + value: "OR", + results: [0, 1, 0, 0, 0, 1, 0], + }, + { + value: "aNImAl", + results: [0, 1, 0, 0, 0, 0, 0], + }, + // Test numbers + { + value: "01", + results: [1, 0, 0, 0, 0, 0, 1], + }, + { + value: "2016", + results: [0, 0, 0, 0, 0, 0, 1], + }, + { + value: "56789", + results: [1, 0, 0, 0, 0, 0, 0], + }, + // Test filtering by value + { + value: "horse", + results: [0, 1, 0, 0, 0, 0, 0], + }, + { + value: "$$$", + results: [0, 0, 0, 0, 1, 0, 0], + }, + { + value: "bar", + results: [0, 0, 1, 1, 0, 0, 0], + }, + // Test input with whitespace + { + value: "energy b", + results: [0, 0, 1, 0, 0, 0, 0], + }, + // Test no input at all + { + value: "", + results: [1, 1, 1, 1, 1, 1, 1], + }, + // Test input that matches nothing + { + value: "input that matches nothing", + results: [0, 0, 0, 0, 0, 0, 0], + }, + ]; + + const testcasesAfterHiding = [ + // Test that search isn't case-sensitive + { + value: "OR", + results: [0, 0, 0, 0, 0, 1, 0], + }, + { + value: "01", + results: [1, 0, 0, 0, 0, 0, 0], + }, + { + value: "2016", + results: [0, 0, 0, 0, 0, 0, 0], + }, + { + value: "56789", + results: [0, 0, 0, 0, 0, 0, 0], + }, + // Test filtering by value + { + value: "horse", + results: [0, 0, 0, 0, 0, 0, 0], + }, + { + value: "$$$", + results: [0, 0, 0, 0, 0, 0, 0], + }, + { + value: "bar", + results: [0, 0, 0, 0, 0, 0, 0], + }, + // Test input with whitespace + { + value: "energy b", + results: [0, 0, 0, 0, 0, 0, 0], + }, + ]; + + runTests(testcases); + showColumn("value", false); + runTests(testcasesAfterHiding); +}); + +function runTests(testcases) { + const $$ = sel => gPanelWindow.document.querySelectorAll(sel); + const names = $$("#name .table-widget-cell"); + const rows = $$("#value .table-widget-cell"); + for (const testcase of testcases) { + const { value, results } = testcase; + + info(`Testing input: ${value}`); + + gUI.searchBox.value = value; + gUI.filterItems(); + + for (let i = 0; i < rows.length; i++) { + info(`Testing row ${i} for "${value}"`); + info(`key: ${names[i].value}, value: ${rows[i].value}`); + const state = results[i] ? "visible" : "hidden"; + is( + rows[i].hasAttribute("hidden"), + !results[i], + `Row ${i} should be ${state}` + ); + } + } +} |