diff --git a/packages/playwright-core/src/server/chromium/crProtocolHelper.ts b/packages/playwright-core/src/server/chromium/crProtocolHelper.ts index cd45d5d13e76f..deb0158f5f2fe 100644 --- a/packages/playwright-core/src/server/chromium/crProtocolHelper.ts +++ b/packages/playwright-core/src/server/chromium/crProtocolHelper.ts @@ -47,13 +47,16 @@ export async function saveProtocolStream(client: CRSession, handle: string, path let eof = false; await mkdirIfNeeded(path); const fd = await fs.promises.open(path, 'w'); - while (!eof) { - const response = await client.send('IO.read', { handle }); - eof = response.eof; - const buf = Buffer.from(response.data, response.base64Encoded ? 'base64' : undefined); - await fd.write(buf); + try { + while (!eof) { + const response = await client.send('IO.read', { handle }); + eof = response.eof; + const buf = Buffer.from(response.data, response.base64Encoded ? 'base64' : undefined); + await fd.write(buf); + } + } finally { + await fd.close().catch(() => {}); } - await fd.close(); await client.send('IO.close', { handle }); }