diff --git a/.changeset/serious-coins-mate.md b/.changeset/serious-coins-mate.md new file mode 100644 index 00000000..fdcf0ab2 --- /dev/null +++ b/.changeset/serious-coins-mate.md @@ -0,0 +1,5 @@ +--- +"replayio": patch +--- + +The launched browser will now get correctly closed on Ctrl+C when recording diff --git a/packages/replayio/src/utils/browser/launchBrowser.ts b/packages/replayio/src/utils/browser/launchBrowser.ts index 8a08a616..a0d216b5 100644 --- a/packages/replayio/src/utils/browser/launchBrowser.ts +++ b/packages/replayio/src/utils/browser/launchBrowser.ts @@ -60,6 +60,9 @@ export async function launchBrowser( prompt({ signal: abortControllerForPrompt.signal, + onExit: () => { + spawnDeferred.data.kill(); + }, }).then(() => { spawnDeferred.data.kill(); }); diff --git a/packages/replayio/src/utils/prompt/prompt.ts b/packages/replayio/src/utils/prompt/prompt.ts index 4c551b34..4892f1b2 100644 --- a/packages/replayio/src/utils/prompt/prompt.ts +++ b/packages/replayio/src/utils/prompt/prompt.ts @@ -1,6 +1,8 @@ export async function prompt({ + onExit, signal, }: { + onExit?: () => void; signal?: AbortSignal; } = {}): Promise { return new Promise(resolve => { @@ -38,6 +40,7 @@ export async function prompt({ case "\x03": // \x03 is Ctrl+C (aka "End of text") // https://donsnotes.com/tech/charsets/ascii.html + onExit?.(); process.exit(0); default: resolve(false);