B2G/QA/Automation/UI/How to contribute

< B2G‎ | QA‎ | Automation‎ | UI
Revision as of 15:20, 24 November 2015 by Jlorenzo (talk | contribs) (First revision)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Like regular computing projects, end-to-end automation requires some time to get used to it.

If you would like to discover the project step by step, here is below a flow. We recommend you to try every task within a step before trying the next step.

As you'll be able to see, the list below represents the type of tasks you could do. Please ask in #fxosqa when you want to try one. Main contributors will help you to find what can be added or fixed.

Step 1: Install the dependencies and run one test

Pre-requisites: Have 1 Firefox OS device - end-to-end automation tests the entire stack.

Warning: Running these tests will erase the data present on your device. Make sure to have a copy before going further.

Go to this MDN page to get the technical details.

Step 2: Write your first test!

Pre-requisites:

Like said above, ask in #fxosqa for a good first test to write. It's usually one that works within a single app and verifies textual data. Here's an example.

Step 3: Fix your first test, write a harder one.

There are 2 tasks you can do:

  • Fix a permanent failure. They are usually because of small graphic changes (like locator changes). Example.
  • Write a second test. It should either use 2 (or more) apps or perform. other actions than tap() or send_keys(). Example.

Step 4: Welcome intermittents!

Things are getting harder!

  • Fix an intermittent failure related to a missing wait. Example.
  • Write a test that gets external data. For example, a phone call triggered by a remote service.
  • Fix a permanent failure that requires to inject/by-pass standard Marionette's APIs. Example.

Step 5: Non-textual

  • Write a test which verifies non-textual data (images, sound).
  • Fix an unknown intermittent failure. Main contributors haven't identified the potential cause of the bug, you can look into it!

Step 6: Dive into the harness

  • Change the harness behavior. Sometimes, you need to change a JS script that we inject on the phone Example.
  • Add a new feature in the harness. Some tests can't be written because either Gaiatest or Marionette are not ready yet. You can show your development talents here!
  • Heavy change in our Page Object implementation. Sometimes refactors are needed, here are the big ones. Example.