Marionette is the 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 replicate, or emulate, user interaction.

Marionette can be activated by passing the -marionette flag. To start Firefox with the remote protocol turned on:

% firefox -marionette
1491228343089   Marionette  INFO    Listening on port 2828

This binds to a TCP socket, over which clients can communicate with Marionette using the protocol.

See also:


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.