Building geckodriver¶
geckodriver is written in Rust, a systems programming language from Mozilla. Crucially, it relies on the webdriver crate to provide the HTTPD and do most of the heavy lifting of marshalling the WebDriver protocol. geckodriver translates WebDriver commands, responses, and errors to the Marionette protocol, and acts as a proxy between WebDriver and Marionette.
To build geckodriver as part of a source Firefox build, add the
following to mozconfig
:
ac_add_options --enable-geckodriver
With this addition geckodriver will be built when Firefox is built. It
can also be built alone by passing in the source path to the mach build
command:
% ./mach build testing/geckodriver
Artifact builds don’t download geckodriver by default, but it can be built using cargo:
% cd testing/geckodriver
% cargo build
…
Compiling geckodriver v0.21.0 (file:///code/gecko/testing/geckodriver)
…
Finished dev [optimized + debuginfo] target(s) in 7.83s
Because all Rust code in central shares the same cargo workspace,
the binary will be put in the $(topsrcdir)/target
directory.
You can run your freshly built geckodriver this way:
% ./mach geckodriver -- --other --flags
See Testing for how to run tests.