Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"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);
});