From MozillaWiki
Jump to: navigation, search

Welcome to the Automation and Tools Projects Page.

We are the people who write the code that enables all our automated test systems (correctness, performance etc) to run. We are continually expanding, upgrading, and inventing new and better ways to do automated quality analysis at Mozilla. Most of our systems run on a per-checkin basis, and at the time of this writing we do roughly 300 checkins a day, and we run hundreds of thousands of tests per checkin, so you can imagine how many times our code gets run. If you like the idea of that kind of a challenge, we could use your help on some of the projects below. If you don't know how to get started, feel free to hop on irc (, into the channel #ateam and ask some questions.

The Goals

See our goals page.

Other Projects

Every quarter there are more things we'd like to do than we have time for. Below are some of these projects, broken down by areas and technologies so that you can find something that gets you excited.


Work in progress effort to create an index for all existing/WIP automation tools - Here.

Firefox for Android

The Firefox for Android project is a continual expansion of our test harnesses to better support the Android platform. Currently we only release Firefox on that platform (aka Fennec), but we might also begin testing web apps there in the near future. Familiarity with Android and a great knowledge of Python is very useful here.

  • Help expand our reach to x86 Android systems by aiding us in debugging and fixing test failures on that platform: see the collection of bugs beneath bug 891959

Firefox Desktop and General Automation Support

The desktop web browser Firefox continues to be our flagship product, and there is always ongoing work needed to ensure that we continue to support the new features that regularly land in Firefox. Many of the bugs here are more tractable simply because the test harnesses and tests involved are older code. This is a good spot for first-time contributors. These will involve Python knowledge and some JavaScript, depending on the bug.


The a-team maintains many of the systems and code that perform per-checkin testing on performance. There are many performance automation systems at Mozilla, and one of our current efforts is to pull them under one high-level dashboard, called Perfherder. A working knowledge of the web, Python, JavaScript, statistics, and great debugging skills would be helpful.

Tools & Dashboards

We create web-based tools and dashboards to help illustrate how our automation is doing. Datazilla is a performance dashboarding system, and Treeherder surfaces the status of our automation runs. We also maintain and continually improve Mozilla's Bugzilla installation, often contributing patches to the upstream general Bugzilla project. Python, JavaScript, and, in Bugzilla's case, Perl, are all used here, along with both relational and NoSQL databases.

ATeam Handbook

The ATeam Handbook is meant to be the definitive source of information on how we do things in the ateam, useful for new and old contributors alike. Currently in the planning phase.

Mentored Bugs

These bugs are things that we have identified as great starter bugs. Each bug contains a focused technology that is required and a mentor who has volunteered to help out people starting to work on the issue. If you've done a few mentored bugs, talk to your mentors about becoming a mentor yourself!

ID Summary Priority Status Bug mentor
592653 Use Services.prefs instead of preferences-service / gPrefService -- ASSIGNED
649563 Convert all existing uses of nsIPrefBranch to use SpecialPowers -- NEW
682901 catch the case where .finish() gets called before waitForExplicitFinish() -- NEW
695937 pageloader extension/talos should die more gracefully when pageset doesn't exist -- NEW
744387 SimpleTest._logResult() should report when is 'undefined' -- NEW
841086 mozprofile - test(s) should be written for bug 759594 -- NEW
847275 make assertions cause test failures in mochitest-browser-chrome -- ASSIGNED
884828 mozinstall.get_binary() should check for executable bit and be less confusing -- ASSIGNED
939755 With httpd.js we sometimes don't get the most recent version of the file -- NEW
940882 Consolidate waitForCondition implementations in SimpleTest -- NEW
951272 Convert SpecialPowers.addPermission usage to SpecialPowers.pushPermissions -- NEW
958147 Choose one of run-if or skip-if and get rid of the other -- REOPENED
969334 mozinstall should not magically try to find the mount point of the DMG -- NEW
996652 Scope the private symbols of head.js -- NEW
1001318 Don't need to generate profile at marionette/install. -- NEW
1028895 Mouseover triggered in mochitest-browser & dt according to position of mouse cursor on test box -- NEW
1033651 [ui] AlertManager view/hide alerts over and over again -- NEW
1033655 [ui] AlertManager should show proper branch names for android and osx on the treeherder -- NEW
1033657 [ui] AlertManager should detect missing jobs and trigger them -- NEW
1034243 [UI] Alert Manager should generate a report for uplift statistics -- NEW
1036328 Support bisection in case of timeout/crash -- NEW
1036934 Add test for content editing keyboard shortcuts -- NEW
1063706 User build phones that have the screen lock setting enabled cannot be reached with adb after a reboot after 15-20 seconds - find a way to determine this and notify the user -- NEW
1072618 Enhance update tests to add nsIUpdateService error codes to the results -- NEW
1072854 package.json after installing from an npm-mirror repository doesn't work with CommonJS require() -- UNCONFIRMED
1072912 Remove makefile targets for running tests from -- NEW
1078894 Create example test of do_await_remote_message -- NEW
1080806 Port to use mozbase -- NEW
1084469 [UI] Alert Manager - table view needs to support mouse over for additional data and user transactions -- NEW
1086570 Don't hardcode urls in the report html as they can vary from suite to suite -- NEW
1091541 [backend] Alert Manager - needs to fix treeherder links for android -- NEW
1092274 [backend] Alert Manager - fix the merge detection code -- NEW
1124746 create a script when tells us if we have confidence that the regression we see includes all related regressions/improvements -- NEW
1125863 Reports should differentiate enabled from added and disabled from removed -- NEW
1132057 [mozlog] HTML log should show the passed/failed tests on the top of the page as default -- NEW
1137691 SpecialPowers.getFocusedElementForWindow is misnamed -- NEW
1143928 Refactor Deck and Panel classes to reduce code duplication -- NEW
1151026 add b2g and android data to seta -- NEW
1151035 add ability to ouija to generate a report of builders and orangeness - including ones that go above or below a threshold -- NEW
1164443 Mozinstall should only install in an empty dir P1 NEW
1166431 Create distinct log files for each call to BaseMarionetteTestRunner.run_tests -- NEW
1176474 Mozregui: Add some tests -- NEW
1177336 mozfile.remove uses excessive system calls -- NEW
1191446 Create a mach command for rerunning failed jobs on a previous push using new code -- NEW
1192866 Throw an exception when a non-top-level window is passed to synthesizeKey -- NEW
1196305 [Qb] multiple groupby should string-join multiple columns, the aggregate? -- NEW
1199700 add feature to make collecting nspr logs easier in reftest -- NEW
1218554 [mozinstall] Failure during install on OS X: "local variable 'appDir' referenced before assignment" -- NEW
1229089 Stop pre-processing reftest.js -- NEW
1237396 Convert testSafeBrowsing_initialDownload Mozmill test to Marionette -- ASSIGNED
1241806 Make use of Preferences.jsm for getting and setting preferences -- NEW
1258664 Add more details about which chrome window handles are leaked in tearDown of a FirefoxTestCase -- NEW
1271330 Avoid homepage overrides in the default profile -- NEW
1273498 Update Puppeteer classes for MetaClass -- NEW
1274167 Add Linter (flake8) support for Firefox-ui and Puppeteer -- ASSIGNED

55 Total; 55 Open (100%); 0 Resolved (0%); 0 Verified (0%);

For reference, the old Projects Page (which is largely out of date, but interesting for historical reasons) is accessible here