mirror of
https://github.com/ChromeDevTools/chrome-devtools-mcp.git
synced 2026-11-04 15:00:11 +00:00
fix: work around NTP iframes causing hangs (#504)
Drive-by: some logging
This commit is contained in:
1 parent
2f448e84ea
commit
cca5ff471c
3 files changed
+10
No files matched your search
@@ -343,11 +343,13 @@ export class McpContext implements Context {
|
||||
}
|
||||
|
||||
async detectOpenDevToolsWindows() {
|
||||
this.logger('Detecting open DevTools windows');
|
||||
const pages = await this.browser.pages();
|
||||
this.#pageToDevToolsPage = new Map<Page, Page>();
|
||||
for (const devToolsPage of pages) {
|
||||
if (devToolsPage.url().startsWith('devtools://')) {
|
||||
try {
|
||||
this.logger('Calling getTargetInfo for ' + devToolsPage.url());
|
||||
const data = await devToolsPage
|
||||
// @ts-expect-error no types for _client().
|
||||
._client()
|
||||
|
||||
@@ -8,6 +8,7 @@ import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
|
||||
import {logger} from './logger.js';
|
||||
import type {
|
||||
Browser,
|
||||
ChromeReleaseChannel,
|
||||
@@ -29,6 +30,10 @@ function makeTargetFilter() {
|
||||
if (target.url() === 'chrome://newtab/') {
|
||||
return true;
|
||||
}
|
||||
if (target.url().startsWith('https://ogs.google.com/widget/app/so')) {
|
||||
// Some special frame on the NTP that is not picked up by CDP-auto-attach.
|
||||
return false;
|
||||
}
|
||||
for (const prefix of ignoredPrefixes) {
|
||||
if (target.url().startsWith(prefix)) {
|
||||
return false;
|
||||
@@ -65,7 +70,9 @@ export async function ensureBrowserConnected(options: {
|
||||
throw new Error('Either browserURL or wsEndpoint must be provided');
|
||||
}
|
||||
|
||||
logger('Connecting Puppeteer to ', JSON.stringify(connectOptions));
|
||||
browser = await puppeteer.connect(connectOptions);
|
||||
logger('Connected Puppeteer');
|
||||
return browser;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +129,7 @@ function registerTool(tool: ToolDefinition): void {
|
||||
try {
|
||||
logger(`${tool.name} request: ${JSON.stringify(params, null, ' ')}`);
|
||||
const context = await getContext();
|
||||
logger(`${tool.name} context: resolved`);
|
||||
await context.detectOpenDevToolsWindows();
|
||||
const response = new McpResponse();
|
||||
await tool.handler(
|
||||
|
||||
Reference in new issue
Block a user