From 1740c99639c2ad0e941fa4d9bff8830ba9e16ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 28 May 2024 20:51:53 +0200 Subject: [PATCH] Close the launched browser on Ctrl+C when recording (#500) --- .changeset/serious-coins-mate.md | 5 +++++ packages/replayio/src/utils/browser/launchBrowser.ts | 3 +++ packages/replayio/src/utils/prompt/prompt.ts | 3 +++ 3 files changed, 11 insertions(+) create mode 100644 .changeset/serious-coins-mate.md 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);