Skip to content

chore(bidi): create as Bidi session before browser.close #36482

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

yury-s
Copy link
Member

@yury-s yury-s commented Jun 27, 2025

No description provided.

@yury-s
Copy link
Member Author

yury-s commented Jun 27, 2025

Note that the test is still failing as we are closing the transport concurrently:

$ DEBUG=pw:browser MAX_LOG_LENGTH=1000 BIDI_FFPATH="/Users/yurys/playwright/firefox/mac_arm-nightly_141.0a1/Firefox Nightly.app/Contents/MacOS/firefox"  npm run biditest -- --project='moz-firefox-*'  library/browsertype-launch.spec.ts -g 'should handle exception'

> playwright-internal@1.54.0-next biditest
> playwright test --config=tests/bidi/playwright.config.ts --project=moz-firefox-* library/browsertype-launch.spec.ts -g should handle exception

Using executable at /Users/yurys/playwright/firefox/mac_arm-nightly_141.0a1/Firefox Nightly.app/Contents/MacOS/firefox

Running 1 test using 1 worker
[moz-firefox-library] › tests/library/browsertype-launch.spec.ts:89:3 › should handle exception
  pw:browser <launching> /Users/yurys/playwright/firefox/mac_arm-nightly_141.0a1/Firefox Nightly.app/Contents/MacOS/firefox --remote-debugging-port=0 --headless --profile /var/folders/t3/_mbh6z155sz1cr7prkpn9lsh0000gn/T/playwright__bidiFirefoxdev_profile-h3OFaz +0ms
  pw:browser <launched> pid=40509 +2ms
  pw:browser [pid=40509][err] *** You are running in headless mode. +59ms
  pw:browser [pid=40509][err] WebDriver BiDi listening on ws://127.0.0.1:58489 +632ms
  pw:browser <ws connecting> ws://127.0.0.1:58489/session +0ms
  pw:browser [pid=40509][out] 1751050255366	RemoteAgent	INFO	Perform WebSocket upgrade for incoming connection from 127.0.0.1:58490 +15ms
  pw:browser <ws connected> ws://127.0.0.1:58489/session +113ms
  pw:browser [pid=40509] <gracefully close start> +0ms
  pw:browser <ws disconnecting> ws://127.0.0.1:58489/session +1ms
  pw:browser <ws disconnecting> ws://127.0.0.1:58489/session +0ms
  pw:browser <ws disconnected> ws://127.0.0.1:58489/session code=1000 reason= +44ms
  pw:browser [pid=40509][err] JavaScript error: , line 0: uncaught exception: store error: IoError(Os { code: 22, kind: InvalidInput, message: "Invalid argument" }) +20ms
  pw:browser [pid=40509][out] console.error: services.settings:  +4ms
  pw:browser [pid=40509][out]   Remote Settings startup changesets bundle could not be extracted (SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data) +2ms
  pw:browser [pid=40509][out] console.error: services.settings:  +0ms
  pw:browser [pid=40509][out] Object +0ms
  pw:browser [pid=40509][out]   - prototype Object +1ms
  pw:browser [pid=40509][out]     - columnNumber = 0 +0ms
  pw:browser [pid=40509][out]     - data = null +0ms
  pw:browser [pid=40509][out]     - filename = resource://gre/modules/ServiceRequest.sys.mjs +0ms
  pw:browser [pid=40509][out]     - lineNumber = 126 +0ms
  pw:browser [pid=40509][out]     - location = {"name":"open","filename":"resource://gre/modules/ServiceRequest.sys.mjs","sourceId":26,"lineNumber":126,"columnNumber":11,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch/<","sourceId":25,"lineNumber":268,"columnNumber":15,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch","sourceId":25,"lineNumber":219,"columnNumber":12,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetchLatestChanges","sourceId":25,"lineNumber":429,"columnNumber":34,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"sync","sourceId":23,"lineNumber":650,"columnNumber":42,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"get/this._importingPromise<","sourceId":23,"lineNumber":492,"columnNumber":28,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://gre/modules/AsyncShutdown.sys.mjs","name":"observe","sourceId":16,"lineNumber":569,"columnNumber":17,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/shared/Browser.sys.mjs","name":"quit","sourceId":231,"lineNumber":94,"columnNumber":22,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs","name":"onPacket","sourceId":196,"lineNumber":254,"columnNumber":20,"asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"quit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"open@resource://gre/modules/ServiceRequest.sys.mjs:126:11\nfetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}} +0ms
  pw:browser [pid=40509][out]     - message =  +0ms
  pw:browser [pid=40509][out]     - name =  +0ms
  pw:browser [pid=40509][out]     - result = 2152071198 +0ms
  pw:browser [pid=40509][out]     - stack = open@resource://gre/modules/ServiceRequest.sys.mjs:126:11|fetch/<@resource://services-settings/Utils.sys.mjs:268:15|fetch@resource://services-settings/Utils.sys.mjs:219:12|fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34|sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42|get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28|observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17|quit@chrome://remote/content/shared/Browser.sys.mjs:94:22|onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20| +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out] console.error: services.settings:  +0ms
  pw:browser [pid=40509][out] Object +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out]     - columnNumber = 0 +0ms
  pw:browser [pid=40509][out]     - data = null +0ms
  pw:browser [pid=40509][out]     - filename = resource://gre/modules/ServiceRequest.sys.mjs +0ms
  pw:browser [pid=40509][out]     - lineNumber = 126 +0ms
  pw:browser [pid=40509][out]     - location = {"name":"open","filename":"resource://gre/modules/ServiceRequest.sys.mjs","sourceId":26,"lineNumber":126,"columnNumber":11,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch/<","sourceId":25,"lineNumber":268,"columnNumber":15,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch","sourceId":25,"lineNumber":219,"columnNumber":12,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetchLatestChanges","sourceId":25,"lineNumber":429,"columnNumber":34,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"sync","sourceId":23,"lineNumber":650,"columnNumber":42,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"get/this._importingPromise<","sourceId":23,"lineNumber":492,"columnNumber":28,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://gre/modules/AsyncShutdown.sys.mjs","name":"observe","sourceId":16,"lineNumber":569,"columnNumber":17,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/shared/Browser.sys.mjs","name":"quit","sourceId":231,"lineNumber":94,"columnNumber":22,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs","name":"onPacket","sourceId":196,"lineNumber":254,"columnNumber":20,"asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"quit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"open@resource://gre/modules/ServiceRequest.sys.mjs:126:11\nfetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}} +0ms
  pw:browser [pid=40509][out]     - message =  +0ms
  pw:browser [pid=40509][out]     - name =  +0ms
  pw:browser [pid=40509][out]     - result = 2152071198 +0ms
  pw:browser [pid=40509][out]     - stack = open@resource://gre/modules/ServiceRequest.sys.mjs:126:11|fetch/<@resource://services-settings/Utils.sys.mjs:268:15|fetch@resource://services-settings/Utils.sys.mjs:219:12|fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34|sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42|get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28|observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17|quit@chrome://remote/content/shared/Browser.sys.mjs:94:22|onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20| +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out] console.error: services.settings:  +0ms
  pw:browser [pid=40509][out] Object +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out]     - columnNumber = 0 +0ms
  pw:browser [pid=40509][out]     - data = null +0ms
  pw:browser [pid=40509][out]     - filename = resource://gre/modules/ServiceRequest.sys.mjs +0ms
  pw:browser [pid=40509][out]     - lineNumber = 126 +0ms
  pw:browser [pid=40509][out]     - location = {"name":"open","filename":"resource://gre/modules/ServiceRequest.sys.mjs","sourceId":26,"lineNumber":126,"columnNumber":11,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch/<","sourceId":25,"lineNumber":268,"columnNumber":15,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch","sourceId":25,"lineNumber":219,"columnNumber":12,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetchLatestChanges","sourceId":25,"lineNumber":429,"columnNumber":34,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"sync","sourceId":23,"lineNumber":650,"columnNumber":42,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"get/this._importingPromise<","sourceId":23,"lineNumber":492,"columnNumber":28,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://gre/modules/AsyncShutdown.sys.mjs","name":"observe","sourceId":16,"lineNumber":569,"columnNumber":17,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/shared/Browser.sys.mjs","name":"quit","sourceId":231,"lineNumber":94,"columnNumber":22,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs","name":"onPacket","sourceId":196,"lineNumber":254,"columnNumber":20,"asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"quit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"open@resource://gre/modules/ServiceRequest.sys.mjs:126:11\nfetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}} +0ms
  pw:browser [pid=40509][out]     - message =  +1ms
  pw:browser [pid=40509][out]     - name =  +0ms
  pw:browser [pid=40509][out]     - result = 2152071198 +0ms
  pw:browser [pid=40509][out]     - stack = open@resource://gre/modules/ServiceRequest.sys.mjs:126:11|fetch/<@resource://services-settings/Utils.sys.mjs:268:15|fetch@resource://services-settings/Utils.sys.mjs:219:12|fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34|sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42|get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28|observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17|quit@chrome://remote/content/shared/Browser.sys.mjs:94:22|onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20| +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out] console.error: services.settings:  +0ms
  pw:browser [pid=40509][out] Object +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out]     - columnNumber = 0 +0ms
  pw:browser [pid=40509][out]     - data = null +0ms
  pw:browser [pid=40509][out]     - filename = resource://gre/modules/ServiceRequest.sys.mjs +0ms
  pw:browser [pid=40509][out]     - lineNumber = 126 +0ms
  pw:browser [pid=40509][out]     - location = {"name":"open","filename":"resource://gre/modules/ServiceRequest.sys.mjs","sourceId":26,"lineNumber":126,"columnNumber":11,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch/<","sourceId":25,"lineNumber":268,"columnNumber":15,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch","sourceId":25,"lineNumber":219,"columnNumber":12,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetchLatestChanges","sourceId":25,"lineNumber":429,"columnNumber":34,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"sync","sourceId":23,"lineNumber":650,"columnNumber":42,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"get/this._importingPromise<","sourceId":23,"lineNumber":492,"columnNumber":28,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://gre/modules/AsyncShutdown.sys.mjs","name":"observe","sourceId":16,"lineNumber":569,"columnNumber":17,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/shared/Browser.sys.mjs","name":"quit","sourceId":231,"lineNumber":94,"columnNumber":22,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs","name":"onPacket","sourceId":196,"lineNumber":254,"columnNumber":20,"asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"quit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"open@resource://gre/modules/ServiceRequest.sys.mjs:126:11\nfetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}} +0ms
  pw:browser [pid=40509][out]     - message =  +0ms
  pw:browser [pid=40509][out]     - name =  +0ms
  pw:browser [pid=40509][out]     - result = 2152071198 +0ms
  pw:browser [pid=40509][out]     - stack = open@resource://gre/modules/ServiceRequest.sys.mjs:126:11|fetch/<@resource://services-settings/Utils.sys.mjs:268:15|fetch@resource://services-settings/Utils.sys.mjs:219:12|fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34|sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42|get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28|observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17|quit@chrome://remote/content/shared/Browser.sys.mjs:94:22|onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20| +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out] console.error: services.settings:  +0ms
  pw:browser [pid=40509][out] Object +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out]     - columnNumber = 0 +0ms
  pw:browser [pid=40509][out]     - data = null +0ms
  pw:browser [pid=40509][out]     - filename = resource://gre/modules/ServiceRequest.sys.mjs +0ms
  pw:browser [pid=40509][out]     - lineNumber = 126 +0ms
  pw:browser [pid=40509][out]     - location = {"name":"open","filename":"resource://gre/modules/ServiceRequest.sys.mjs","sourceId":26,"lineNumber":126,"columnNumber":11,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch/<","sourceId":25,"lineNumber":268,"columnNumber":15,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch","sourceId":25,"lineNumber":219,"columnNumber":12,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetchLatestChanges","sourceId":25,"lineNumber":429,"columnNumber":34,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"sync","sourceId":23,"lineNumber":650,"columnNumber":42,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"get/this._importingPromise<","sourceId":23,"lineNumber":492,"columnNumber":28,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://gre/modules/AsyncShutdown.sys.mjs","name":"observe","sourceId":16,"lineNumber":569,"columnNumber":17,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/shared/Browser.sys.mjs","name":"quit","sourceId":231,"lineNumber":94,"columnNumber":22,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs","name":"onPacket","sourceId":196,"lineNumber":254,"columnNumber":20,"asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"quit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"open@resource://gre/modules/ServiceRequest.sys.mjs:126:11\nfetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}} +0ms
  pw:browser [pid=40509][out]     - message =  +0ms
  pw:browser [pid=40509][out]     - name =  +0ms
  pw:browser [pid=40509][out]     - result = 2152071198 +0ms
  pw:browser [pid=40509][out]     - stack = open@resource://gre/modules/ServiceRequest.sys.mjs:126:11|fetch/<@resource://services-settings/Utils.sys.mjs:268:15|fetch@resource://services-settings/Utils.sys.mjs:219:12|fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34|sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42|get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28|observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17|quit@chrome://remote/content/shared/Browser.sys.mjs:94:22|onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20| +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out] console.error: services.settings:  +0ms
  pw:browser [pid=40509][out] Object +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][out]     - columnNumber = 0 +0ms
  pw:browser [pid=40509][out]     - data = null +0ms
  pw:browser [pid=40509][out]     - filename = resource://gre/modules/ServiceRequest.sys.mjs +0ms
  pw:browser [pid=40509][out]     - lineNumber = 126 +0ms
  pw:browser [pid=40509][out]     - location = {"name":"open","filename":"resource://gre/modules/ServiceRequest.sys.mjs","sourceId":26,"lineNumber":126,"columnNumber":11,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch/<","sourceId":25,"lineNumber":268,"columnNumber":15,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetch","sourceId":25,"lineNumber":219,"columnNumber":12,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/Utils.sys.mjs","name":"fetchLatestChanges","sourceId":25,"lineNumber":429,"columnNumber":34,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"sync","sourceId":23,"lineNumber":650,"columnNumber":42,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://services-settings/RemoteSettingsClient.sys.mjs","name":"get/this._importingPromise<","sourceId":23,"lineNumber":492,"columnNumber":28,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"resource://gre/modules/AsyncShutdown.sys.mjs","name":"observe","sourceId":16,"lineNumber":569,"columnNumber":17,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/shared/Browser.sys.mjs","name":"quit","sourceId":231,"lineNumber":94,"columnNumber":22,"asyncCause":null,"asyncCaller":null,"caller":{"filename":"chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs","name":"onPacket","sourceId":196,"lineNumber":254,"columnNumber":20,"asyncCause":null,"asyncCaller":null,"caller":null,"formattedStack":"onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"quit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"fetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}},"formattedStack":"open@resource://gre/modules/ServiceRequest.sys.mjs:126:11\nfetch/<@resource://services-settings/Utils.sys.mjs:268:15\nfetch@resource://services-settings/Utils.sys.mjs:219:12\nfetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34\nsync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42\nget/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28\nobserve@resource://gre/modules/AsyncShutdown.sys.mjs:569:17\nquit@chrome://remote/content/shared/Browser.sys.mjs:94:22\nonPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20\n","nativeSavedFrame":{}} +0ms
  pw:browser [pid=40509][out]     - message =  +0ms
  pw:browser [pid=40509][out]     - name =  +1ms
  pw:browser [pid=40509][out]     - result = 2152071198 +0ms
  pw:browser [pid=40509][out]     - stack = open@resource://gre/modules/ServiceRequest.sys.mjs:126:11|fetch/<@resource://services-settings/Utils.sys.mjs:268:15|fetch@resource://services-settings/Utils.sys.mjs:219:12|fetchLatestChanges@resource://services-settings/Utils.sys.mjs:429:34|sync@resource://services-settings/RemoteSettingsClient.sys.mjs:650:42|get/this._importingPromise<@resource://services-settings/RemoteSettingsClient.sys.mjs:492:28|observe@resource://gre/modules/AsyncShutdown.sys.mjs:569:17|quit@chrome://remote/content/shared/Browser.sys.mjs:94:22|onPacket@chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs:254:20| +0ms
  pw:browser [pid=40509][out]   - prototype Object +0ms
  pw:browser [pid=40509][err] JavaScript error: resource://gre/modules/AsyncShutdown.sys.mjs, line 569: uncaught exception: undefined +19ms
  pw:browser [pid=40509][out] WARNING: At least one completion condition is taking too long to complete. Conditions: [{"name":"XPIProvider shutdown","state":"(none)","filename":"resource://gre/modules/addons/XPIProvider.sys.mjs","lineNumber":2837,"stack":["resource://gre/modules/addons/XPIProvider.sys.mjs:startup:2837","resource://gre/modules/AddonManager.sys.mjs:callProvider:228","resource://gre/modules/AddonManager.sys.mjs:_startProvider:537","resource://gre/modules/AddonManager.sys.mjs:startup:750","resource://gre/modules/AddonManager.sys.mjs:startup:3702","resource://gre/modules/amManager.sys.mjs:observe:73"]}] Barrier: quit-application +10s

