From da0bf990f58071b5e4fe22cbb422ccdcbcb0238d Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Fri, 22 May 2026 16:45:19 +0200 Subject: [PATCH] fix(mcp): disconnect tracked browser on BrowserTracker.dispose The dashboard's BrowserTracker opens a remote Playwright connection to each bound daemon browser but never closes it on dispose. The WS to the daemon lingers until the dashboard process exits, keeping client-driven subscriptions (e.g. screencast) alive on the daemon side longer than they need to be. --- .../src/tools/dashboard/registrySessionProvider.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/playwright-core/src/tools/dashboard/registrySessionProvider.ts b/packages/playwright-core/src/tools/dashboard/registrySessionProvider.ts index 3f3fa3216d352..8c21f8be40cf9 100644 --- a/packages/playwright-core/src/tools/dashboard/registrySessionProvider.ts +++ b/packages/playwright-core/src/tools/dashboard/registrySessionProvider.ts @@ -68,6 +68,7 @@ class BrowserTracker { for (const listeners of this._contextListeners.values()) listeners.forEach(d => d.dispose()); this._contextListeners.clear(); + void this.browser.close().catch(() => {}); } private _wireContext(context: api.BrowserContext) {