@@ -77,18 +77,25 @@ export class BidiFirefox extends BrowserType {
77
77
return env ;
78
78
}
79
79
80
- override attemptToGracefullyCloseBrowser ( transport : ConnectionTransport ) : void {
81
- // browser.close does not work without an active session, make sure
82
- // to create a new session first. The command will fail if a session
83
- // already exists, we'll just ignore the error.
84
- transport . send ( { method : 'session.new' , params : {
85
- capabilities : {
86
- alwaysMatch : {
87
- unhandledPromptBehavior : { default : 'ignore' } ,
88
- webSocketUrl : true
80
+ override async attemptToGracefullyCloseBrowser ( transport : ConnectionTransport ) : Promise < void > {
81
+ if ( ! transport . onmessage ) {
82
+ // browser.close does not work without an active session. If there is no connection
83
+ // created with the transport, make sure to create a new session first.
84
+ transport . send ( { method : 'session.new' , params : {
85
+ capabilities : {
86
+ alwaysMatch : {
87
+ unhandledPromptBehavior : { default : 'ignore' } ,
88
+ webSocketUrl : true
89
+ }
89
90
}
90
- }
91
- } , id : kShutdownSessionNewMessageId } ) ;
91
+ } , id : kShutdownSessionNewMessageId } ) ;
92
+ await new Promise ( resolve => {
93
+ transport . onmessage = message => {
94
+ if ( message . id === kShutdownSessionNewMessageId )
95
+ resolve ( true ) ;
96
+ } ;
97
+ } ) ;
98
+ }
92
99
transport . send ( { method : 'browser.close' , params : { } , id : kBrowserCloseMessageId } ) ;
93
100
}
94
101
0 commit comments