@yury-s yury-s requested a review from dgozman June 27, 2025 18:52

This comment has been minimized.

@yury-s yury-s requested a review from whimboo June 27, 2025 21:33
@yury-s
Copy link
Member Author

yury-s commented Jun 27, 2025

Turns out that we have to wait for the session to be created before sending browser.close. But we also want to close the trasport (WebSocket) ASAP, which means we'll never actually handle the response. Right thing would be for the browser to exit if the connection terminates before there are any Bidi sessions have been created.

This comment has been minimized.

transport.send({ method: 'session.new', params: {
capabilities: {
alwaysMatch: {
unhandledPromptBehavior: { default: 'ignore' },
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason why you need to set this capability? browser.close is closing all tabs first before shutting down the browser by not opening any beforeunload prompt.

Copy link
Member Author

@yury-s yury-s Jul 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was just copied over from the other place. Omitting all the params didn't work, so I just preserved all. I can drop this option if it makes no difference.

The bigger problem still stands. In order to close the browser here, we must create a Bidi session first. This means that even in the situation when browser initialization failed for some reason, we still have to create the session. With the pipe channel in the bundled browsers we can just close the Playwright's end of the pipe and have the browser exit gracefully. It would be more reliable to have something similar configurable with WebSocket in Bidi, as it's the only supported transport in Bidi. E.g. when we launch the browser from Playwright, we already know that it is going to be its exclusive client and if the socket connection is terminated, the browser should exit or otherwise the process will be killed by a signal anyway. If there is a use case when the browser needs to support multiple Bidi connections (parallel or connect/disconnect/connect scenario) over the WebSocket, the behavior could be configured via a flag at the browser launch time. @whimboo is it something that Firefox would consider?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yury-s I would suggest to file a BiDi issue so that we can get this scenario discussed at the spec level. If it's a feature that everyone agrees with we could implement it in a cross-browser way. If not we could consider a special treatment in Firefox.

Copy link
Collaborator

@whimboo whimboo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tests are passing with this change so it looks fine to me. Thanks. If you can get rid of these extra caps fine, but if not lets leave as it is.

@yury-s
Copy link
Member Author

yury-s commented Jul 1, 2025

The tests are passing with this change so it looks fine to me. Thanks. If you can get rid of these extra caps fine, but if not lets leave as it is.

Unfortunately, they are not (or they are racy on the bots), see this comment above.

@yury-s yury-s force-pushed the bidi-graceful-shutdown branch from f6e996b to 363d52c Compare July 1, 2025 17:53
@yury-s
Copy link
Member Author

yury-s commented Jul 1, 2025

If you can get rid of these extra caps fine

Yeah, dropped them.

@whimboo
Copy link
Collaborator

whimboo commented Jul 1, 2025

Unfortunately, they are not (or they are racy on the bots), see this comment above.

This is a shutdown hang @aslushnikov was working around as well in the browser repository. I thought that this was fixed in Firefox but maybe it's not (or fully yet).

@yury-s
Copy link
Member Author

yury-s commented Jul 1, 2025

I believe it is a different issue. We are closing transport concurrently with sending the commands in the test scenario, the following patch fixes it, but we need a better way to handle it:

diff --git a/packages/playwright-core/src/server/browserType.ts b/packages/playwright-core/src/server/browserType.ts
index 554382b3a..11839575f 100644
--- a/packages/playwright-core/src/server/browserType.ts
+++ b/packages/playwright-core/src/server/browserType.ts
@@ -260,7 +260,7 @@ export abstract class BrowserType extends SdkObject {
       const stdio = launchedProcess.stdio as unknown as [NodeJS.ReadableStream, NodeJS.WritableStream, NodeJS.WritableStream, NodeJS.WritableStream, NodeJS.ReadableStream];
       transport = new PipeTransport(stdio[3], stdio[4]);
     }
-    progress.cleanupWhenAborted(() => transport.close());
+    // progress.cleanupWhenAborted(() => transport.close());
     return { browserProcess, artifactsDir: prepared.artifactsDir, userDataDir: prepared.userDataDir, transport };
   }
 
diff --git a/packages/playwright-core/src/server/transport.ts b/packages/playwright-core/src/server/transport.ts
index c2fefad6d..d90161453 100644
--- a/packages/playwright-core/src/server/transport.ts
+++ b/packages/playwright-core/src/server/transport.ts
@@ -84,7 +84,7 @@ export class WebSocketTransport implements ConnectionTransport {
     const logUrl = stripQueryParams(url);
     progress?.log(`<ws connecting> ${logUrl}`);
     const transport = new WebSocketTransport(progress, url, logUrl, { ...options, followRedirects: !!options.followRedirects && hadRedirects });
-    progress?.cleanupWhenAborted(() => transport.closeAndWait());
+    // progress?.cleanupWhenAborted(() => transport.closeAndWait());
     const resultPromise = new Promise<{ transport?: WebSocketTransport, redirect?: IncomingMessage }>((fulfill, reject) => {
       transport._ws.on('open', async () => {
         progress?.log(`<ws connected> ${logUrl}`);

Copy link
Contributor

github-actions bot commented Jul 1, 2025

Test results for "tests 1"

1 failed
❌ [playwright-test] › runner.spec.ts:118:5 › should ignore subprocess creation error because of SIGINT @macos-latest-node18-1

8 flaky ⚠️ [chromium-library] › library/popup.spec.ts:258:3 › should not throw when click closes popup @chromium-ubuntu-22.04-node20
⚠️ [chromium-library] › library/chromium/tracing.spec.ts:49:3 › should run with custom categories if provided @chromium-ubuntu-22.04-node22
⚠️ [firefox-library] › library/inspector/cli-codegen-1.spec.ts:1087:7 › cli codegen record › should not throw csp directive violation errors @firefox-ubuntu-22.04-node18
⚠️ [firefox-page] › page/page-wait-for-function.spec.ts:104:3 › should work with strict CSP policy @firefox-ubuntu-22.04-node18
⚠️ [playwright-test] › ui-mode-test-watch.spec.ts:145:5 › should watch all @ubuntu-latest-node18-1
⚠️ [playwright-test] › ui-mode-test-watch.spec.ts:145:5 › should watch all @ubuntu-latest-node22-1
⚠️ [webkit-library] › library/browsercontext-viewport-mobile.spec.ts:97:5 › mobile viewport › should fire orientationchange event @webkit-ubuntu-22.04-node18
⚠️ [webkit-page] › page/page-screenshot.spec.ts:345:5 › page screenshot › should work while navigating @webkit-ubuntu-22.04-node18

47066 passed, 979 skipped
✔️✔️✔️

Merge workflow run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants