summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_telemetry_persist_toggle_changed.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/netmonitor/test/browser_net_telemetry_persist_toggle_changed.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_telemetry_persist_toggle_changed.js b/devtools/client/netmonitor/test/browser_net_telemetry_persist_toggle_changed.js
new file mode 100644
index 0000000000..7a8aa956d4
--- /dev/null
+++ b/devtools/client/netmonitor/test/browser_net_telemetry_persist_toggle_changed.js
@@ -0,0 +1,81 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests the log persistence telemetry event
+ */
+const { TelemetryTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/TelemetryTestUtils.sys.mjs"
+);
+
+function togglePersistLogsOption(monitor) {
+ clickSettingsMenuItem(monitor, "persist-logs");
+}
+
+function ensurePersistLogsCheckedState(monitor, isChecked) {
+ openSettingsMenu(monitor);
+ const persistNode = getSettingsMenuItem(monitor, "persist-logs");
+ return !!persistNode?.getAttribute("aria-checked") === isChecked;
+}
+
+add_task(async function () {
+ const { monitor } = await initNetMonitor(SINGLE_GET_URL, { requestCount: 1 });
+ info("Starting test... ");
+
+ const { store, windowRequire } = monitor.panelWin;
+ const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
+
+ store.dispatch(Actions.batchEnable(false));
+
+ await waitForAllNetworkUpdateEvents();
+
+ // Clear all events
+ Services.telemetry.clearEvents();
+
+ // Ensure no events have been logged
+ TelemetryTestUtils.assertNumberOfEvents(0);
+
+ // Click on the toggle - "true" and make sure it was set to correct value
+ let onPersistChanged = monitor.panelWin.api.once(TEST_EVENTS.PERSIST_CHANGED);
+ togglePersistLogsOption(monitor);
+ await waitUntil(() => ensurePersistLogsCheckedState(monitor, true));
+ await onPersistChanged;
+
+ // Click a second time - "false" and make sure it was set to correct value
+ onPersistChanged = monitor.panelWin.api.once(TEST_EVENTS.PERSIST_CHANGED);
+ togglePersistLogsOption(monitor);
+ await waitUntil(() => ensurePersistLogsCheckedState(monitor, false));
+ await onPersistChanged;
+
+ const expectedEvents = [
+ {
+ category: "devtools.main",
+ method: "persist_changed",
+ object: "netmonitor",
+ value: "true",
+ },
+ {
+ category: "devtools.main",
+ method: "persist_changed",
+ object: "netmonitor",
+ value: "false",
+ },
+ ];
+
+ const filter = {
+ category: "devtools.main",
+ method: "persist_changed",
+ object: "netmonitor",
+ };
+
+ await waitForAllNetworkUpdateEvents();
+ // Will compare filtered events to event list above
+ await TelemetryTestUtils.assertEvents(expectedEvents, filter);
+
+ // Set Persist log preference back to false
+ Services.prefs.setBoolPref("devtools.netmonitor.persistlog", false);
+
+ return teardown(monitor);
+});