User:Rachel99/proposal1

Browser Test Automation for VisualEditor
Name: Rachel Thomas

Email: rachelthomas_99@yahoo.com

IRC handle: rachel99

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

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: (First pass)

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

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=

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.

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.

About Me
I have a B.S in Mathematics combined with 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. 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 hope to pursue a career in QA automation in the future.