From a4144d5e9b2c81ce9289833efd08b1c3b947a647 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 10 Sep 2026 09:02:31 -0700 Subject: [PATCH] chore(build): set esbuild target to node20 esbuild had no explicit target and defaulted to esnext, so `using` declarations reached lib/ verbatim and failed to parse on the minimum supported node. Adds Symbol.dispose to JSHandle and uses it for the frame element handle in crPage. --- packages/playwright-core/src/server/chromium/crPage.ts | 2 +- packages/playwright-core/src/server/javascript.ts | 4 ++++ utils/build/build.js | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/server/chromium/crPage.ts b/packages/playwright-core/src/server/chromium/crPage.ts index 1e97cacbcc8ac..30c993fb37d19 100644 --- a/packages/playwright-core/src/server/chromium/crPage.ts +++ b/packages/playwright-core/src/server/chromium/crPage.ts @@ -1145,7 +1145,7 @@ class FrameSession { return null; if (frame === this._page.mainFrame()) return { x: 0, y: 0 }; - const element = await frame.frameElement(nullProgress); + using element = await frame.frameElement(nullProgress); const box = await element.boundingBox(nullProgress); return box; } diff --git a/packages/playwright-core/src/server/javascript.ts b/packages/playwright-core/src/server/javascript.ts index 0f549a0273542..adaae310f1bf2 100644 --- a/packages/playwright-core/src/server/javascript.ts +++ b/packages/playwright-core/src/server/javascript.ts @@ -223,6 +223,10 @@ export class JSHandle extends SdkObject { } } + [Symbol.dispose]() { + this.dispose(); + } + override toString(): string { return this._preview; } diff --git a/utils/build/build.js b/utils/build/build.js index 75c247284e174..68de8fbcf6fae 100644 --- a/utils/build/build.js +++ b/utils/build/build.js @@ -331,6 +331,7 @@ class EsbuildStep extends Step { sourcemap: withSourceMaps ? 'linked' : false, platform: 'node', format: 'cjs', + target: 'node20', ...options, }; this._watchPaths = watchPaths;