From 21473857d9f19df633d96cc546ffafba27ba3f72 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat, 27 Jun 2026 17:34:44 +0900 Subject: [PATCH] Update measure-frontend-browser-comparison.mts --- .../measure-frontend-browser-comparison.mts | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/scripts/measure-frontend-browser-comparison.mts b/.github/scripts/measure-frontend-browser-comparison.mts index 2b107ae2f5..8d78cad1a7 100644 --- a/.github/scripts/measure-frontend-browser-comparison.mts +++ b/.github/scripts/measure-frontend-browser-comparison.mts @@ -284,20 +284,34 @@ async function launchChrome(label: string): Promise { throw new Error('Timed out waiting for Chrome DevTools Protocol'); } -async function closeChrome(handle: ChromeHandle) { - handle.process.kill(); +async function waitForProcessExit(child: ChildProcessWithoutNullStreams) { await new Promise(resolvePromise => { - if (handle.process.exitCode != null) { + if (child.exitCode != null) { resolvePromise(); return; } - handle.process.once('exit', () => resolvePromise()); - setTimeout(() => { - handle.process.kill('SIGKILL'); + const killTimer = setTimeout(() => { + child.kill('SIGKILL'); resolvePromise(); }, 5_000).unref(); + child.once('exit', () => { + clearTimeout(killTimer); + resolvePromise(); + }); + }); +} + +async function closeChrome(handle: ChromeHandle) { + if (handle.process.exitCode == null) { + handle.process.kill(); + } + await waitForProcessExit(handle.process); + await rm(handle.userDataDir, { + recursive: true, + force: true, + maxRetries: 10, + retryDelay: 200, }); - await rm(handle.userDataDir, { recursive: true, force: true }); } async function connectPage(port: number) {