Page MenuHomePhabricator

GSoC Proposal: Upgrade WebDriverIO version in all repositories to v6.0
Closed, ResolvedPublic

Description

Profile Information

Name: Vidhi Mody
IRC nickname at Freenode: vidhi-mody
Email: vidhimody6@gmail.com
Webpage: https://vidhimody.netlify.com
GitHub: https://github.com/vidhi-mody
Institute: NMIMS University
Location: Mumbai, India
Typical working hours: 4 PM to 1 AM (UTC+5:30). Will be available any time of the day on prior notice.
Timezone: UTC+5:30 (IST)

Synopsis

Overview
MediaWiki is a free and open-source Wiki application. It powers a lot of websites including Wikipedia, Wiktionary, and Wikimedia commons.

Delivery of optimal quality software with unique and innovative features is always a priority. However, without evaluating software components under various expected and unexpected conditions, one cannot guarantee these aspects. Therefore, testing is performed to test every software component large and small. To increase the efficiency of the testing process and to maximize test coverage, automation is imperative. Automation not only improves the quality of testing but also makes it faster and reduces the cost involved.

MediaWiki uses WebdriverIO, an open-source test automation framework, as it’s primary testing framework. WebdriverIO v6.0 was released just a few days back, while it's previous version, v5.0 was released in early December, 2018. However, many of MediaWiki's repositories use v4.0 which has now been deprecated. WebdriverIO v6.0 brings with it a number of internal improvements that speed up test execution with lower CPU and memory usage. Upgrading to the current version would therefore be very beneficial. For this, a stepwise approach must be devised to first upgrade all repositories to v5.0 and then ultimately to v6.0.

General flow to upgrading WebdriverIO to v6 for any repository

WhatsApp Image 2020-03-30 at 17.08.05.jpeg (807×768 px, 126 KB)

A summary of Mediawiki's repositories that use WebdriverIO

Sr No.Repository NameWebdriverIO Version
1Abuse Filter4.14.0
2AdvancedSearch4.13.2
3CirrusSearch4.13.2
4Cite4.14.1
5ContentTranslation4.14.4
6Echo4.12.0
7ElectronPdfService4.14.4
8FileImporter4.14.4
9GrowthExperiments5.18.7
10Math4.12.0
11MobileFrontend Extension4.13.1
12Newsletter4.12.0
13ORES4.14.0
14Pop Ups4.14.1
15RelatedArticles4.13.1
16RevisionSlider4.14.4
17TemplateWizard4.14.4
18TwoColConflict4.13.2
19Wikibase5.18.6
20WikibaseLexeme5.18.7
21WikibaseCirrusSearch4.14.4
22WikibaseMediaInfo4.14.2
23MinervaNeue4.14.4

Mentors: John Bolorinos (@jbolorinos-ctr ), Željko Filipin (@zeljkofilipin)
Have you already contacted the mentors? Yes

Timeline

Throughout the timeline, it will be beneficial to take up a breadth-first approach of first getting all the repositories to v5.0 and then upgrading them to v6.0. This will help us cover more ground in less time while keeping efficiency in hand.
Sub-tasks ready to be solved using this approach are:
T234314: Upgrade WebdriverIO to version 5 for all repositories
T247254: Upgrade WebdriverIO to version 6 for all repositories

Repositories currently using v4.0 can be further split into two groups taking similarity of test cases and size of the repos into consideration:

WhatsApp Image 2020-03-30 at 19.14.44.jpeg (469×713 px, 58 KB)

Note: These are only tentative groupings and may differ after discussion with the mentors.

PeriodTasks/Deliverables
May 4 to May 31Community Bonding Period: Divide the repositories within the group 1 into two groups(A and B) based on discussions with the mentors. Upgrading all the repos within such a group will then be an individual sub-task
June 1 to June 7This phase will involve upgrading a set of repos in the group 1A to v5.0
June 8 to June 14Continue upgrade the set of repos in the group 1A
June 15 to June 21Explore new features within v5.0 and refactor test cases by discussing with mentors
June 22 to June 28Check the integration of the upgraded repos with the existing Jenkins pipeline and document the changes for future reference
June 29 to July 3Phase 1 Evaluations: All the repositories within group 1A will be upgraded. Document the migrations and update the README with the help of mentors.
July 4 to July 10Upgrade repos in the group 1B to support v5.0
July 11 to July 17Check for their integration with the existing Jenkins pipeline and document the changes for future reference with the help of mentors.
July 18 to July 26All the repositories will have now been upgraded to v5.0. This concludes the sub-task T234314: Upgrade WebdriverIO to version 5 for all repositories. Upgrade the repositories within group 2 to v6.0
July 27 to July 31Phase 2 Evaluations: Document the migrations of repositories within group 2 with the help of mentors
August 1 to August 7Upgrade the repos within group 1A and 1B to v6.0
August 8 to August 23Continue upgrading the repos within group 1B support v6.0
August 24 to August 31Final Commit. Document all the migrations so far with the help of mentors with detailed procedures that were followed for references and check for additional requirements if any.
September 1 to September 7Mentors submit final student evaluations
September 8GSoC results 2020 announced
Future WorkContinue to work on additional tasks and mentor students in GCI and GSoC.

Participation

  • Will be working more than 40 hours a week
  • Will be available on Zulip or IRC during working hours
  • Will be available on email outside working hours
  • Will be writing a blog once every two weeks documenting the process, my experience and progress made upgrading the repos to WebdriverIO V6.0

About Me

I am a final year undergraduate student, pursuing B.Tech. in Computer Engineering from NMIMS University, Mumbai, India. I believe that, Open source projects are a great way of developing quality products by working together with other developers. I have always wanted to contribute to projects that I myself use to give back to the Community. Wikimedia supports many projects like Wikipedia, Wikibooks, Wiktionary, Wikiquote and many more which I have been using for a long time. So while going through the GSoC organizations list, when I came across Wikimedia I knew it was the organization I wanted to apply to. Participating in GSoC will help me meet the community, exchange ideas, learn new skills and grow as a developer. I see Google Summer of Code as an opportunity to play a small role in the open source community, and contribute to the organisation that I love.

I am a curious person who enjoys figuring out the building blocks of the world, and rearranging them to build something even better. I have past experience working with Javascript and Node.js. Contributing to this project, would help me improve my automation testing skills and create readable, clean code that is usable by the community at large.

Past Experience

  • I have worked on several different projects that span a wide range of technologies like Javascript, Node.js, PHP, Python, C++, Django, Java and databases like MongoDB, SQLite, mySQL and Firebase.
  • Created a social network platform (Friend.ly) for personality based friend recommendations using Node.js, Express, EJS templating engine and MongoDB
  • Created a recruitment platform (GitJob) using Node.js, Express, Python, Django and MongoDB

Microtasks completed:

All my projects are hosted on https://github.com/vidhi-mody

Event Timeline

Vidhi-Mody renamed this task from GSoC Proposal: Upgrade WebDriverIo version in all repositories to v6.0 to GSoC Proposal: Upgrade WebDriverIO version in all repositories to v6.0.Mar 31 2020, 9:32 AM
Vidhi-Mody updated the task description. (Show Details)

@Pavithraes @srishakatux Can we resolve this task? Does it have to be open during the internship? We're using T247844 to keep track of the project.

@Vidhi-Mody please reopen if there's anything left to do here.

@Vidhi-Mody Congratulations on a successful GSoC and thank you for all your work! <3
@zeljkofilipin @jbolorinos-ctr Special thanks for being amazing mentors! :)