How test harnesses work

Mozilla test harnesses are typically composed of a python runner that invokes Firefox, utilizes the browser to run tests, and reports the results. The python harness communicates with the browser by inserting an extension in the testing profile or uses marionette's wire protocol to drive the browser.

Python Runner

The python runner:

  • sets up the testing environment
    • sets up environment variables (mozrunner, currently)
    • creates a profile (mozprofile via mozrunner)
      • sets appropriate test preferences
      • inserts a shim extension in the profile (for non-marionette tests)
  • gathers the tests (manifestdestiny)
  • potentially sets up an HTTP server for test data (mozhttpd)
  • invokes the binary (mozrunner)
    • it is the job of the shim extension to shut down the browser
  • logging (mozlog, in theory)
  • (run tests, accrue results)
  • cleanup:
    • shutdown the browser
    • check for crashes (mozcrash)
    • reporting (moztest)

Marionette Tests

List of Testing Extensions


  • pageloader (talos)
  • mochitest: (mochitest)

Document Tags and Contributors

 Contributors to this page: teoli,, kscarfone, mdas, jhammel
 Last updated by:,