What is Marionette?
Marionette is an automation driver. It can remotely drive either the UI or the internal JS of a program built on the Gecko platform. Marionette runs as a server on your test machine, allowing you to connect to that server and remotely drive tests and send commands. Its goal is to replicate what selenium does for the browser: to enable the tester the ability to send commands to a remote test machine.
Marionette shares much of the same API as Selenium/WebDriver, and makes writing tests easy. You have the API to drive user actions like page navigation and element clicking, but also the ability to run pure JS scripts, allowing for a greater variety of tests.
When would I use it?
If you want to mimic user interaction with chrome or content, Marionette is the tool you're looking for, but it is also capable of doing much more! Marionette lives in both the chrome and content space of a gecko process, so it is capable of running commands in any of these spaces.
This means you can run any JS script in chrome or in content. This is a powerful feature, enabling a user to do anything from inspecting the content DOM of a Firefox instance running in a remote machine to executing a script that changes profile preferences in privileged chrome space.
Right now, we support the Boot2Gecko and Desktop Firefox environment. Drop us a line at the #ateam IRC channel if you are interested in using Marionette in a different environment!
Marionette combines a gecko component (the Marionette server) with a Python component (the Marionette client), which drives the tests. To use Marionette you must enable Marionette in gecko, and then download the Marionette client or use the client in the mozilla-central tree.
- Enable Marionette in gecko - Currently you can set this up for B2G or Desktop Firefox.
- Download and setup the Marionette client
- You might want to experiment with using Marionette interactively at a Python command prompt
- Start writing and running tests with supported test frameworks!
Please file any bugs you may find!
You can view a list of current bugs to see if your problem is already being addressed.
Feel free to drop us a line over at the #ateam channel!
Subpages (temporary section)
This section is here to help with copy-editing and organization work that is ongoing, and will be removed sometime soon once that work is done.