summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_persistent_logs.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_persistent_logs.js')
-rw-r--r--devtools/client/netmonitor/test/browser_net_persistent_logs.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_persistent_logs.js b/devtools/client/netmonitor/test/browser_net_persistent_logs.js
new file mode 100644
index 0000000000..ed44f8dfd1
--- /dev/null
+++ b/devtools/client/netmonitor/test/browser_net_persistent_logs.js
@@ -0,0 +1,77 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests if the network monitor leaks on initialization and sudden destruction.
+ * You can also use this initialization format as a template for other tests.
+ */
+
+add_task(async function () {
+ const { monitor } = await initNetMonitor(SINGLE_GET_URL, {
+ requestCount: 1,
+ });
+ info("Starting test... ");
+
+ const { document, store, windowRequire } = monitor.panelWin;
+ const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
+
+ store.dispatch(Actions.batchEnable(false));
+
+ Services.prefs.setBoolPref("devtools.netmonitor.persistlog", false);
+
+ await reloadAndWait();
+
+ // Using waitUntil in the test is necessary to ensure all requests are added correctly.
+ // Because reloadAndWait call may catch early uncaught requests from initNetMonitor, so
+ // the actual number of requests after reloadAndWait could be wrong since all requests
+ // haven't finished.
+ await waitUntil(
+ () => document.querySelectorAll(".request-list-item").length === 2
+ );
+ is(
+ document.querySelectorAll(".request-list-item").length,
+ 2,
+ "The request list should have two items at this point."
+ );
+
+ await reloadAndWait();
+
+ await waitUntil(
+ () => document.querySelectorAll(".request-list-item").length === 2
+ );
+ // Since the reload clears the log, we still expect two requests in the log
+ is(
+ document.querySelectorAll(".request-list-item").length,
+ 2,
+ "The request list should still have two items at this point."
+ );
+
+ // Now we toggle the persistence logs on
+ Services.prefs.setBoolPref("devtools.netmonitor.persistlog", true);
+
+ await reloadAndWait();
+
+ await waitUntil(
+ () => document.querySelectorAll(".request-list-item").length === 4
+ );
+ // Since we togged the persistence logs, we expect four items after the reload
+ is(
+ document.querySelectorAll(".request-list-item").length,
+ 4,
+ "The request list should now have four items at this point."
+ );
+
+ Services.prefs.setBoolPref("devtools.netmonitor.persistlog", false);
+ return teardown(monitor);
+
+ /**
+ * Reload the page and wait for 2 GET requests.
+ */
+ async function reloadAndWait() {
+ const wait = waitForNetworkEvents(monitor, 2);
+ await reloadBrowser();
+ return wait;
+ }
+});