WebDriver
WebDriver is a remote control interface that enables introspection and control of user agents. It provides a platform- and language-neutral wire protocol as a way for out-of-process programs to remotely instruct the behavior of web browsers.
This is the project page for the WebDriver project at Mozilla. If you’re looking for information about WebDriver itself you will find that on MDN.
Contents
Components
The implementation of WebDriver in Firefox consists of different layers with each of them handled by it's own component.
Marionette
Marionette is a remote protocol that lets out-of-process programs communicate with, instrument, and control Gecko-based browsers. It implements the WebDriver specification, which is then made available via a custom socket protocol to geckodriver.
It provides interfaces for interacting with both the internal JavaScript runtime and UI elements of Gecko-based browsers, such as Firefox and Fenix. It can control both the content and chrome- documents, giving a high level of control and ability to emulate user interaction.
geckodriver
geckodriver is a proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers.
This program provides the HTTP API described by the WebDriver specification to communicate with Gecko browsers. It translates calls into the Marionette compatible remote protocol by acting as a proxy between the local- and remote ends.
Remote Protocol
The Firefox Remote Protocol is a low-level debugging interface you can use to inspect the state and control execution of documents running in web content, instrument the browser in interesting ways, simulate user interaction for automation purposes, and for subscribing to events in the browser such as network- or console logs.
It's primary purpose is the implementation of the WebDriver BiDi specification. But it also complements the existing Firefox Developer Tools Remote Debugging Protocol (RDP) by implementing a subset of the Chrome DevTools Protocol (CDP).
WebDriver BiDi
The WebDriver BiDi specification extends WebDriver HTTP to add bidirectional communication. There is a WebDriver BiDi project page that contains details about the current status and upcoming / planned work.
Communication
- Mailing list
- dev-webdriver@mozilla.org (subscribe)
- Real-time chat
- The communication channel for the team is Element/#webdriver.
- Bug tracking
- WebDriver (Marionette) in Bugzilla
- WebDriver BiDi in Bugzilla
- geckodriver in Bugzilla
- geckodriver on GitHub
- Rust port of mozbase
Staff
- Jan Odvarko (honza), manager
- Henrik Skupin (whimboo), engineer
- Julian Descottes (jdescottes), engineer
- Alexandra Borovova (sasha), engineer
- James Graham (jgraham), engineer (WebDriver Spec)
- Marco Mucci (mmucci), EPM
Meetings
The team has a public meetings on Mondays at 2:30 pm UTC.
- See WebDriver/Meetings for more details and minutes