diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_webconsole_filters.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_webconsole_filters.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_webconsole_filters.js b/devtools/client/webconsole/test/browser/browser_webconsole_filters.js new file mode 100644 index 0000000000..8e1d194323 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_webconsole_filters.js @@ -0,0 +1,85 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Tests filters. + +"use strict"; + +const TEST_URI = + "http://example.com/browser/devtools/client/webconsole/" + + "test/browser/test-console-filters.html"; + +add_task(async function () { + await pushPref("dom.security.https_first", false); + const hud = await openNewTabAndConsole(TEST_URI); + + const filterState = await getFilterState(hud); + + // Triggers network requests + SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => { + const url = "./sjs_slow-response-test-server.sjs"; + // Set a smaller delay for the 300 to ensure we get it before the "error" responses. + content.fetch(`${url}?status=300&delay=100`); + content.fetch(`${url}?status=404&delay=500`); + content.fetch(`${url}?status=500&delay=500`); + }); + + // Wait for the messages + await waitFor(() => findErrorMessage(hud, "status=404", ".network")); + await waitFor(() => findErrorMessage(hud, "status=500", ".network")); + + // Check defaults. + + for (const category of ["error", "warn", "log", "info", "debug"]) { + const state = filterState[category]; + ok(state, `Filter button for ${category} is on by default`); + } + for (const category of ["css", "net", "netxhr"]) { + const state = filterState[category]; + ok(!state, `Filter button for ${category} is off by default`); + } + + // Check that messages are shown as expected. This depends on cached messages being + // shown. + is( + findAllMessages(hud).length, + 7, + "Messages of all levels shown when filters are on." + ); + + // Check that messages are not shown when their filter is turned off. + await setFilterState(hud, { + error: false, + }); + await waitFor(() => findAllMessages(hud).length == 4); + ok(true, "When a filter is turned off, its messages are not shown."); + + // Check that the ui settings were persisted. + await closeTabAndToolbox(); + await testFilterPersistence(); +}); + +function filterIsEnabled(button) { + return button.classList.contains("checked"); +} + +async function testFilterPersistence() { + const hud = await openNewTabAndConsole(TEST_URI); + const outputNode = hud.ui.outputNode; + const filterBar = await waitFor(() => { + return outputNode.querySelector(".webconsole-filterbar-secondary"); + }); + ok(filterBar, "Filter bar ui setting is persisted."); + // Check that the filter settings were persisted. + ok( + !filterIsEnabled(filterBar.querySelector("[data-category='error']")), + "Filter button setting is persisted" + ); + is( + findAllMessages(hud).length, + 4, + "testFilterPersistence: Messages of all levels but error shown." + ); + + await resetFilters(hud); +} |