@@ -45,6 +45,8 @@ export interface TextSnapshot {
4545interface McpContextOptions {
4646 // Whether the DevTools windows are exposed as pages for debugging of DevTools.
4747 experimentalDevToolsDebugging : boolean ;
48+ // Whether all page-like targets are exposed as pages.
49+ experimentalIncludeAllPages ?: boolean ;
4850}
4951
5052const DEFAULT_TIMEOUT = 5_000 ;
@@ -114,24 +116,32 @@ export class McpContext implements Context {
114116 this . #locatorClass = locatorClass ;
115117 this . #options = options ;
116118
117- this . #networkCollector = new NetworkCollector ( this . browser ) ;
119+ this . #networkCollector = new NetworkCollector (
120+ this . browser ,
121+ undefined ,
122+ this . #options. experimentalIncludeAllPages ,
123+ ) ;
118124
119- this . #consoleCollector = new PageCollector ( this . browser , collect => {
120- return {
121- console : event => {
122- collect ( event ) ;
123- } ,
124- pageerror : event => {
125- if ( event instanceof Error ) {
125+ this . #consoleCollector = new PageCollector (
126+ this . browser ,
127+ collect => {
128+ return {
129+ console : event => {
126130 collect ( event ) ;
127- } else {
128- const error = new Error ( `${ event } ` ) ;
129- error . stack = undefined ;
130- collect ( error ) ;
131- }
132- } ,
133- } as ListenerMap ;
134- } ) ;
131+ } ,
132+ pageerror : event => {
133+ if ( event instanceof Error ) {
134+ collect ( event ) ;
135+ } else {
136+ const error = new Error ( `${ event } ` ) ;
137+ error . stack = undefined ;
138+ collect ( error ) ;
139+ }
140+ } ,
141+ } as ListenerMap ;
142+ } ,
143+ this . #options. experimentalIncludeAllPages ,
144+ ) ;
135145 }
136146
137147 async #init( ) {
@@ -364,7 +374,9 @@ export class McpContext implements Context {
364374 * Creates a snapshot of the pages.
365375 */
366376 async createPagesSnapshot ( ) : Promise < Page [ ] > {
367- const allPages = await this . browser . pages ( ) ;
377+ const allPages = await this . browser . pages (
378+ this . #options. experimentalIncludeAllPages ,
379+ ) ;
368380
369381 this . #pages = allPages . filter ( page => {
370382 // If we allow debugging DevTools windows, return all pages.
@@ -382,7 +394,9 @@ export class McpContext implements Context {
382394
383395 async detectOpenDevToolsWindows ( ) {
384396 this . logger ( 'Detecting open DevTools windows' ) ;
385- const pages = await this . browser . pages ( ) ;
397+ const pages = await this . browser . pages (
398+ this . #options. experimentalIncludeAllPages ,
399+ ) ;
386400 this . #pageToDevToolsPage = new Map < Page , Page > ( ) ;
387401 for ( const devToolsPage of pages ) {
388402 if ( devToolsPage . url ( ) . startsWith ( 'devtools://' ) ) {
0 commit comments