summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_process_main.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_process_main.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_process_main.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_process_main.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_process_main.js
new file mode 100644
index 0000000000..bd88545d58
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_process_main.js
@@ -0,0 +1,87 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/* import-globals-from helper-collapsibilities.js */
+Services.scriptloader.loadSubScript(
+ CHROME_URL_ROOT + "helper-collapsibilities.js",
+ this
+);
+
+const MULTIPROCESS_TOOLBOX_NAME = "Multiprocess Toolbox";
+const MULTIPROCESS_TOOLBOX_DESCRIPTION =
+ "Main Process and Content Processes for the target browser";
+
+const RUNTIME_ID = "test-runtime-id";
+const RUNTIME_DEVICE_NAME = "test device name";
+const RUNTIME_APP_NAME = "TestApp";
+
+// Test for main process.
+add_task(async function () {
+ await pushPref("devtools.aboutdebugging.process-debugging", true);
+ const mocks = new Mocks();
+
+ const { document, tab, window } = await openAboutDebugging();
+
+ const usbRuntime = mocks.createUSBRuntime(RUNTIME_ID, {
+ deviceName: RUNTIME_DEVICE_NAME,
+ name: RUNTIME_APP_NAME,
+ });
+
+ // Note: about:debugging assumes that the main process has the id 0 and will
+ // rely on it to create the about:devtools-toolbox URL.
+ // Only check that about:debugging doesn't create a target unnecessarily.
+ usbRuntime.getMainProcess = () => {
+ return {
+ getTarget: () => {
+ ok(false, "about:debugging should not create the main process target");
+ },
+ };
+ };
+ mocks.emitUSBUpdate();
+
+ info("Select USB runtime");
+ await connectToRuntime(RUNTIME_DEVICE_NAME, document);
+ await selectRuntime(RUNTIME_DEVICE_NAME, RUNTIME_APP_NAME, document);
+
+ info("Check debug target item of the main process");
+ await waitUntil(() =>
+ findDebugTargetByText(MULTIPROCESS_TOOLBOX_NAME, document)
+ );
+ const mainProcessItem = findDebugTargetByText(
+ MULTIPROCESS_TOOLBOX_NAME,
+ document
+ );
+ ok(mainProcessItem, "Debug target item of the main process should display");
+ ok(
+ mainProcessItem.textContent.includes(MULTIPROCESS_TOOLBOX_DESCRIPTION),
+ "Debug target item of the main process should contains the description"
+ );
+
+ info("Inspect main process");
+ const { devtoolsTab, devtoolsWindow } = await openAboutDevtoolsToolbox(
+ document,
+ tab,
+ window,
+ MULTIPROCESS_TOOLBOX_NAME,
+ false
+ );
+
+ const url = new window.URL(devtoolsWindow.location.href);
+ const type = url.searchParams.get("type");
+ is(type, "process", "Correct type argument");
+ const remoteID = url.searchParams.get("remoteId");
+ is(remoteID, `${RUNTIME_ID}-usb`, "Correct remote runtime id");
+
+ info("Remove USB runtime");
+ mocks.removeUSBRuntime(RUNTIME_ID);
+ mocks.emitUSBUpdate();
+ await waitUntilUsbDeviceIsUnplugged(RUNTIME_DEVICE_NAME, document);
+
+ // Note that we can't use `closeAboutDevtoolsToolbox` because the toolbox init
+ // is expected to fail, and we are redirected to the error page.
+ await removeTab(devtoolsTab);
+ await waitUntil(() => !findDebugTargetByText("Toolbox - ", document));
+ await removeTab(tab);
+});