Skip to content

Commit 73be1b4

Browse files
build: extract bundled in a separate config (#474)
1 parent 1560ff2 commit 73be1b4

File tree

4 files changed

+27
-18
lines changed

4 files changed

+27
-18
lines changed

.github/dependabot.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,20 @@ updates:
1717
exclude-patterns:
1818
- 'puppeteer*'
1919
- 'chrome-devtools-frontend'
20+
- '@modelcontextprotocol/sdk'
21+
- 'yargs'
22+
- 'debug'
23+
- 'core-js'
2024
patterns:
2125
- '*'
22-
puppeteer:
26+
bundled:
2327
patterns:
2428
- 'puppeteer*'
25-
chrome-devtools-frontend:
26-
patterns:
2729
- 'chrome-devtools-frontend'
30+
- '@modelcontextprotocol/sdk'
31+
- 'yargs'
32+
- 'debug'
33+
- 'core-js'
2834
- package-ecosystem: github-actions
2935
directory: /
3036
schedule:

src/McpContext.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,8 @@ export class McpContext implements Context {
362362
this.#pageToDevToolsPage.set(page, devToolsPage);
363363
}
364364
}
365-
} catch {
366-
// no-op
365+
} catch (error) {
366+
this.logger('Issue occurred while trying to find DevTools', error);
367367
}
368368
}
369369
}

tests/McpContext.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,7 @@ describe('McpContext', () => {
9191
assert.ok(context.getDevToolsPage(page));
9292
},
9393
{
94-
autoOpenDevToos: true,
95-
force: true,
94+
autoOpenDevTools: true,
9695
},
9796
);
9897
});

tests/utils.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,25 @@ import {McpContext} from '../src/McpContext.js';
1212
import {McpResponse} from '../src/McpResponse.js';
1313
import {stableIdSymbol} from '../src/PageCollector.js';
1414

15-
let browser: Browser | undefined;
15+
const browsers = new Map<string, Browser>();
1616

1717
export async function withBrowser(
1818
cb: (response: McpResponse, context: McpContext) => Promise<void>,
19-
options: {debug?: boolean; autoOpenDevToos?: boolean; force?: boolean} = {},
19+
options: {debug?: boolean; autoOpenDevTools?: boolean} = {},
2020
) {
21-
const {debug = false} = options;
22-
if (!browser || options.force) {
23-
browser = await puppeteer.launch({
24-
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,
25-
headless: !debug,
26-
defaultViewport: null,
27-
devtools: options.autoOpenDevToos ?? false,
28-
handleDevToolsAsPage: true,
29-
});
21+
const launchOptions = {
22+
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,
23+
headless: !options.debug,
24+
defaultViewport: null,
25+
devtools: options.autoOpenDevTools ?? false,
26+
handleDevToolsAsPage: true,
27+
};
28+
const key = JSON.stringify(launchOptions);
29+
30+
let browser = browsers.get(key);
31+
if (!browser) {
32+
browser = await puppeteer.launch(launchOptions);
33+
browsers.set(key, browser);
3034
}
3135
const newPage = await browser.newPage();
3236
// Close other pages.

0 commit comments

Comments
 (0)