From 295a8ec92bb2acbb94726f4c42a2a39690b98b74 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Tue, 21 Mar 2023 19:01:09 -0700 Subject: [PATCH] chore(tracing): remove extra fs.access call (#21855) --- .../src/server/trace/recorder/tracing.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/playwright-core/src/server/trace/recorder/tracing.ts b/packages/playwright-core/src/server/trace/recorder/tracing.ts index ffdc644496..7e7bdab6f0 100644 --- a/packages/playwright-core/src/server/trace/recorder/tracing.ts +++ b/packages/playwright-core/src/server/trace/recorder/tracing.ts @@ -421,14 +421,10 @@ export class Tracing extends SdkObject implements InstrumentationListener, Snaps this._allResources.add(sha1); const resourcePath = path.join(this._state!.resourcesDir, sha1); this._appendTraceOperation(async () => { - try { - // Perhaps we've already written this resource? - await fs.promises.access(resourcePath); - } catch (e) { - // If not, let's write! Note that async access is safe because we - // never remove resources until the very end. - await fs.promises.writeFile(resourcePath, buffer).catch(() => {}); - } + // Note: 'wx' flag only writes when the file does not exist. + // See https://nodejs.org/api/fs.html#file-system-flags. + // This way tracing never have to write the same resource twice. + await fs.promises.writeFile(resourcePath, buffer, { flag: 'wx' }).catch(() => {}); }); }