browser_net_telemetry_persist_toggle_changed.js (2426B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /** 7 * Tests the log persistence telemetry event 8 */ 9 const { TelemetryTestUtils } = ChromeUtils.importESModule( 10 "resource://testing-common/TelemetryTestUtils.sys.mjs" 11 ); 12 13 function togglePersistLogsOption(monitor) { 14 clickSettingsMenuItem(monitor, "persist-logs"); 15 } 16 17 function ensurePersistLogsCheckedState(monitor, isChecked) { 18 openSettingsMenu(monitor); 19 const persistNode = getSettingsMenuItem(monitor, "persist-logs"); 20 return !!persistNode?.getAttribute("aria-checked") === isChecked; 21 } 22 23 add_task(async function () { 24 const { monitor } = await initNetMonitor(SINGLE_GET_URL, { requestCount: 1 }); 25 info("Starting test... "); 26 27 const { store, windowRequire } = monitor.panelWin; 28 const Actions = windowRequire("devtools/client/netmonitor/src/actions/index"); 29 30 store.dispatch(Actions.batchEnable(false)); 31 32 await waitForAllNetworkUpdateEvents(); 33 34 // Clear all events 35 Services.telemetry.clearEvents(); 36 37 // Ensure no events have been logged 38 TelemetryTestUtils.assertNumberOfEvents(0); 39 40 // Click on the toggle - "true" and make sure it was set to correct value 41 let onPersistChanged = monitor.panelWin.api.once(TEST_EVENTS.PERSIST_CHANGED); 42 togglePersistLogsOption(monitor); 43 await waitUntil(() => ensurePersistLogsCheckedState(monitor, true)); 44 await onPersistChanged; 45 46 // Click a second time - "false" and make sure it was set to correct value 47 onPersistChanged = monitor.panelWin.api.once(TEST_EVENTS.PERSIST_CHANGED); 48 togglePersistLogsOption(monitor); 49 await waitUntil(() => ensurePersistLogsCheckedState(monitor, false)); 50 await onPersistChanged; 51 52 const expectedEvents = [ 53 { 54 category: "devtools.main", 55 method: "persist_changed", 56 object: "netmonitor", 57 value: "true", 58 }, 59 { 60 category: "devtools.main", 61 method: "persist_changed", 62 object: "netmonitor", 63 value: "false", 64 }, 65 ]; 66 67 const filter = { 68 category: "devtools.main", 69 method: "persist_changed", 70 object: "netmonitor", 71 }; 72 73 await waitForAllNetworkUpdateEvents(); 74 // Will compare filtered events to event list above 75 await TelemetryTestUtils.assertEvents(expectedEvents, filter); 76 77 // Set Persist log preference back to false 78 Services.prefs.setBoolPref("devtools.netmonitor.persistlog", false); 79 80 return teardown(monitor); 81 });