From 4724383abc5c1451584acc1d16224ba55f30046d Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Thu, 5 Mar 2026 00:38:47 +0100 Subject: [PATCH] test: stabilize relay-core click error snapshots by ensuring connected tab The three descriptive click-error tests can run after a prior test closes all connected pages, causing MCP execute to fail early with 'No Playwright pages are available' instead of exercising click visibility/interception errors. Add ensureConnectedTabForExecute() and call it before the three snapshot tests so they always have one connected tab context and assert the intended errors. --- playwriter/src/relay-core.test.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/playwriter/src/relay-core.test.ts b/playwriter/src/relay-core.test.ts index 56d87f3..10365ab 100644 --- a/playwriter/src/relay-core.test.ts +++ b/playwriter/src/relay-core.test.ts @@ -40,6 +40,30 @@ describe('Relay Core Tests', () => { return testCtx.browserContext } + const ensureConnectedTabForExecute = async (): Promise => { + const browserContext = getBrowserContext() + const serviceWorker = await getExtensionServiceWorker(browserContext) + const connectedTabCount = await serviceWorker.evaluate(async () => { + const state = globalThis.getExtensionState() + return state.tabs.size + }) + if (connectedTabCount > 0) { + return + } + + const page = await browserContext.newPage() + await page.goto('about:blank') + await page.bringToFront() + + await serviceWorker.evaluate(async () => { + await globalThis.toggleExtensionForActiveTab() + }) + + await new Promise((r) => { + setTimeout(r, 100) + }) + } + it('should inject script via addScriptTag through CDP relay', async () => { const browserContext = getBrowserContext() const serviceWorker = await withTimeout({ @@ -1020,6 +1044,8 @@ describe('Relay Core Tests', () => { }, 60000) it('should show descriptive error when clicking a hidden element', async () => { + await ensureConnectedTabForExecute() + // Create a fresh page and set content with a collapsed details element await client.callTool({ name: 'execute', @@ -1073,6 +1099,8 @@ describe('Relay Core Tests', () => { }, 30000) it('should show descriptive error when clicking an element covered by another', async () => { + await ensureConnectedTabForExecute() + await client.callTool({ name: 'execute', arguments: { @@ -1130,6 +1158,8 @@ describe('Relay Core Tests', () => { }, 30000) it('should show descriptive error when clicking a display:none element', async () => { + await ensureConnectedTabForExecute() + await client.callTool({ name: 'execute', arguments: {