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
A summary of Mediawiki's repositories that use WebdriverIO
Sr No. | Repository Name | WebdriverIO Version |
1 | Abuse Filter | 4.14.0 |
2 | AdvancedSearch | 4.13.2 |
3 | CirrusSearch | 4.13.2 |
4 | Cite | 4.14.1 |
5 | ContentTranslation | 4.14.4 |
6 | Echo | 4.12.0 |
7 | ElectronPdfService | 4.14.4 |
8 | FileImporter | 4.14.4 |
9 | GrowthExperiments | 5.18.7 |
10 | Math | 4.12.0 |
11 | MobileFrontend Extension | 4.13.1 |
12 | Newsletter | 4.12.0 |
13 | ORES | 4.14.0 |
14 | Pop Ups | 4.14.1 |
15 | RelatedArticles | 4.13.1 |
16 | RevisionSlider | 4.14.4 |
17 | TemplateWizard | 4.14.4 |
18 | TwoColConflict | 4.13.2 |
19 | Wikibase | 5.18.6 |
20 | WikibaseLexeme | 5.18.7 |
21 | WikibaseCirrusSearch | 4.14.4 |
22 | WikibaseMediaInfo | 4.14.2 |
23 | MinervaNeue | 4.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:
Note: These are only tentative groupings and may differ after discussion with the mentors.
Period | Tasks/Deliverables |
May 4 to May 31 | Community 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 7 | This phase will involve upgrading a set of repos in the group 1A to v5.0 |
June 8 to June 14 | Continue upgrade the set of repos in the group 1A |
June 15 to June 21 | Explore new features within v5.0 and refactor test cases by discussing with mentors |
June 22 to June 28 | Check the integration of the upgraded repos with the existing Jenkins pipeline and document the changes for future reference |
June 29 to July 3 | Phase 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 10 | Upgrade repos in the group 1B to support v5.0 |
July 11 to July 17 | Check for their integration with the existing Jenkins pipeline and document the changes for future reference with the help of mentors. |
July 18 to July 26 | All 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 31 | Phase 2 Evaluations: Document the migrations of repositories within group 2 with the help of mentors |
August 1 to August 7 | Upgrade the repos within group 1A and 1B to v6.0 |
August 8 to August 23 | Continue upgrading the repos within group 1B support v6.0 |
August 24 to August 31 | Final 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 7 | Mentors submit final student evaluations |
September 8 | GSoC results 2020 announced |
Future Work | Continue 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:
- T248232: Micro-task: Make a trivial change to tests/selenium/README.md file of mediawiki/core repository
- T248016: Micro-task: Run Selenium tests on your machine
- T249323: Micro-task: Amend existing commit in Gerrit
- 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
All my projects are hosted on https://github.com/vidhi-mody