User:Rachel99/proposal1

Browser Test Automation for VisualEditor (Outreach Program for Women - Round 6)
Name: Rachel Thomas

Email: rachelqa99 [at] gmail [dot] com

IRC handle: rachel99

Location: Boston, MA (UTC -4:00 )

Timezone: EDT (UTC -4:00)

Typical working hours: Flexible, but most likely would work 8:30am-4:30pm EDT

Background
As the major issues in VisualEditor have been fixed, the VisualEditor has recently been deployed to 14 non-English Wikipedias so that users can become familiar with the editor. It was already been deployed to the English Wiki in December 2012. VisualEditor will eventually become the default editor for Wikipedia, and thus it is important that its current features are tested thoroughly. These tests can then be run as regression tests to make sure nothing breaks as more new features are deployed to VisualEditor in future phases. As the editor is finally stable enough to have automated tests written and run against it, now is a good time to set up test cases that confirm VisualEditor is working the way it should.

VisualEditor is a great target for testing because it matches the desired criteria exactly:  http://www.mediawiki.org/wiki/QA/Browser_testing#Rationale. VE should work in many browsers, is javascript-heavy; requires navigation to test properly; is likely to have regression issues, and is a critically important project.

Goals
To construct a battery of web automation tests for the thorough testing of VisualEditor. These would be Accepted Test Driven Development tests written in Cucumber and falling under the same framework as the currently running web automation tests. The Cucumber tests would be coded using Ruby Page Object Design, and then run under Jenkins. The tests should cover all the current features of VisualEditor.

Implementation
A top-level overview of what needs to be done:


 * 1) Come up with the features needed to be tested for VE functionality
 * 2) Add these VE features to current QA/Backlog page under VE section
 * 3) Write Cucumber test cases for each feature
 * 4) Run each test case, and write Ruby code to execute it properly
 * 5) Check into Gerrit, and have it approved by Chris or Zeljko
 * 6) Add it to Jenkins

Some examples of features needing to be tested:

Test that VE works in User and Article namespaces

Test that VE doesn't work for talk pages, templates, categories, etc.

Test Vector skin to make sure VisualEditor is working

Test Monobook skin to make sure VisualEditor is working

VisualEditor works in the most modern versions of Firefox, Chrome and Safari

Test that editing references or templates that cannot be edited yet, will be cross-hatched, have a tooltip and can be deleted

Language tests:
 * multiple character sets
 * right-to-left languages like Hebrew

Integration tests
 * Wikimedia projects that may deploy VE in the future (i.e. Wikisource)

Consider open bugs https://bugzilla.wikimedia.org/buglist.cgi?list_id=179710&product=VisualEditor&query_format=advanced&resolution=---&resolution=LATER&resolution=DUPLICATE&order=bug_id%20DESC&query_based_on=

Timeline
This a tentative timeline, and is subject to change. Note that I believe I overestimated how much time it takes to code Cucumber tests.

Past Open Source Experience
I have been volunteering at Wikipedia for the past 3 months in the Browser web automation area to gain more experience in QA automation, as well as to engage in working on Open Source. I have always been a supporter of free and open software, so I am really excited to be working with the Wikimedia Foundation. I have really enjoyed my time volunteering here. I have been mentored by Chris Mcmahon and Zeljko Fillipin as I have gone through the process of learning the environment at Mediawiki, and then learning Cucumber and Ruby to write and code the test cases. I have done the test case for the SpecialNewsFeed feature and search feature in Cucumber, and have also coded the corresponding search.feature script in Ruby. Zeljko and I paired up to work on the search.feature script, and using IRC, etherpad, and our own local running environments we were able to complete it successfully

I have also learned how to use git and gerrit in order to contribute tests for Search that we are running right now.

Browser automation skills and experience are not specific to any given test target, so my contributions need not be limited to VisualEditor or Search or any other particular target, but VisualEditor is just a particularly good match for browser tests, and those tests do not exist right now. As VisualEditor testing is now becoming a higher priority, it seems like a good time for me to start writing tests for it.

Past Contributions
https://gerrit.wikimedia.org/r/#/q/owner:rachelthomas_99%2540yahoo.com,n,z

About Me
I have a B.S in Mathematics, Minor Computer Science from SUNY Albany and have over 20 years experience working in IT at various positions including Linux System Administration, Release Engineer, QA tester and Technical Support Engineer. As the lead QA tester for a small startup, I developed test cases, performed functional, regression and integration tests, and filed bug reports in Bugzilla.

I have always been interested in Quality Assurance, particularly in QA automation. I really enjoy coding and have done coding in Shell scripting, Perl, and Java throughout my career. I am adept at learning new coding languages quickly.

I hope to pursue a career in QA automation in the future, while still staying involved as a volunteer in Wikipedia. I would like to continue to help the Wikipedia QA automation group by adding test cases to their backlog in the future, or by doing other volunteer work of interest.

I am also interested in community building, particularly among women in technology, and I was a member of Society of Women Engineers for many years. During that time, I managed a committee of volunteers at SWE-Boston that were responsible for re-doing the SWE Boston website. I received the "Outstanding SWE-Boston Member Award" in 2003 for my work in getting the new website constructed.

Other community organizations that I am currently involved in are my temple, where I am on the Board of Directors, and the Software Quality Group of New England, where I am a member.

June
The first thing I have accomplished this month is to write my Visual Editor Charter. This test charter lists the areas of Visual Editor that I will be writing test cases for. This includes links, references, templates, categories,etc.

The first few days were dedicated to settling down upon the methods of working and, getting familiar with the codebase.I also installed the extension on my local version of MediaWiki and tested it with a DjVu file.The first task was to refactor the file ProofreadPage.body.php so that it can be cleansed of code that should have been in some other place. DbConnector classes were used to separate data fetching from other processes.Thomas moved the code related to index pages to ProofreadIndexPage.Some parts of the editing system were moved to a different class for better modularity.Currently I am working on the refactoring of Page pages. I am also reading up on PHPUnit so as to add more unit tests.Changes in gerrit: