User:Sydpolk

From MozillaWiki
Jump to: navigation, search

firefox-ui-tests overview

or: How does this stuff get called anyway?

jenkins job

  • mozmill-ci:jenkins-master/jobs/scripts/workspace/runtest.py
    • Adds/verifies command-line arguments that are specific to functional vs. update tests.
  • mozilla-central:testing/mozharness/scripts/firefox_ui_tests/functional.py
    • listed in mozmill-ci:jenkins-master/jobs/scripts/workspace/config.py
    • mozharness config file is mozilla-central:testing/mozharness/configs/firefox_ui_tests/qa_jenkins.py
    • Appends elements to the path. Thin shim for firefox_ui_tests.py.
  • mozilla-central:testing/mozharness/mozharness/mozilla/testing/firefox_ui_tests.py
    • This is the real mozharness script. Sets up the actions to be performed.
      • clobber
      • download-and-extract
      • checkout
      • create-virtualenv
      • install
      • run-tests
      • uninstall
  • venv:firefox_ui_harness.py
    • Exe wrapper for firefox-ui-tests:firefox_ui_harness/runtest.py
    • This is the real interface into the firefox-ui-tests.
  • firefox-uitests:firefox-ui-tests/arguments/base.py
    • The real test runner.
  • All mozmill-ci files are in https://github.com/mozilla/mozmill-ci.git, which is what is used for the Jenkins configuration.
  • All mozilla-central files live in https://hg.mozilla.org/mozilla-central, but the entire testing/mozharness directory is retrieved with the jenkins job get_mozharness, and copied into the job workspace with a Copy Workspace build step. This job does not clone any part of mozilla-central.
  • All firefox-ui-test files live in https://github.com/mozilla/firefox-ui-tests.git. This is cloned by the mozharness scripts themselves, rather than by Jenkins.
  • The venv reference is generated by the mozharness script.

So mozmill-ci:runtest.py runs mozilla-central:functional.py which runs mozilla-central:firefox_ui_tests.py which runs firefox_ui_harness.py from venv (generated from firefox-ui-tests:runtest.py) which invokes firefox-ui-tests:base.py.