WebDriver

From MozillaWiki
Jump to: navigation, search

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.

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.