@@ -28,7 +28,7 @@ import { mkdirIfNeeded } from './utils/fileUtils';
2828import { rewriteErrorMessage } from '../utils/isomorphic/stackTrace' ;
2929import { HarRecorder } from './har/harRecorder' ;
3030import { helper } from './helper' ;
31- import { SdkObject } from './instrumentation' ;
31+ import { EventMap , SdkObject } from './instrumentation' ;
3232import * as network from './network' ;
3333import { InitScript } from './page' ;
3434import { Page , PageBinding } from './page' ;
@@ -39,6 +39,7 @@ import * as rawStorageSource from '../generated/storageScriptSource';
3939
4040import type { Artifact } from './artifact' ;
4141import type { Browser , BrowserOptions } from './browser' ;
42+ import type { ConsoleMessage } from './console' ;
4243import type { Download } from './download' ;
4344import type * as frames from './frames' ;
4445import type { Progress } from './progress' ;
@@ -47,25 +48,44 @@ import type { SerializedStorage } from '@injected/storageScript';
4748import type * as types from './types' ;
4849import type * as channels from '@protocol/channels' ;
4950
50- export abstract class BrowserContext extends SdkObject {
51- static Events = {
52- Console : 'console' ,
53- Close : 'close' ,
54- Page : 'page' ,
55- // Can't use just 'error' due to node.js special treatment of error events.
56- // @see https://nodejs.org/api/events.html#events_error_events
57- PageError : 'pageerror' ,
58- Request : 'request' ,
59- Response : 'response' ,
60- RequestFailed : 'requestfailed' ,
61- RequestFinished : 'requestfinished' ,
62- RequestAborted : 'requestaborted' ,
63- RequestFulfilled : 'requestfulfilled' ,
64- RequestContinued : 'requestcontinued' ,
65- BeforeClose : 'beforeclose' ,
66- VideoStarted : 'videostarted' ,
67- RecorderEvent : 'recorderevent' ,
68- } ;
51+ const BrowserContextEvent = {
52+ Console : 'console' ,
53+ Close : 'close' ,
54+ Page : 'page' ,
55+ // Can't use just 'error' due to node.js special treatment of error events.
56+ // @see https://nodejs.org/api/events.html#events_error_events
57+ PageError : 'pageerror' ,
58+ Request : 'request' ,
59+ Response : 'response' ,
60+ RequestFailed : 'requestfailed' ,
61+ RequestFinished : 'requestfinished' ,
62+ RequestAborted : 'requestaborted' ,
63+ RequestFulfilled : 'requestfulfilled' ,
64+ RequestContinued : 'requestcontinued' ,
65+ BeforeClose : 'beforeclose' ,
66+ VideoStarted : 'videostarted' ,
67+ RecorderEvent : 'recorderevent' ,
68+ } as const ;
69+
70+ export type BrowserContextEventMap = {
71+ [ BrowserContextEvent . Console ] : [ message : ConsoleMessage ] ;
72+ [ BrowserContextEvent . Close ] : [ ] ;
73+ [ BrowserContextEvent . Page ] : [ page : Page ] ;
74+ [ BrowserContextEvent . PageError ] : [ error : Error , page : Page ] ;
75+ [ BrowserContextEvent . Request ] : [ request : network . Request ] ;
76+ [ BrowserContextEvent . Response ] : [ response : network . Response ] ;
77+ [ BrowserContextEvent . RequestFailed ] : [ request : network . Request ] ;
78+ [ BrowserContextEvent . RequestFinished ] : [ requestAndResponse : { request : network . Request , response : network . Response | null } ] ;
79+ [ BrowserContextEvent . RequestAborted ] : [ request : network . Request ] ;
80+ [ BrowserContextEvent . RequestFulfilled ] : [ request : network . Request ] ;
81+ [ BrowserContextEvent . RequestContinued ] : [ request : network . Request ] ;
82+ [ BrowserContextEvent . BeforeClose ] : [ ] ;
83+ [ BrowserContextEvent . VideoStarted ] : [ artifact : Artifact ] ;
84+ [ BrowserContextEvent . RecorderEvent ] : [ event : { event : 'actionAdded' | 'actionUpdated' | 'signalAdded' , data : any , page : Page , code : string } ] ;
85+ } ;
86+
87+ export abstract class BrowserContext < EM extends EventMap = EventMap > extends SdkObject < BrowserContextEventMap | EM > {
88+ static Events = BrowserContextEvent ;
6989
7090 readonly _pageBindings = new Map < string , PageBinding > ( ) ;
7191 readonly _options : types . BrowserContextOptions ;
0 commit comments