diff --git a/packages/replay/src/bin.ts b/packages/replay/src/bin.ts index 3f7aac37..8685cefd 100644 --- a/packages/replay/src/bin.ts +++ b/packages/replay/src/bin.ts @@ -64,6 +64,11 @@ commandWithGlobalOptions("upload ") commandWithGlobalOptions("launch [url]") .description("Launch the replay browser") .option("-b, --browser ", "Browser to launch", "chromium") + .option( + "--attach ", + "Whether to attach to the browser process after launching", + false + ) .allowUnknownOption() .action(commandLaunchBrowser); @@ -188,7 +193,10 @@ async function commandUploadRecording(id: string, opts: CommandLineOptions) { async function commandLaunchBrowser( url: string | undefined, - opts: Pick & { browser: string | undefined } + opts: Pick & { + browser: string | undefined; + attach: boolean | undefined; + } ) { try { debug("Options", opts); @@ -196,7 +204,9 @@ async function commandLaunchBrowser( const browser = fuzzyBrowserName(opts.browser) || "chromium"; assertValidBrowserName(browser); - await launchBrowser(browser, [url || "about:blank"]); + const attach = opts.attach || false; + + await launchBrowser(browser, [url || "about:blank"], attach); process.exit(0); } catch (e) { console.error("Failed to launch browser"); diff --git a/packages/replay/src/main.ts b/packages/replay/src/main.ts index 37e1987c..39d89c63 100644 --- a/packages/replay/src/main.ts +++ b/packages/replay/src/main.ts @@ -730,7 +730,11 @@ async function updateMetadata({ } } -async function launchBrowser(browserName: BrowserName, args: string[] = []) { +async function launchBrowser( + browserName: BrowserName, + args: string[] = [], + attach: boolean = false +) { const execPath = getExecutablePath(browserName); if (!execPath) { throw new Error(`${browserName} not supported on the current platform`); @@ -750,7 +754,7 @@ async function launchBrowser(browserName: BrowserName, args: string[] = []) { firefox: ["-foreground", ...args], }; - const proc = spawn(execPath, browserArgs[browserName], { detached: true }); + const proc = spawn(execPath, browserArgs[browserName], { detached: !attach }); proc.unref(); return proc;