summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_sidebar_usb_unavailable_runtime.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_sidebar_usb_unavailable_runtime.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_sidebar_usb_unavailable_runtime.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_sidebar_usb_unavailable_runtime.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_sidebar_usb_unavailable_runtime.js
new file mode 100644
index 0000000000..e073939b6d
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_sidebar_usb_unavailable_runtime.js
@@ -0,0 +1,65 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const RUNTIME_NAME = "Firefox 123";
+const DEVICE_NAME = "DEVICE_NAME";
+const DEVICE_ID = "DEVICE_ID";
+const RUNTIME_ID = "RUNTIME_ID";
+
+// Test that unavailable runtimes:
+// - are displayed without a connect button.
+// - cannot be selected
+// - display a specific text ("Waiting for runtime") instead of the runtime name
+add_task(async function () {
+ const mocks = new Mocks();
+ const { document, tab } = await openAboutDebugging();
+
+ info("Create a device without a corresponding runtime");
+ mocks.addDevice(DEVICE_ID, DEVICE_NAME);
+ mocks.emitUSBUpdate();
+
+ info("Wait until the USB sidebar item appears");
+ await waitUntil(() => findSidebarItemByText(DEVICE_NAME, document));
+
+ const usbRuntimeSidebarItem = findSidebarItemByText(DEVICE_NAME, document);
+
+ ok(
+ usbRuntimeSidebarItem.querySelector(".qa-runtime-item-waiting-for-browser"),
+ "Sidebar item shows as `Waiting for browser`"
+ );
+
+ const hasConnectButton =
+ usbRuntimeSidebarItem.querySelector(".qa-connect-button");
+ ok(!hasConnectButton, "Connect button is not displayed");
+
+ const hasLink = usbRuntimeSidebarItem.querySelector(".qa-sidebar-link");
+ ok(!hasLink, "Unavailable runtime is not selectable");
+
+ info("Add a valid runtime for the same device id and emit update event");
+ mocks.createUSBRuntime(RUNTIME_ID, {
+ deviceId: DEVICE_ID,
+ deviceName: DEVICE_NAME,
+ shortName: RUNTIME_NAME,
+ });
+ mocks.removeDevice(DEVICE_ID);
+ mocks.emitUSBUpdate();
+
+ info("Wait until connect button appears for the USB runtime");
+ let updatedSidebarItem = null;
+ await waitUntil(() => {
+ updatedSidebarItem = findSidebarItemByText(DEVICE_NAME, document);
+ return (
+ updatedSidebarItem &&
+ updatedSidebarItem.querySelector(".qa-connect-button")
+ );
+ });
+
+ ok(
+ updatedSidebarItem.querySelector(".qa-runtime-item-standard"),
+ "Sidebar item for the USB runtime is now a standard sidebar item"
+ );
+
+ await removeTab(tab);
+});