summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_runtime_updates_multi.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_runtime_updates_multi.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_runtime_updates_multi.js111
1 files changed, 111 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_runtime_updates_multi.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_runtime_updates_multi.js
new file mode 100644
index 0000000000..707ddf4621
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_telemetry_runtime_updates_multi.js
@@ -0,0 +1,111 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/* import-globals-from helper-telemetry.js */
+Services.scriptloader.loadSubScript(
+ CHROME_URL_ROOT + "helper-telemetry.js",
+ this
+);
+
+const DEVICE_A = "Device A";
+const USB_RUNTIME_1 = {
+ id: "runtime-id-1",
+ deviceName: DEVICE_A,
+ name: "Runtime 1",
+ shortName: "R1",
+};
+
+const USB_RUNTIME_2 = {
+ id: "runtime-id-2",
+ deviceName: DEVICE_A,
+ name: "Runtime 2",
+ shortName: "R2",
+};
+
+const DEVICE_A_EXTRAS = {
+ connection_type: "usb",
+ device_name: DEVICE_A,
+};
+
+const RUNTIME_1_EXTRAS = {
+ connection_type: "usb",
+ device_name: USB_RUNTIME_1.deviceName,
+ runtime_name: USB_RUNTIME_1.shortName,
+};
+
+const RUNTIME_2_EXTRAS = {
+ connection_type: "usb",
+ device_name: USB_RUNTIME_2.deviceName,
+ runtime_name: USB_RUNTIME_2.shortName,
+};
+
+/**
+ * Test runtime update events when a device is connected/disconnected with multiple
+ * runtimes available on the same device.
+ */
+add_task(async function () {
+ // enable USB devices mocks
+ const mocks = new Mocks();
+ setupTelemetryTest();
+
+ const { tab, document } = await openAboutDebugging();
+
+ const sessionId = getOpenEventSessionId();
+ ok(!isNaN(sessionId), "Open event has a valid session id");
+
+ info("Add two runtimes on the same device at the same time");
+ mocks.createUSBRuntime(USB_RUNTIME_1.id, {
+ deviceName: USB_RUNTIME_1.deviceName,
+ name: USB_RUNTIME_1.name,
+ shortName: USB_RUNTIME_1.shortName,
+ });
+ mocks.createUSBRuntime(USB_RUNTIME_2.id, {
+ deviceName: USB_RUNTIME_2.deviceName,
+ name: USB_RUNTIME_2.name,
+ shortName: USB_RUNTIME_2.shortName,
+ });
+ mocks.emitUSBUpdate();
+ await waitUntil(() =>
+ findSidebarItemByText(USB_RUNTIME_1.shortName, document)
+ );
+ await waitUntil(() =>
+ findSidebarItemByText(USB_RUNTIME_2.shortName, document)
+ );
+
+ checkTelemetryEvents(
+ [
+ { method: "device_added", extras: DEVICE_A_EXTRAS },
+ { method: "runtime_added", extras: RUNTIME_1_EXTRAS },
+ { method: "runtime_added", extras: RUNTIME_2_EXTRAS },
+ ],
+ sessionId
+ );
+
+ info("Remove both runtimes at once to simulate a device disconnection");
+ mocks.removeRuntime(USB_RUNTIME_1.id);
+ mocks.removeRuntime(USB_RUNTIME_2.id);
+ mocks.emitUSBUpdate();
+ await waitUntil(
+ () =>
+ !findSidebarItemByText(USB_RUNTIME_1.name, document) &&
+ !findSidebarItemByText(USB_RUNTIME_1.shortName, document)
+ );
+ await waitUntil(
+ () =>
+ !findSidebarItemByText(USB_RUNTIME_2.name, document) &&
+ !findSidebarItemByText(USB_RUNTIME_2.shortName, document)
+ );
+
+ checkTelemetryEvents(
+ [
+ { method: "runtime_removed", extras: RUNTIME_1_EXTRAS },
+ { method: "runtime_removed", extras: RUNTIME_2_EXTRAS },
+ { method: "device_removed", extras: DEVICE_A_EXTRAS },
+ ],
+ sessionId
+ );
+
+ await removeTab(tab);
+});