diff --git a/playwriter/CHANGELOG.md b/playwriter/CHANGELOG.md index 031fdb3..436aae0 100644 --- a/playwriter/CHANGELOG.md +++ b/playwriter/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.0.16 + +### Patch Changes + +- **Fixed Stagehand timeout**: Send `Target.attachedToTarget` event after `Target.attachToTarget` returns + - Stagehand creates sessions from `attachToTarget` response, then expects `attachedToTarget` event to create Page + - Previously events were only sent from `setAutoAttach` which arrived before sessions were created + ## 0.0.15 ### Patch Changes diff --git a/playwriter/package.json b/playwriter/package.json index fdb365b..868a640 100644 --- a/playwriter/package.json +++ b/playwriter/package.json @@ -1,7 +1,7 @@ { "name": "playwriter", "description": "", - "version": "0.0.15", + "version": "0.0.16", "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/playwriter/src/extension/cdp-relay.ts b/playwriter/src/extension/cdp-relay.ts index 8d48387..deb27d3 100644 --- a/playwriter/src/extension/cdp-relay.ts +++ b/playwriter/src/extension/cdp-relay.ts @@ -351,7 +351,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. } } - if (method === 'Target.setDiscoverTargets' && (params)?.discover) { + if (method === 'Target.setDiscoverTargets' && (params as any)?.discover) { for (const target of connectedTargets.values()) { const targetCreatedPayload = { method: 'Target.targetCreated', @@ -371,6 +371,30 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. } } + if (method === 'Target.attachToTarget' && result?.sessionId) { + const targetId = params?.targetId + const target = Array.from(connectedTargets.values()).find(t => t.targetId === targetId) + if (target) { + const attachedPayload = { + method: 'Target.attachedToTarget', + params: { + sessionId: result.sessionId, + targetInfo: { + ...target.targetInfo, + attached: true + }, + waitingForDebugger: false + } + } satisfies CDPEventFor<'Target.attachedToTarget'> + logger?.log(chalk.magenta('[Server] Target.attachedToTarget (from attachToTarget) payload:'), JSON.stringify(attachedPayload)) + sendToPlaywright({ + message: attachedPayload, + clientId, + source: 'server' + }) + } + } + sendToPlaywright({ message: { id, sessionId, result }, clientId diff --git a/playwriter/src/mcp.test.ts b/playwriter/src/mcp.test.ts index d6a1704..8cad08d 100644 --- a/playwriter/src/mcp.test.ts +++ b/playwriter/src/mcp.test.ts @@ -610,8 +610,8 @@ describe('MCP Server Tests', () => { expect(results).toMatchInlineSnapshot(` [ { - "title": "🎄 Twelve Days of Shell 🎄", - "url": "https://12days.cmdchallenge.com/", + "title": "", + "url": "about:blank", }, { "title": "Example Domain", @@ -696,8 +696,8 @@ describe('MCP Server Tests', () => { expect(results).toMatchInlineSnapshot(` [ { - "title": "🎄 Twelve Days of Shell 🎄", - "url": "https://12days.cmdchallenge.com/", + "title": "", + "url": "about:blank", }, { "title": "Example Domain",