marionette-harness
Marionette test automation harness
What it is and what it does
Marionette-harness is a test automation framework for Gecko-based browsers, primarily Firefox. It provides a Python test runner and unittest-based testcase classes that let you write automated tests controlling the browser's UI, chrome, content, and DOM. The package wraps the Marionette protocol, which allows remote control of Firefox for both user-action replication and property inspection.
The tool is invoked from the command line with a manifest file, test file, or test folder, and runs tests against a specified Firefox binary. It is part of Mozilla's QA infrastructure and was designed for testing Gecko applications at scale. However, the package has been abandoned since October 2019 with no updates for over 2500 days, making it a legacy tool that may not work reliably with modern Firefox or Python versions.
Use it for:
- Automated testing of Firefox UI and browser chrome behavior in CI/CD pipelines.
- Regression testing of Gecko-based applications by simulating user interactions and verifying DOM state.
- Integration testing of web content within Firefox, including JavaScript execution and property inspection.
- Legacy test suite maintenance for projects that already depend on Marionette test infrastructure.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Marionette-harness is a test runner for automating Gecko-based applications like Firefox, allowing you to write and execute Python-based tests that control the browser UI, JavaScript, and DOM.
No. The package is abandoned (last release October 2019, no updates in 2500+ days) and relies on 15 Mozilla-ecosystem dependencies that are likely also unmaintained. Modern Firefox automation should use Selenium, Playwright, or Puppeteer instead. Install only if maintaining an existing legacy test suite with no alternative path.
Install
marionette-harness on PyPI
pip
pip install marionette-harnessuv
uv add marionette-harnesspoetry
poetry add marionette-harnessInstalling marionette-harness
Before you install
Low install friction with a pure-Python wheel, but the package is abandoned as of 2019 with no updates in over 2500 days. Relies on 15 Mozilla-ecosystem dependencies, most of which may also be unmaintained.
License in practice
Licensed under Mozilla Public License 2.0 (MPL 2.0), a copyleft license requiring derivative works to disclose source and maintain the same license. Review your project's licensing compatibility before use.
Quickstart
pip install marionette-harness
marionette --binary /path/to/firefox test_file.py
Requires a local Firefox binary and the Marionette protocol to be enabled; depends on Mozilla's ecosystem of moz* packages which may have compatibility issues with modern Firefox versions.
Verify before relying
- Whether this package works with current Firefox versions, given its 2019 abandonment date.
- Current compatibility of the 15 moz* dependencies with modern Python and OS versions.
- Whether the unittest-based test classes remain functional with modern Python test frameworks.
Package facts
| License | Mozilla Public License 2.0 (MPL 2.0) (copyleft) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 15 — browsermob-proxy, manifestparser, marionette-driver, mozcrash, mozdevice, mozinfo, mozlog, moznetwork, mozprocess, mozprofile, mozrunner, moztest, mozversion, six, wptserve |
| Maintenance | abandoned — 2,500 days since the last release |
| First released | |
| Downloads | 118,361/month — #12,122 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: marionette_harness-5.0.0-py3-none-any.whl
Keywords: mozilla
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
marionette-driverMarionette Driver provides a Python client for…
copyleft · top 15,000 on PyPI
mozrunnerMozrunner manages the lifecycle of Mozilla…
copyleft · top 15,000 on PyPI
geckodriver-autoinstallerAutomatically downloads and installs…
permissive · top 5,000 on PyPI
pytest-seleniumpytest-selenium is a pytest plugin that…
copyleft · top 15,000 on PyPI
wptserveA Python web server built for testing web…
permissive · top 15,000 on PyPI
seleniumSelenium provides Python bindings to automate…
permissive · top 1,000 on PyPI
geckordpGeckordp is a Python client for Firefox's…
permissive · top 15,000 on PyPI
browser-harnessConnects an LLM agent directly to a real…
permissive · top 5,000 on PyPI
pytest-playwrightA pytest plugin that integrates Playwright…
permissive · top 5,000 on PyPI
robotframework-browserBrowser automation library for Robot Framework…
permissive · top 5,000 on PyPI