B2G/QA/Automation/UI/How to contribute
Like regular computing projects, end-to-end automation requires some time to get used to.
If you would like to discover the project step by step, here is the suggested workflow. We recommend you try every task within each step before moving on to the next step.
As you'll 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!
As mentioned above, ask in #fxosqa for a good first test to write, preferably one that works within a single app and verifies textual data. Bug 1180624 is a good example.
Step 3: First test failure fix, 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.
- 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 may 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.