My team at Mozilla maintains an integration test suite for Firefox Client Telemetry named telemetry-tests-client, which verifies that the collection of technical and interaction data in Firefox is working as expected. 🦊📊
This article describes my workflow for submitting patches to that integration test suite.
The test suite for Firefox Client Telemetry is checked in to version control at mozilla-central, the Mercurial repository for Mozilla code, under toolkit/components/telemetry/tests/marionette/.
There’s a super useful Command equivalence table for hg and git, which I recommend bookmarking, if you (like me) need to look up hg commands for git operations every once in a while. 😁
Before I make any changes, I pull changes from the remote repository.
hg pull --update
Next I create a new bookmark with the Bugzilla bug ID for its name based on the central bookmark. Let’s use bug 1502849 for this example:
hg bookmark -r central bug1502849
Then I switch to the new bookmark, before making any code changes.
hg up bug1502849
The integration test suite for Firefox Client Telemetry requires a Firefox build to run tests against. But before I build Firefox, I update required system packages with mach. It’s a good idea to also run the Mercurial wizard to make sure the environment is configured correctly. 🧙
Note that working on telemetry-tests-client typically does not involve modiying C++ components, which means we can select mozilla-central’s fast build mode for Firefox called artifact mode from the configuration wizard.
Now that my environment is up-to-date, I build Firefox. 🔥🦊
The CLI tool, that I use for submitting patches to mozilla-central, parses Bugzilla Bug IDs and reviewers from hg commit messages if you follow a specific format:
hg commit -m "Bug <Bugzilla bug ID> - <Commit message>; r?<reviewers>"
hg commit -m "Bug 1502849 - Create reusable ping filters; r?dexter,davehunt"
While working on the integration test suite, I will run the tests multiple times on my machine using mach:
Before submitting a patch for review, I will also I also run the tests across all platforms on our try server:
./mach try fuzzy -q "'telemetry-tests-client"
' at the start of the query instructs mach to search for exact matches.
If you want to learn more about this search syntax, check out the
documentation for fzf which mach uses under the hood to filter CI
Finally I will submit my commits for review to phabricator: