Bug 1407985 - Add Marionette new contributor guide to docs. r?maja_zf draft
authorAndreas Tolfsen <ato@sny.no>
Thu, 12 Oct 2017 14:18:23 +0100
changeset 680117 db0f1816ff46e1e69321baf8caeab963629d6013
parent 680024 196dadb2fe500e75c6fbddcac78106648676cf10
child 735769 83eda068394cd6382b4acfe242bd308ddf43f8dc
push id84403
push userbmo:ato@sny.no
push dateFri, 13 Oct 2017 15:27:31 +0000
Bug 1407985 - Add Marionette new contributor guide to docs. r?maja_zf This is a conversion of https://wiki.mozilla.org/User:Mjzffr/New_Contributors. DONTBUILD MozReview-Commit-ID: 4dLXr8zC3bN
new file mode 100644
--- /dev/null
+++ b/testing/marionette/doc/NewContributors.md
@@ -0,0 +1,162 @@
+New contributors
+This page is aimed at people who are new to Mozilla and want to contribute
+to Mozilla source code related to Marionette Python tests, WebDriver
+spec tests and related test harnesses and tools. Mozilla has both
+git and Mercurial repositories, but this guide only describes Mercurial.
+If you run into issues, check out the Resources section below and
+**don't hesitate to ask questions**. :) The goal of these steps is
+to make sure you have the basics of your development environment
+working. Once you do, we can get you started with working on an
+actual bug, yay!
+Accounts, communication
+  1. Set up [IRC].
+  2. Set up a [Bugzilla] account and a [Mozillians] profile.
+     Please include your IRC nickname in both of these accounts
+     so we can work with you more easily. For example, Eve Smith
+     would set their Bugzilla name to "Eve Smith (:esmith)", where
+     esmith is their IRC nick.
+  3. Join #ateam or #automation on irc.mozilla.org and introduce
+     yourself to the whole team and :maja_zf. We're nice, I promise.
+[IRC]: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Getting_Started_with_IRC
+[Bugzilla]: https://bugzilla.mozilla.org/
+[Mozillians]: https://mozillians.org/
+Getting the code, running tests
+  1. Follow this tutorial to get a copy of Firefox source code and
+     build it: http://areweeveryoneyet.org/onramp/desktop.html
+     If you're asked to run a 'bootstrap' script, choose the option
+     "Firefox for Desktop Artifact Mode".  This significantly
+     reduces the time it takes to build Firefox on your machine
+     (from 30+ minutes to just 1-2 minutes).
+  2. Check if you can run any marionette tests: Use [mach] to run
+     [Marionette] unit tests against the Firefox binary you just
+     built in the previous step: `./mach marionette test` -- see
+     [Running Marionette tests] for details.  If you see tests
+     running, that's good enough: **you don't have to run all the
+     tests right now**, that takes a long time.
+     Fun fact: the set of tests that you just ran on your machine is
+     triggered automatically for every changeset in the Mozilla source
+     tree!  For example, here are the [latest results on Treeherder].
+  3. As an exercise, try out this different way of running the
+     Marionette unit tests, this time against Firefox Nightly
+     instead of the binary in your source tree:
+     * Download and install [Firefox Nightly], then find
+       the path to the executable binary that got installed.
+       For example, on a macOS it might be something like
+       `FF_NIGHTLY_PATH=/Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin`.
+     * Create and activate a [virtualenv] environment.
+     * Within your checkout of the Mozilla source, cd to
+       [testing/marionette/client].
+     * Run `python setup.py develop` to install the marionette
+       driver package in development mode in your virtualenv.
+     * Next cd to [testing/marionette/harness].
+     * Run `cd marionette && python runtests.py tests/unit-tests.ini
+       --binary $FF_NIGHTLY_PATH`.
+       * These are the same tests that you ran with `./mach
+         marionette test`, but they are testing the Firefox Nightly
+         that you just installed.  (`./mach marionette tests`
+         just calls code in runtests.py).
+     * Configure Mercurial with helpful extensions for Mozilla
+       development by running `./mach mercurial-setup`.
+       * It should install extensions like firefox-trees and set
+         you up to be able to use MozReview, our code-review tool.
+       * If it asks you about activating the mq extension, I suggest
+         you respond with 'No'.
+[mach]: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/mach
+[Marionette]: ../README.md
+[Running Marionette tests]: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Running_Tests
+[latest results on Treeherder]: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&filter-job_type_symbol=Mn
+[Firefox Nightly]: https://nightly.mozilla.org/
+[virtualenv]: https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/
+[testing/marionette/client]: https://dxr.mozilla.org/mozilla-central/source/testing/marionette/client
+[testing/marionette/harness]: https://dxr.mozilla.org/mozilla-central/source/testing/marionette/harness
+Work on bugs and get code review
+Once you've completed the above basics, ask :maja_zf, :whimboo,
+or :ato in #ateam for a good first bug to work on.  (Or you can
+also take a look at the simple bugs listed on Bugs Ahoy.)
+If you're an Outreachy applicant and you find that we're offline or
+"afk" on IRC, feel free to send Maja an email instead: [myfirstname]
+at mozilla.com -- either way, be sure to tell me which bug you are
+interested in for your application!
+To work on the bug that is suggested to you and push a patch up
+for review, follow the [Firefox Workflow] in hg.
+After testing your code locally, you will push your patch to be
+reviewed in MozReview.  To set up MozReview, see this [configuration]
+page.  (Note: the only kind of account you need for MozReview is
+Bugzilla (not LDAP) and you can only use HTTPS, not SSH.)
+[Firefox Workflow]: https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/firefoxworkflow.html
+[configuration]: https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install-mercurial.html#configuring-mercurial-to-use-mozreview
+  * Sometimes (often?) documentation is out-of-date.  If something looks
+    off, do ask us for help!
+  * Search Mozilla's hg repositories with [DXR].
+  * Helpful [guide for new contributors].  This is a good general
+    resource if you ever get stuck on something.  The most relevant
+    sections to you are about Bugzilla, Mercurial, Python and the
+    Development Process.
+  * [Mercurial for Mozillians]
+  * More general resources are available in this little [guide] I wrote
+    in 2015 to help a student get started with open source contributions.
+    * Textbook about general open source practices: [Practical
+      Open Source Software Exploration]
+  * This guide provides a one-track, simple flow for getting
+    started with Marionette Test Runner development.
+    The general guide to all Marionette development is at
+    https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Developer_setup.
+  * If you'd rather use git instead of hg, see git workflow for
+    Gecko development and/or [this blog post by :ato].
+[DXR]: https://dxr.mozilla.org/
+[guide for new contributors]: https://ateam-bootcamp.readthedocs.org/en/latest/guide/index.html#new-contributor-guide
+[Mercurial for Mozillians]: https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/index.html
+[guide]: https://gist.github.com/mjzffr/d2adef328a416081f543
+[Practical Open Source Software Exploration]: https://quaid.fedorapeople.org/TOS/Practical_Open_Source_Software_Exploration/html/index.html
+[git workflow for Gecko development]: https://github.com/glandium/git-cinnabar/wiki/Mozilla:-A-git-workflow-for-Gecko-development
+[this blog post by :ato]: https://sny.no/2016/03/geckogit