The following details our policy for committing patches to the mozmill-tests and litmus-data repositories. If you have any questions or need help email Anthony Hughes or ping ashughes on irc.mozilla.org/#automation.
What is a committer?
A committer is someone who physically checks code into the repository. This is a privilege which comes with a lot of responsibility and is typically only granted to those who have proven themselves over an extended period of contribution.
How do I become a committer?
When the team feels you are ready to become a committer, you will need to go through the application process. Mozilla has a standard Committer Agreement with everyone who wishes to check code into any repository. If you want to be able to land patches to the mozmill-tests and litmus-data repositories, get in touch with Anthony Hughes.
Privileges
Once granted commit access you will be granted the following privileges:
- Landing patches to skip/disable a failing test (patch must be approved by one peer)
- Landing patches to fix a failing test (patch must be approved by one peer and one super-reviewer)
- Landing patches to add a new test (patch must be approved by one peer and one super-reviewer)
- Landing patches to litmus-data (patch must be approved by one peer and one super-reviewer)
- Landing patches to endurance tests (patch must be approved by one peer, one super-reviewer, and the module owner)
- Landing patches to shared modules (patch must be approved by one peer, one super-reviewer, and the module owner)
Responsibilities
Once granted commit access you will be granted the following responsibilities:
- Landing your own patches after they have passed review (ideally within 24 hours of r+)
- Checking the live test results the following day to see if your patch introduced a regression
- Promptly backing out your patch when a regression is introduced
- Landing patches for those without commit access after they have passed review
Life-cycle of a patch
Patches for Endurance Tests
- Land the patch on the defaultbranch
- Update the bug with the following changes - [landed]added to the patch summary
- comment with the URL to the changeset
- status set to RESOLVED FIXED
 
- The next day, verify the test has not caused regressions by checking the Endurance Dashboard for failures - if no failures are found, set the bug status to VERIFIED FIXED
- if the test fails, the bug status is set to REOPENEDand the patch is backed out
 
- if no failures are found, set the bug status to 
Patches for Functional Tests
- Land the patch on the defaultbranch
- Update the bug with the following changes - [landed:default]added to the patch summary
- comment with the URL to the changeset
- status set to RESOLVED FIXED
 
- The next day, verify the test has not caused regressions by checking the Functional Dashboard for failures
- If no failures are found, land the patch on the mozilla-aurora,mozilla-beta, andmozilla-releasebranches, and update the bug with the following changes:- change [landed:default]to[landed]in the patch summary
- comment with the URLs to the changesets for each of the branches
- change the status to VERIFIED FIXED
 
- change 
- The next day, verify the test has not caused regressions by checking the Functional Dashboard for failures - if the test fails, the bug status is set to REOPENEDand the patch is backed out
 
- if the test fails, the bug status is set to 
default; if your test is for a feature which is active on Beta, land your patch on default, mozilla-aurora, and mozilla-beta; and so on.Patches for Test Failures
- Land the patch on the affected branch
- Update the bug with the following changes - [landed]added to the patch summary
- comment with the URL to the changeset
- status set toRESOLVED FIXED
 
- The next day, verify the test has not caused regressions by checking the Functional Dashboard for failures
- If the test is still failing, set the bug status to REOPENEDand back out the patch
- Otherwise, change the status of the bug to VERIFIED FIXED
mozilla-1.9.2 branch will be disabled, the bug resolved WONTFIX, otherwise follow this process:1. Disable the test
2. Investigate if the bug is a failure of the test or Firefox
3. If it's a problem with the test, the test will remain disabled until it can be fixed
4. If it's a problem with Firefox, file a Firefox bug, re-enable the test and close the test failure bug
Litmus
After you have landed a new test, or disabled a failing one, you need to update Litmus.
- If the test has been disabled - find the Mozmill Tests subgroup for each branch in Litmus
- remove the test from the subgroup
- amend the Mozmill Test block to include the word DISABLED and strike-through the link to the test file
- Remember to revert this change when the test is being re-enabled
 
- If the test is new - find the Litmus testcase corresponding to your Mozmill test
- add a comment to the test stating it is covered by Mozmill and provide a link to the file -  This test is covered by Mozmill: testPreferences/testPreferredLanguage.js 
 
-  
- add the Litmus test to the Mozmill Tests subgroup for that branch
- This needs to be done for each and every branch the test has landed
 
Nomenclature for patch landing
When you land a patch you should do the following in Bugzilla:
- Edit Details for the attached patch - If the patch is landed on all branches, add [landed] to the attachment summary
- If the patch is landed on a single branch, add [landed:branch_name] to the attachment summary
 
- Add a comment to the bug indicating where the patch was landed and provide a link to the changeset
Example:
Comment on attachment 588432 [details] [diff] [review] test v7 [landed] Landed: http://hg.mozilla.org/qa/mozmill-tests/rev/829eb7f3fc87 (mozilla-aurora) http://hg.mozilla.org/qa/mozmill-tests/rev/49cea842da76 (mozilla-beta) http://hg.mozilla.org/qa/mozmill-tests/rev/819e3aa37289 (mozilla-release)
Non-responsibilities
The following are not your responsibility as a committer and should never be done unless given explicit permission. These will be take care of by the module owners.
- Landing patches for new tests on the mozilla-1.9.2 branch
- Landing patches on the mozilla-esrN branch
- Merging branches