WebDriver: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Communication: Fixed Bugzilla links for Marionette and geckodriver)
(Reorganization of WebDriver component pages)
Line 7: Line 7:
'''This is the project page for the WebDriver project at Mozilla.'''
'''This is the project page for the WebDriver project at Mozilla.'''
If you’re looking for [https://developer.mozilla.org/en-US/docs/Web/WebDriver information about WebDriver itself you will find that on MDN].
If you’re looking for [https://developer.mozilla.org/en-US/docs/Web/WebDriver 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 ===
[[WebDriver/Marionette|Marionette]] is a remote protocol that lets out-of-process programs communicate with, instrument, and control Gecko-based browsers. It implements the [https://w3c.github.io/webdriver/ 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 ===
[[WebDriver/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 [https://w3c.github.io/webdriver/ WebDriver specification] to communicate with Gecko browsers. It translates calls into the [[WebDriver/Marionette|Marionette]] compatible remote protocol by acting as a proxy between the local- and remote ends.
=== Remote Protocol ===
The Firefox [[WebDriver/RemoteProtocol|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 [https://w3c.github.io/webdriver-bidi/ WebDriver BiDi specification]. But it also complements the existing Firefox Developer Tools [https://firefox-source-docs.mozilla.org/devtools/backend/protocol.html#remote-debugging-protocol Remote Debugging Protocol (RDP)] by implementing a subset of the [https://chromedevtools.github.io/devtools-protocol/ Chrome DevTools Protocol (CDP)].


== Communication ==
== Communication ==
Line 22: Line 40:


== Staff ==
== Staff ==
* Jan Odvarko (honza), manager
* Jan Odvarko (honza), manager
* [https://www.hskupin.info/ Henrik Skupin] (whimboo), engineer
* [https://www.hskupin.info/ Henrik Skupin] (whimboo), engineer

Revision as of 20:10, 26 February 2021

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).

Communication

Mailing list
tools-marionette@lists.mozilla.org (subscribe, archive)
Real-time chat
The communication channel for the team is Matrix/#interop.
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
  • James Graham (jgraham), engineer (WebDriver Spec)

Meetings

The team has a public meetings on Mondays at 2:30 pm UTC.