export interface CDPTargetDescriptor { id?: string type?: string title?: string url?: string } const hiddenPlaywrightTargetMarkers = ['hidden-playwright', 'geo-hidden-playwright-token'] as const export function isReclaimableHiddenPlaywrightTarget(target: CDPTargetDescriptor): boolean { if ((target.type ?? '').trim() !== 'page') { return false } if (!(target.id ?? '').trim()) { return false } const title = target.title ?? '' const url = target.url ?? '' const haystack = `${title}\n${url}`.toLowerCase() // Blank Electron page targets can belong to visible BrowserWindow shells. // Only reclaim targets that we can prove were created by the hidden // Playwright bootstrap flow. return hiddenPlaywrightTargetMarkers.some((marker) => haystack.includes(marker)) }