diff --git a/src/McpContext.ts b/src/McpContext.ts index 1aacb391c..241636978 100644 --- a/src/McpContext.ts +++ b/src/McpContext.ts @@ -178,33 +178,6 @@ export class McpContext implements Context { return this.#networkCollector.getIdForResource(request); } - resolveCdpElementId( - page: McpPage, - cdpBackendNodeId: number, - ): string | undefined { - if (!cdpBackendNodeId) { - this.logger('no cdpBackendNodeId'); - return; - } - const snapshot = page.textSnapshot; - if (!snapshot) { - this.logger('no text snapshot'); - return; - } - // TODO: index by backendNodeId instead. - const queue = [snapshot.root]; - while (queue.length) { - const current = queue.pop()!; - if (current.backendNodeId === cdpBackendNodeId) { - return current.id; - } - for (const child of current.children) { - queue.push(child); - } - } - return; - } - getNetworkRequests( page: McpPage, includePreservedRequests?: boolean, @@ -782,8 +755,7 @@ export class McpContext implements Context { const data = devtoolsData ?? (await this.getDevToolsData(page)); if (data?.cdpBackendNodeId) { snapshot.hasSelectedElement = true; - snapshot.selectedElementUid = this.resolveCdpElementId( - page, + snapshot.selectedElementUid = page.resolveCdpElementId( data?.cdpBackendNodeId, ); } diff --git a/src/McpPage.ts b/src/McpPage.ts index 01f8473c2..35898d326 100644 --- a/src/McpPage.ts +++ b/src/McpPage.ts @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {logger} from './logger.js'; import type { Dialog, ElementHandle, @@ -164,4 +165,28 @@ export class McpPage implements ContextPage { getAXNodeByUid(uid: string) { return this.textSnapshot?.idToNode.get(uid); } + + resolveCdpElementId(cdpBackendNodeId: number): string | undefined { + if (!cdpBackendNodeId) { + logger('no cdpBackendNodeId'); + return; + } + const snapshot = this.textSnapshot; + if (!snapshot) { + logger('no text snapshot'); + return; + } + // TODO: index by backendNodeId instead. + const queue = [snapshot.root]; + while (queue.length) { + const current = queue.pop()!; + if (current.backendNodeId === cdpBackendNodeId) { + return current.id; + } + for (const child of current.children) { + queue.push(child); + } + } + return; + } } diff --git a/src/McpResponse.ts b/src/McpResponse.ts index 0d5f926ec..45e587354 100644 --- a/src/McpResponse.ts +++ b/src/McpResponse.ts @@ -513,10 +513,7 @@ export class McpResponse implements Response { context, this.#page, ), - elementIdResolver: context.resolveCdpElementId.bind( - context, - this.#page, - ), + elementIdResolver: this.#page.resolveCdpElementId.bind(this.#page), }); if (!formatter.isValid()) { throw new Error(