Page MenuHomePhabricator

[PROPOSAL] Upgrade WebdriverIO to the latest version for all repositories
Closed, DeclinedPublic

Description

Profile Information

Name: Gaurav Kataria
Email: gkataria987@gmail.com
Web Profile:Linkedin & Github
Location: Faridabad,Haryana,India
Working hours: 7pm to 3am(Indian Standard Time) other than that I’ll be available in non-working hours too.

Synopsis

Wikimedia uses the WebdriverIo framework for all of its automation testing. Testing is an important part of any project and the goal is to find an error pre-deployment and without automation Testing is impossible because no one has time or effort to do the same thing repeatedly so here the concept of automation testing comes.Currently, 20 repositories of Wikimedia codebase use WebDriverIo version 4 but version 4 of WebDriverIo is completely deprecated as version 5 was released more than a year ago and Version 6 was released a few days back. Version 6 has many new features that can prove to be great for Wikimedia.
So for full support and easy development of WebDriverIo, we must upgrade the WebdriverIo version.So this project is aimed to first upgrade the version of WebDriverIo to 5 then to 6 in all repositories.
The Goal of this project was not just to upgrade WebdriverIo to the latest version but also use the features of latest version of WebdriverIo to refactor test cases and add some new test cases acording to funtionality of repositories.

Mentors

@jbolorinos-ctr
@zeljkofilipin
Have you contacted your mentors already?
Yes, I did

Wikimedia uses WebDriverIo in following repositories

1. AbuseFilter - The AbuseFilter extension allows privileged users to set specific actions to be taken when actions by users, such as edits, match certain criteria.
2. AdvancedSearch - The AdvancedSearch extension enhances Special:Search by providing an advanced parameters form and improving how namespaces for a search query are selected.
3. CirrusSearch - The CirrusSearch extension implements searching for MediaWiki using Elasticsearch.
4. Cite - The Cite extension allows a user to create references as footnotes on a page. It adds two parser hooks to MediaWiki, <ref> and <references />; these operate together to add citations to pages.
5. ContentTranslation - The ContentTranslation extension is a tool that allows editors to translate an article from one language to another with the help of machine translation and other translation aids
6. Echo - The Echo extension provides an in-wiki notification system that can be used by other extensions.
7. ElectronPdfService - The ElectronPdfService extension provides access to the Electron Service for browser-based PDF rendering.
8. FileImporter - The FileImporter extension provides a simple interface accepting a single URL which can be used to import files to a wiki.
9. Math - The Math extension provides support for rendering mathematical formulae.
10. MobileFrontend - The MobileFrontend extension creates a separate mobile site for your mobile traffic
11. Newsletter - The Newsletter extension provides a catalog of newsletters registered in a given wiki, an easy way for publishers to announce new issues, and an easy way for users to subscribe/unsubscribe and be notified via web or email when new issues are announced
12. ORES - The ORES extension integrates data from an ORES service into the RecentChanges view.
13. Popup -The Popup extension shows a popup on every nth page request of a user by setting a cookie and counting page requests.
14. RelatedArticles - The RelatedArticles extension adds a parser function to your wikitext that allows associating related articles with your article. It shows related pages as a list of articles and their descriptions at the bottom of a page on desktop and mobile.
15. RevisionSlider - The RevisionSlider extension adds a slider interface to the diff view, so that you can easily move between revisions.
16. TemplateWizard - The TemplateWizard extension adds a popup dialog box for adding template code to wikitext.
17. TwoColConflict - The Two Column Edit Conflict View is a new interface for the edit conflict resolution page. It displays colliding text passages in pairs next to each other, making it easier to merge your text with the one that’s currently online.
18. WikibaseCirrusSearch -. The WikibaseCirrusSearch provides ElasticSearch functionality, as supported by CirrusSearch extension, to Wikibase Repository extension.
19. WikibaseMediaInfo- WikibaseMediaInfo is an extension to Wikibase adding a MediaInfo entity for handling structured data about multimedia files
20. Minerva Neue - Minerva is the skin that serves mobile traffic for Wikimedia projects across the world. Compared to other skins e.g. Vector provides a much more simplistic user interface and is much more aggressive about optimising for performance so that it can cater for mobile users.

