summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_fenix_runtime_node_picker.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_fenix_runtime_node_picker.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_fenix_runtime_node_picker.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_fenix_runtime_node_picker.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_fenix_runtime_node_picker.js
new file mode 100644
index 0000000000..59bdbd765d
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_fenix_runtime_node_picker.js
@@ -0,0 +1,83 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const RUNTIME_ID = "1337id";
+const DEVICE_NAME = "Fancy Phone";
+const SERVER_RUNTIME_NAME = "Mozilla Firefox";
+const ADB_RUNTIME_NAME = "Firefox Preview";
+const SERVER_VERSION = "v7.3.31";
+const ADB_VERSION = "v1.3.37";
+
+/**
+ * Check that the node picker button in about:devtools-toolbox has the expected class when
+ * connecting to an Android phone.
+ */
+add_task(async function () {
+ // We use a real local client combined with a mocked USB runtime to be able to open
+ // about:devtools-toolbox on a real target.
+ const clientWrapper = await createLocalClientWrapper();
+
+ const mocks = new Mocks();
+ mocks.createUSBRuntime(RUNTIME_ID, {
+ channel: "nightly",
+ clientWrapper,
+ deviceName: DEVICE_NAME,
+ isFenix: true,
+ name: SERVER_RUNTIME_NAME,
+ shortName: ADB_RUNTIME_NAME,
+ versionName: ADB_VERSION,
+ version: SERVER_VERSION,
+ });
+
+ // open a remote runtime page
+ const { document, tab, window } = await openAboutDebugging();
+ await selectThisFirefoxPage(document, window.AboutDebugging.store);
+
+ mocks.emitUSBUpdate();
+ info("Select the runtime page for the USB runtime");
+ const onRequestSuccess = waitForRequestsSuccess(window.AboutDebugging.store);
+ await connectToRuntime(DEVICE_NAME, document);
+ await selectRuntime(DEVICE_NAME, ADB_RUNTIME_NAME, document);
+ info(
+ "Wait for requests to finish the USB runtime is backed by a real local client"
+ );
+ await onRequestSuccess;
+
+ info("Wait for the about:debugging target to be available");
+ await waitUntil(() => findDebugTargetByText("about:debugging", document));
+ const { devtoolsDocument, devtoolsTab } = await openAboutDevtoolsToolbox(
+ document,
+ tab,
+ window
+ );
+
+ const pickerButton = devtoolsDocument.querySelector("#command-button-pick");
+ ok(
+ pickerButton.classList.contains("remote-fenix"),
+ "The node picker does have the expected additional className when debugging an android phone"
+ );
+ const pickerButtonTitle = pickerButton.getAttribute("title");
+ const expectedKeyboardShortcut =
+ Services.appinfo.OS === "Darwin"
+ ? `Cmd+Shift+C or Cmd+Opt+C`
+ : `Ctrl+Shift+C`;
+ is(
+ pickerButtonTitle,
+ `Pick an element from the Android phone (${expectedKeyboardShortcut})`,
+ `The node picker does have the expected tooltip when debugging an android phone`
+ );
+
+ info("Wait for all pending requests to settle on the DevToolsClient");
+ await clientWrapper.client.waitForRequestsToSettle();
+ await closeAboutDevtoolsToolbox(document, devtoolsTab, window);
+
+ info("Remove USB runtime");
+ mocks.removeUSBRuntime(RUNTIME_ID);
+ mocks.emitUSBUpdate();
+ await waitUntilUsbDeviceIsUnplugged(DEVICE_NAME, document);
+
+ await removeTab(tab);
+ await clientWrapper.close();
+});