B2G/QA/Automation/UI/How to contribute
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.