@@ -39,6 +39,11 @@ export interface TextSnapshot {
3939 snapshotId : string ;
4040}
4141
42+ interface McpContextOptions {
43+ // Whether the DevTools windows are exposed as pages.
44+ devtools : boolean ,
45+ }
46+
4247const DEFAULT_TIMEOUT = 5_000 ;
4348const NAVIGATION_TIMEOUT = 10_000 ;
4449
@@ -92,15 +97,18 @@ export class McpContext implements Context {
9297 #traceResults: TraceResult [ ] = [ ] ;
9398
9499 #locatorClass: typeof Locator ;
100+ #options: McpContextOptions ;
95101
96102 private constructor (
97103 browser : Browser ,
98104 logger : Debugger ,
105+ options : McpContextOptions ,
99106 locatorClass : typeof Locator ,
100107 ) {
101108 this . browser = browser ;
102109 this . logger = logger ;
103110 this . #locatorClass = locatorClass ;
111+ this . #options = options ;
104112
105113 this . #networkCollector = new NetworkCollector ( this . browser ) ;
106114
@@ -132,10 +140,11 @@ export class McpContext implements Context {
132140 static async from (
133141 browser : Browser ,
134142 logger : Debugger ,
143+ opts : McpContextOptions ,
135144 /* Let tests use unbundled Locator class to avoid overly strict checks within puppeteer that fail when mixing bundled and unbundled class instances */
136145 locatorClass : typeof Locator = Locator ,
137146 ) {
138- const context = new McpContext ( browser , logger , locatorClass ) ;
147+ const context = new McpContext ( browser , logger , opts , locatorClass ) ;
139148 await context . #init( ) ;
140149 return context ;
141150 }
@@ -315,7 +324,12 @@ export class McpContext implements Context {
315324 * Creates a snapshot of the pages.
316325 */
317326 async createPagesSnapshot ( ) : Promise < Page [ ] > {
318- this . #pages = await this . browser . pages ( ) ;
327+ this . #pages = ( await this . browser . pages ( ) ) . filter ( page => {
328+ if ( this . #options. devtools ) {
329+ return true ;
330+ }
331+ return ! page . url ( ) . startsWith ( 'devtools://' ) ;
332+ } ) ;
319333 return this . #pages;
320334 }
321335
0 commit comments