All these repositories had version 4 of WebDriverIo , but few repositories also had version 5 ,they are : -
1. Wikibase - Wikibase is the software that enables MediaWiki to store structured data or access data that is stored in a structured data repository. Wikibase basically consists of two MediaWiki extensions, Wikibase Repository and Wikibase Client, that can be enabled individually
2. GrowthExperiments - The GrowthExperiments extension is used by Wikimedia Foundation sites for experiments done by the Growth team. The extension contains features for:

  1. Special Homepage
  2. Welcome Survey
  3. Help Panel
  4. ConfirmationEmail improvements

3. WikibaseLexeme - The Wikibase Lexeme extension provides improved modeling for lexical entities such as words and phrases.

Deliverables

After final evaluation, these are the milestones:

  1. Upgrade the version of WebDriverIo to 6 in all repositories.
  2. Use features of latest version of WebDriverIo to decrease the complexity and increase the efficiency of test cases in all repositories
  3. Detailed and easy to understand documentations of all work I done.

Steps to upgrade webdriverIo version in a repository

  • Read the changelog of newer version.
  • Do required changes in test files of that repository.
  • Install the new webdriverIo version and its dependencies.
  • Do required changes in webdriverrio configuration file.
  • Use the new featues of the WebdriverIo version in a productive manner, which can help to refactor tests and do more efficient testing.
  • Think some new Test Cases in that repository ,Discuss with mentors and Implement ,if required.
  • Run the test suite and check, is everything is working fine or not.
  • Make proper Documentations for future reference.

About me

I am an undergraduate student at Computer science Engineering. I have good experience of working in javascript and Node js. I also love to play with web automation using selenium and from the last few weeks I am reading about WebdriverIo. I tend to complete the work provided to me on time.
Q. How did I hear about this program?
A friend of mine told me about it.
Q. Will I have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
No, I don't have any other commitments during the GSOC.
Q. We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?
I am only applying for the Google Summer of Code with Wikimedia organization, as in this period I want to learn and contribute to wikimedia as much as I can.
Q. What does making this project happen mean to me?
Automation always Fascinate me So I am learning about selenium and WebdriverIo from a while , that's why I came for this project. The completion of this project will make me confident about my automation skills, which I want to pursue further as well.

Past Experience

  • I have 2 years of experience with javascript and node js .
  • I created an e-commerce website using Node js and Javascript and angular & use Mobgo as database
  • I have done a full stack development internship at Bharti robotic System,there I added many features in their CRUD application and do Testing.

Contribution to this Project

WMF has been providing the essential content online that helps students like me to explore and learn new stuff. It is the most reliable and informative source on the internet. I would say I have been a WMF product user since the time I started using the internet.

  • I Completed following Micro Tasks
    • T248016: Micro-task: Run Selenium tests on your machine
    • T248232: Micro-task: Make a trivial change to tests/selenium/README.md file of mediawiki/core repository
    • T248223: Micro-task: Update a simple test suite to WebdriverIO version 5
    • T248231: Micro-task: Update package.json of mediawiki/core to use WebdriverIO version 6
  • Faced Some Issues when I am trying to setup Mediawiki-docker on my machine ,that's because Develepers.md is not detailed, So I Commit some patches for this file.

Participation

  • During Working Hours I will be available on all IRC or Zulip Chat
  • I will available on Gmail for Communication 24/7 and work in non working hours too according to the flexibility
  • I have also had a good experience dealing with Phabricator. So, I will use it for getting community review, publishing errors and questions relevant to my tasks and being familiarized with previous Tasks in MediaWiki.
  • I have a good experience dealing with Gerrit. So, I will use it for developing, getting reviews, testing and merging.
  • I am familiar with the Code structure in MediaWiki and PageForms, as I have already finished Some Microtasks

Timeline

May 4, 2020 - May 19, 2020 - Community bonding period

  • Knowing more about WIkimedia
  • Read and analyze the changelog of WebDriverIo Version 5 & 6
  • Read the documentation of various repositories where Webdriver is used

