Marionette is a remote protocol that lets out-of-process programs communicate with, instrument, and control Gecko-based browsers.

It provides interfaces for interacting with both the internal JavaScript runtime and UI elements of Gecko-based browsers, such as Firefox and Fennec. It can control both the chrome- and content documents, giving a high level of control and ability to emulate user interaction.

Within the central tree, Marionette is used in most TaskCluster test jobs to instrument Gecko. It can additionally be used to write different kinds of functional tests:

Outside the tree, Marionette is used by geckodriver to implement WebDriver.

Marionette supports to various degrees all the Gecko based applications, including Firefox, Thunderbird, Fennec, and Fenix.

Some further documentation can be found here:


Bugs are tracked in the Testing :: Marionette component.


The mailing list for Marionette discussion is (subscribe, archive).

If you prefer real-time chat, there is often someone in the #interop IRC channel on Don’t ask if you may ask a question; just go ahead and ask, and please wait for an answer as we might not be in your timezone.