fix duplicate attachedToTarget on cdp reset
This commit is contained in:
@@ -54,6 +54,7 @@ export async function startRelayServer({ port = 9988, logger = console }: { port
|
|||||||
'Network.responseReceived',
|
'Network.responseReceived',
|
||||||
'Network.responseReceivedExtraInfo',
|
'Network.responseReceivedExtraInfo',
|
||||||
'Network.dataReceived',
|
'Network.dataReceived',
|
||||||
|
'Network.requestWillBeSent',
|
||||||
'Network.loadingFinished'
|
'Network.loadingFinished'
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -385,20 +386,27 @@ export async function startRelayServer({ port = 9988, logger = console }: { port
|
|||||||
|
|
||||||
if (method === 'Target.attachedToTarget') {
|
if (method === 'Target.attachedToTarget') {
|
||||||
const targetParams = params as Protocol.Target.AttachedToTargetEvent
|
const targetParams = params as Protocol.Target.AttachedToTargetEvent
|
||||||
|
|
||||||
|
// Check if we already sent this target to clients (e.g., from Target.setAutoAttach response)
|
||||||
|
const alreadyConnected = connectedTargets.has(targetParams.sessionId)
|
||||||
|
|
||||||
|
// Always update our local state with latest target info
|
||||||
connectedTargets.set(targetParams.sessionId, {
|
connectedTargets.set(targetParams.sessionId, {
|
||||||
sessionId: targetParams.sessionId,
|
sessionId: targetParams.sessionId,
|
||||||
targetId: targetParams.targetInfo.targetId,
|
targetId: targetParams.targetInfo.targetId,
|
||||||
targetInfo: targetParams.targetInfo
|
targetInfo: targetParams.targetInfo
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Only forward to Playwright if this is a new target to avoid duplicates
|
||||||
sendToPlaywright({
|
if (!alreadyConnected) {
|
||||||
message: {
|
sendToPlaywright({
|
||||||
method: 'Target.attachedToTarget',
|
message: {
|
||||||
params: targetParams
|
method: 'Target.attachedToTarget',
|
||||||
} as CDPEvent,
|
params: targetParams
|
||||||
source: 'extension'
|
} as CDPEvent,
|
||||||
})
|
source: 'extension'
|
||||||
|
})
|
||||||
|
}
|
||||||
} else if (method === 'Target.detachedFromTarget') {
|
} else if (method === 'Target.detachedFromTarget') {
|
||||||
const detachParams = params as Protocol.Target.DetachedFromTargetEvent
|
const detachParams = params as Protocol.Target.DetachedFromTargetEvent
|
||||||
connectedTargets.delete(detachParams.sessionId)
|
connectedTargets.delete(detachParams.sessionId)
|
||||||
|
|||||||
Reference in New Issue
Block a user