coderef

WebDriver BiDiLimited availability

WebDriver BiDi is a bidirectional protocol that allows a WebDriver client and a browser to communicate with each other.

Not yet supported in all major browsers — check the table and provide a fallback.

Browser support

DesktopChrome
1–125Not supported
126+Supportedsince Jun 11, 2024
Current: 155
Edge
12–125Not supported
126+Supportedsince Jun 13, 2024
Current: 154
Firefox
1–116Not supported
117+Supportedsince Aug 29, 2023
Current: 157
Safari
✕Not supportedup to 27
Current: 27
MobileChrome Android
18–125Not supported
126+Supportedsince Jun 11, 2024
Current: 155
Firefox Android
4–116Not supported
117+Supportedsince Aug 29, 2023
Current: 157
Safari iOS
✕Not supportedup to 27
Current: 27

How to use

Not supported in Safari, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.

Example

Full syntax and examples are on MDN: browser.

Feature detection

There’s no simple runtime check for this feature; rely on the support table and test in your target browsers.

Sub-features

Support for each part of the feature (116). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
webdriver.bidi.browser126126117✕126117✕
webdriver.bidi.browser.close126126117✕126117✕
webdriver.bidi.browser.getClientWindows✕✕134✕✕134✕
webdriver.bidi.browsingContext12612699✕12699✕
webdriver.bidi.browsingContext.activate126126118✕126118✕
webdriver.bidi.browsingContext.activate.context_parameter126126118✕126118✕
webdriver.bidi.browsingContext.close126126100✕126100✕
webdriver.bidi.browsingContext.close.context_parameter126126100✕126100✕
webdriver.bidi.browsingContext.close.promptUnload_parameter126126129✕126129✕
webdriver.bidi.browsingContext.contextCreated_event12612699✕12699✕
webdriver.bidi.browsingContext.contextCreated_event.children_parameter12612699✕12699✕
webdriver.bidi.browsingContext.contextCreated_event.clientWindow_parameter126126140✕126140✕
webdriver.bidi.browsingContext.contextCreated_event.context_parameter12612699✕12699✕
webdriver.bidi.browsingContext.contextCreated_event.emit_for_existing_contexts126126143✕126143✕
webdriver.bidi.browsingContext.contextCreated_event.originalOpener_parameter126126✕✕126✕✕
webdriver.bidi.browsingContext.contextCreated_event.parent_parameter12612699✕12699✕
webdriver.bidi.browsingContext.contextCreated_event.url_parameter12612699✕12699✕
webdriver.bidi.browsingContext.contextCreated_event.userContext_parameter126126124✕126124✕
webdriver.bidi.browsingContext.contextDestroyed_event126126121✕126121✕
webdriver.bidi.browsingContext.contextDestroyed_event.children_parameter126126✕✕126✕✕
Show 96 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
webdriver.bidi.browsingContext.contextDestroyed_event.clientWindow_parameter126126140✕126140✕
webdriver.bidi.browsingContext.contextDestroyed_event.context_parameter126126121✕126121✕
webdriver.bidi.browsingContext.contextDestroyed_event.originalOpener_parameter126126✕✕126✕✕
webdriver.bidi.browsingContext.contextDestroyed_event.parent_parameter126126121✕126121✕
webdriver.bidi.browsingContext.contextDestroyed_event.url_parameter126126121✕126121✕
webdriver.bidi.browsingContext.contextDestroyed_event.userContext_parameter126126124✕126124✕
webdriver.bidi.browsingContext.create126126101✕126101✕
webdriver.bidi.browsingContext.create.background_parameter126126117✕126117✕
webdriver.bidi.browsingContext.create.referenceContext_parameter126126107✕126107✕
webdriver.bidi.browsingContext.create.type_parameter126126101✕126101✕
webdriver.bidi.browsingContext.create.userContext_parameter126126124✕126124✕
webdriver.bidi.browsingContext.domContentLoaded_event126126108✕126108✕
webdriver.bidi.browsingContext.domContentLoaded_event.context_parameter126126108✕126108✕
webdriver.bidi.browsingContext.domContentLoaded_event.navigation_parameter126126117✕126117✕
webdriver.bidi.browsingContext.domContentLoaded_event.timestamp_parameter126126110✕126110✕
webdriver.bidi.browsingContext.domContentLoaded_event.url_parameter126126108✕126108✕
webdriver.bidi.browsingContext.domContentLoaded_event.userContext_parameter✕✕154✕✕154✕
webdriver.bidi.browsingContext.fragmentNavigated_event126126117✕126117✕
webdriver.bidi.browsingContext.fragmentNavigated_event.context_parameter126126117✕126117✕
webdriver.bidi.browsingContext.fragmentNavigated_event.navigation_parameter126126117✕126117✕
webdriver.bidi.browsingContext.fragmentNavigated_event.timestamp_parameter126126117✕126117✕
webdriver.bidi.browsingContext.fragmentNavigated_event.url_parameter126126117✕126117✕
webdriver.bidi.browsingContext.fragmentNavigated_event.userContext_parameter✕✕154✕✕154✕
webdriver.bidi.browsingContext.getTree126126100✕126100✕
webdriver.bidi.browsingContext.getTree.maxDepth_parameter126126100✕126100✕
webdriver.bidi.browsingContext.getTree.root_parameter126126101✕126101✕
webdriver.bidi.browsingContext.load_event126126106✕126106✕
webdriver.bidi.browsingContext.load_event.context_parameter126126106✕126106✕
webdriver.bidi.browsingContext.load_event.navigation_parameter126126117✕126117✕
webdriver.bidi.browsingContext.load_event.timestamp_parameter126126110✕126110✕
webdriver.bidi.browsingContext.load_event.url_parameter126126106✕126106✕
webdriver.bidi.browsingContext.load_event.userContext_parameter✕✕154✕✕154✕
webdriver.bidi.browsingContext.navigate126126101✕126101✕
webdriver.bidi.browsingContext.navigate.context_parameter126126101✕126101✕
webdriver.bidi.browsingContext.navigate.url_parameter126126101✕126101✕
webdriver.bidi.browsingContext.navigate.wait_parameter126126101✕126101✕
webdriver.bidi.browsingContext.navigationCommitted_event126126140✕126140✕
webdriver.bidi.browsingContext.navigationCommitted_event.context_parameter126126140✕126140✕
webdriver.bidi.browsingContext.navigationCommitted_event.navigation_parameter126126140✕126140✕
webdriver.bidi.browsingContext.navigationCommitted_event.timestamp_parameter126126140✕126140✕
webdriver.bidi.browsingContext.navigationCommitted_event.url_parameter126126140✕126140✕
webdriver.bidi.browsingContext.navigationCommitted_event.userContext_parameter✕✕154✕✕154✕
webdriver.bidi.browsingContext.navigationStarted_event126126119✕126119✕
webdriver.bidi.browsingContext.navigationStarted_event.context_parameter126126119✕126119✕
webdriver.bidi.browsingContext.navigationStarted_event.navigation_parameter126126119✕126119✕
webdriver.bidi.browsingContext.navigationStarted_event.timestamp_parameter126126119✕126119✕
webdriver.bidi.browsingContext.navigationStarted_event.url_parameter126126✕✕126✕✕
webdriver.bidi.browsingContext.reload126126119✕126119✕
webdriver.bidi.browsingContext.reload.context_parameter126126119✕126119✕
webdriver.bidi.browsingContext.reload.ignoreCache_parameter126126✕✕126✕✕
webdriver.bidi.browsingContext.reload.wait_parameter126126119✕126119✕
webdriver.bidi.input126126113✕126113✕
webdriver.bidi.input.performActions126126113✕126113✕
webdriver.bidi.input.performActions.actions_parameter126126113✕126113✕
webdriver.bidi.input.performActions.context_parameter126126113✕126113✕
webdriver.bidi.input.releaseActions126126113✕126113✕
webdriver.bidi.input.releaseActions.context_parameter126126113✕126113✕
webdriver.bidi.script126126106✕126106✕
webdriver.bidi.script.callFunction126126106✕126106✕
webdriver.bidi.script.callFunction.arguments_parameter126126106✕126106✕
webdriver.bidi.script.callFunction.awaitPromise_parameter126126106✕126106✕
webdriver.bidi.script.callFunction.functionDeclaration_parameter126126106✕126106✕
webdriver.bidi.script.callFunction.resultOwnership_parameter126126106✕126106✕
webdriver.bidi.script.callFunction.serializationOptions_parameter126126114✕126114✕
webdriver.bidi.script.callFunction.target_parameter126126106✕126106✕
webdriver.bidi.script.callFunction.this_parameter126126106✕126106✕
webdriver.bidi.script.callFunction.userActivation_parameter126126121✕126121✕
webdriver.bidi.script.disown126126106✕126106✕
webdriver.bidi.script.disown.handles_parameter126126106✕126106✕
webdriver.bidi.script.disown.target_parameter126126106✕126106✕
webdriver.bidi.script.evaluate126126106✕126106✕
webdriver.bidi.script.evaluate.awaitPromise_parameter126126106✕126106✕
webdriver.bidi.script.evaluate.expression_parameter126126106✕126106✕
webdriver.bidi.script.evaluate.resultOwnership_parameter126126106✕126106✕
webdriver.bidi.script.evaluate.serializationOptions_parameter126126114✕126114✕
webdriver.bidi.script.evaluate.target_parameter126126106✕126106✕
webdriver.bidi.script.evaluate.userActivation_parameter126126121✕126121✕
webdriver.bidi.script.message_event126126114✕126114✕
webdriver.bidi.script.message_event.channel_parameter126126114✕126114✕
webdriver.bidi.script.message_event.data_parameter126126114✕126114✕
webdriver.bidi.script.message_event.source_parameter126126114✕126114✕
webdriver.bidi.script.message_event.source_parameter.userContext✕✕154✕✕154✕
webdriver.bidi.session12012092✕12092✕
webdriver.bidi.session.end120120116✕120116✕
webdriver.bidi.session.new12612692✕12692✕
webdriver.bidi.session.new.capabilities_parameter12612692✕12692✕
webdriver.bidi.session.new.capabilities_parameter.capability_matching139139116✕139116✕
webdriver.bidi.session.status12612697✕12697✕
webdriver.bidi.session.subscribe12612693✕12693✕
webdriver.bidi.session.subscribe.contexts_parameter12612693✕12693✕
webdriver.bidi.session.subscribe.events_parameter12612693✕12693✕
webdriver.bidi.session.subscribe.userContexts_parameter126126137✕126137✕
webdriver.bidi.session.unsubscribe12612693✕12693✕
webdriver.bidi.session.unsubscribe.contexts_parameter12612693✕12693✕
webdriver.bidi.session.unsubscribe.events_parameter12612693✕12693✕
webdriver.bidi.session.unsubscribe.subscriptions_parameter126126136✕126136✕