diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d5de32ca..942421fa 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -17,14 +17,20 @@ updates: exclude-patterns: - 'puppeteer*' - 'chrome-devtools-frontend' + - '@modelcontextprotocol/sdk' + - 'yargs' + - 'debug' + - 'core-js' patterns: - '*' - puppeteer: + bundled: patterns: - 'puppeteer*' - chrome-devtools-frontend: - patterns: - 'chrome-devtools-frontend' + - '@modelcontextprotocol/sdk' + - 'yargs' + - 'debug' + - 'core-js' - package-ecosystem: github-actions directory: / schedule: diff --git a/src/McpContext.ts b/src/McpContext.ts index db7ab002..586c2ba7 100644 --- a/src/McpContext.ts +++ b/src/McpContext.ts @@ -362,8 +362,8 @@ export class McpContext implements Context { this.#pageToDevToolsPage.set(page, devToolsPage); } } - } catch { - // no-op + } catch (error) { + this.logger('Issue occurred while trying to find DevTools', error); } } } diff --git a/tests/McpContext.test.ts b/tests/McpContext.test.ts index 64e2110d..57327117 100644 --- a/tests/McpContext.test.ts +++ b/tests/McpContext.test.ts @@ -91,8 +91,7 @@ describe('McpContext', () => { assert.ok(context.getDevToolsPage(page)); }, { - autoOpenDevToos: true, - force: true, + autoOpenDevTools: true, }, ); }); diff --git a/tests/utils.ts b/tests/utils.ts index d366767d..92834db6 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -12,21 +12,25 @@ import {McpContext} from '../src/McpContext.js'; import {McpResponse} from '../src/McpResponse.js'; import {stableIdSymbol} from '../src/PageCollector.js'; -let browser: Browser | undefined; +const browsers = new Map(); export async function withBrowser( cb: (response: McpResponse, context: McpContext) => Promise, - options: {debug?: boolean; autoOpenDevToos?: boolean; force?: boolean} = {}, + options: {debug?: boolean; autoOpenDevTools?: boolean} = {}, ) { - const {debug = false} = options; - if (!browser || options.force) { - browser = await puppeteer.launch({ - executablePath: process.env.PUPPETEER_EXECUTABLE_PATH, - headless: !debug, - defaultViewport: null, - devtools: options.autoOpenDevToos ?? false, - handleDevToolsAsPage: true, - }); + const launchOptions = { + executablePath: process.env.PUPPETEER_EXECUTABLE_PATH, + headless: !options.debug, + defaultViewport: null, + devtools: options.autoOpenDevTools ?? false, + handleDevToolsAsPage: true, + }; + const key = JSON.stringify(launchOptions); + + let browser = browsers.get(key); + if (!browser) { + browser = await puppeteer.launch(launchOptions); + browsers.set(key, browser); } const newPage = await browser.newPage(); // Close other pages.