summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/browser_dbg-chrome-create.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg-chrome-create.js')
-rw-r--r--devtools/client/debugger/test/mochitest/browser_dbg-chrome-create.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg-chrome-create.js b/devtools/client/debugger/test/mochitest/browser_dbg-chrome-create.js
new file mode 100644
index 0000000000..fdf3c186de
--- /dev/null
+++ b/devtools/client/debugger/test/mochitest/browser_dbg-chrome-create.js
@@ -0,0 +1,61 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+
+/**
+ * Tests that a chrome debugger can be created in a new process.
+ */
+
+"use strict";
+
+// There are shutdown issues for which multiple rejections are left uncaught.
+// See bug 1018184 for resolving these issues.
+PromiseTestUtils.allowMatchingRejectionsGlobally(/File closed/);
+PromiseTestUtils.allowMatchingRejectionsGlobally(/NS_ERROR_FAILURE/);
+
+// This test can be slow to run
+requestLongerTimeout(5);
+
+const { BrowserToolboxLauncher } = ChromeUtils.importESModule(
+ "resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs"
+);
+
+add_task(async function () {
+ await pushPref("devtools.chrome.enabled", true);
+ await pushPref("devtools.debugger.remote-enabled", true);
+
+ info("Call BrowserToolboxLauncher.init");
+ const [browserToolboxLauncher, process, profilePath] = await new Promise(
+ resolve => {
+ BrowserToolboxLauncher.init({
+ onRun: (btl, dbgProcess, dbgProfilePath) => {
+ info("Browser toolbox process started successfully.");
+ resolve([btl, dbgProcess, dbgProfilePath]);
+ },
+ });
+ }
+ );
+
+ ok(process, "The remote debugger process was created");
+ ok(process.exitCode == null, "The remote debugger process is running");
+ is(
+ typeof process.pid,
+ "number",
+ `The remote debugger process has a proper pid (${process.pid})`
+ );
+
+ is(
+ profilePath,
+ PathUtils.join(PathUtils.profileDir, "chrome_debugger_profile"),
+ `The remote debugger profile has the expected path`
+ );
+
+ info("Close the browser toolbox");
+ await browserToolboxLauncher.close();
+
+ is(
+ process.exitCode,
+ Services.appinfo.OS == "WINNT" ? -9 : -15,
+ "The remote debugger process died cleanly"
+ );
+});