Skip to content

Commit f6e996b

Browse files
committed
Wait for the session to be created first
1 parent f9a61d5 commit f6e996b

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

packages/playwright-core/src/server/bidi/bidiFirefox.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,25 @@ export class BidiFirefox extends BrowserType {
7777
return env;
7878
}
7979

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+
}
8990
}
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+
}
9299
transport.send({ method: 'browser.close', params: {}, id: kBrowserCloseMessageId });
93100
}
94101

0 commit comments

Comments
 (0)