May 20, 2020 - May 31, 2020 - Familiarize with wikimedia codebase

  • Understand the working of different repositories,
  • Do some tests for better understanding.
  • Think Some new Test cases for repositories and Discuss with mentors

I will start by Upgrading the Webdriver version to 5 of small and easy to understand repositories and When WebDriverIo version in all the repositories is upgraded to 5 then i start will upgrading their version to 6. Below I mention which repository I will consider in which week.

June 1, 2020 - June 6, 2020

  • Math
  • FileImporter
  • NewsLetter

June 7, 2020 - June 13 ,2020

  • Echo
  • Cite
  • ElectronPdfService

June 14, 2020 -June 20, 2020

  • AbuseFilter
  • CirrusSearch
  • RevisionSlider

June 21, 2020 - June 29, 2020

  • Popups
  • TemplateWizard
  • ORES

June 29, 2020 - June 31, 2020 - First Evaluation

By now WebriverIo version in 12 repositories are upgraded to 5 with proper and detailed documentations

July 3, 2020 - July 9, 2020

  • RelatedArticles
  • TwoColConflict
  • WikibaseCirrusSearch
  • WikibaseMediaInfo

July 10, 2020 - July 16, 2020

  • ContentTranslation
  • MobileFrontend
  • MinervaNeue
  • AdvanceSearch

Till now WebDriverIo version in all repositories is upgraded to 5 and from now onwards i will upgrade version to 6

July 17, 2020 - July 23, 2020

  • Popup
  • FileImporter
  • TemplateWizard
  • Cite

July 23, 2020 -July 27, 2020

  • AdvancedSearch
  • CirrusSearch
  • RelatedArticles
  • MinervaNeue

July 28, 2020 - July 31, 2020 - Second Evaluation

By now WebDriverIo version in all repositories are upgraded to 5 and version in 8 repositories are upgraded to 6 with proper and detailed documentations

August 1, 2020 -August 7, 2020

  • Math
  • MobileFrontend
  • Newsletter
  • ORES
  • WikibaseLexeme

August 8, 2020 - August 14, 2020

  • RevisionSlider
  • TwoColConflict
  • WikibaseCirrusSearch
  • WikiBase
  • GrowthExperiments

August 15, 2020 - August 24, 2020

  • ContentTranslation
  • Echo
  • ElectronPdfService
  • AbuseFilter
  • WikibaseMediaInfo

August 24, 2020 - August 31, 2020 - Final Evaluation

By now WebDriverIo version in all repositories are upgraded to 6 with proper and detailed documentation.

August 31,2020 and Later

  • Be an active member of wikimedia community.
  • Participate in future programs as a volunteer and a mentor.

Event Timeline

Gaura87 triaged this task as Medium priority.Mar 30 2020, 1:02 AM
Gaura87 updated the task description. (Show Details)
This comment was removed by Gaura87.
Gaura87 updated the task description. (Show Details)
Pavithraes subscribed.

@Gaura87 We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 14 students. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many students who we did not accept in 2019 have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

If you would like a de-brief on why your proposal was not accepted, please let me know as a reply to this comment or on the ‘Feeback on Proposals’ topic of the Zulip stream #gsoc20-outreachy20. I will respond to you within a week or so. :)

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!

@Gaura87 Thank you for your application! I believe your mentor has provided feedback on your proposal, so I'll keep my notes brief and general.

I really like that you've included "Be an active member of wikimedia community" and "Participate in future programs as a volunteer and a mentor" in your proposal. You've also addressed all the sections of the proposal template, which is good. :)

I recommend that you focus on making your proposal more "polished" in the next round and have a clearer structure. For example, I feel the timeline could've been placed right after the deliverables to maintain the flow of your proposal. I'd have also liked your timeline and 'About Me' to be more descriptive. I suggest you start working on your proposal early in the next round to have ample time to get feedback from your mentors and community members (the more the better). Feedback is very valuable in creating a strong proposal.

Also, I'm super glad that you're active on Zulip and are in touch with the team. I look forward to your contributions, and if you participate again, I really hope to see you as an intern. ^_^