B2G/QA/Automation/UI/How to contribute: Difference between revisions

From MozillaWiki
< B2G‎ | QA‎ | Automation‎ | UI
Jump to navigation Jump to search
(First revision)
 
m (Linked to the main contributor list)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Like regular computing projects, end-to-end automation requires some time to get used to it.
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 below a flow. We recommend you to try every task within a step before trying the next step.
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 be able to see, the list below represents the type of tasks you could do. Please ask in [irc://irc.mozilla.org/#fxosqa #fxosqa] when you want to try one. Main contributors will help you to find what can be added or fixed.
As you'll see, the list below represents the type of tasks you could do. Please ask in [irc://irc.mozilla.org/#fxosqa #fxosqa] when you want to try one. [https://wiki.mozilla.org/B2G/QA/Automation#Contributors Main contributors] will help you to find what can be added or fixed.


= Step 1: Install the dependencies and run one test =
= Step 1: Install the dependencies and run one test =
Line 17: Line 17:
* Read [https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch how to submit a patch in Gaia]
* Read [https://developer.mozilla.org/en-US/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch how to submit a patch in Gaia]


Like said above, ask in [irc://irc.mozilla.org/#fxosqa #fxosqa] for a good first test to write. It's usually one that works within a single app and verifies textual data. [https://bugzilla.mozilla.org/show_bug.cgi?id=1180624 Here's an example].
As mentioned above, ask in [irc://irc.mozilla.org/#fxosqa #fxosqa] for a good first test to write, preferably one that works within a single app and verifies textual data. [https://bugzilla.mozilla.org/show_bug.cgi?id=1180624 Bug 1180624 is a good example].


= Step 3: Fix your first test, write a harder one. =
= Step 3: First test failure fix, write a harder one. =
There are 2 tasks you can do:
There are 2 tasks you can do:
* Fix a permanent failure. They are usually because of small graphic changes (like locator changes). [https://bugzilla.mozilla.org/show_bug.cgi?id=1208625 Example].
* Fix a permanent failure. They are usually because of small graphic changes (like locator changes). [https://bugzilla.mozilla.org/show_bug.cgi?id=1208625 Example].
Line 27: Line 27:
Things are getting harder!
Things are getting harder!
* Fix an intermittent failure related to a missing wait. [https://bugzilla.mozilla.org/show_bug.cgi?id=1098107 Example].
* Fix an intermittent failure related to a missing wait. [https://bugzilla.mozilla.org/show_bug.cgi?id=1098107 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 [http://marionette-client.readthedocs.org/en/latest/reference.html#api-reference Marionette's APIs]. [https://bugzilla.mozilla.org/show_bug.cgi?id=1221630 Example].
* Fix a permanent failure that requires to inject/by-pass standard [http://marionette-client.readthedocs.org/en/latest/reference.html#api-reference Marionette's APIs]. [https://bugzilla.mozilla.org/show_bug.cgi?id=1221630 Example].


Line 35: Line 34:


= Step 6: Dive into the harness =
= Step 6: Dive into the harness =
* Change the harness behavior. Sometimes, you need to change a JS script that we inject on the phone [https://bugzilla.mozilla.org/show_bug.cgi?id=1188926 Example].
* Change the harness behavior. Sometimes, you may need to change a JS script that we inject on the phone [https://bugzilla.mozilla.org/show_bug.cgi?id=1188926 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!
* 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. [https://bugzilla.mozilla.org/show_bug.cgi?id=1202388 Example].
* Heavy change in our Page Object implementation. Sometimes refactors are needed, here are the big ones. [https://bugzilla.mozilla.org/show_bug.cgi?id=1202388 Example].

Latest revision as of 11:32, 4 December 2015

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!

Pre-requisites:

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.