Page MenuHomePhabricator

GSoC 2021 Proposal: Upgrade WebdriverIO to the latest version 7 for all repositories
Closed, ResolvedPublic

Description

Profile Information

Name: Sahil Grewal

IRC: Sahil Grewal

Email: sahilgrewalhere2001@outlook.com

Github: https://github.com/sahilgrewal8072

Location: Gujarat, India

Typical working hours: 05:00 PM to 02:00 AM (UTC+5:30)

Synopsis

Project Summary

Testing of software is important since it discovers defects/bugs before the delivery to the client, which guarantees the quality of the software. It makes the software more reliable and easy to use. Thoroughly tested software ensures reliable and high-performance software operation. Now to ease regression testing time and for better efficiency to validate complex scenarios automation is preferred.

Automated-testing.png (487×849 px, 20 KB)

The Major Goal
Currently mediawiki is using Webdriverio as a browser driver for our test automation framework which is at version 6 (exception: 2 are at V4). The goal of this project is to migrate them to version 7 (Latest) Which was released recently on Feb 9 , 2021. Also we need to perform cleanup and refactoring of the existing WebdriverIO code across all repositories. (Additional goals below).

Features in new updates

  • Stricter Protocol Compilance
  • Test Coverage Reporting
  • Dropped Node v10 support
  • Improved google lighthouse Integration

The Additional Goals:

  • Enabling of video recording in all selenium test
  • Sanitizing Page Object Imports across all repos.
  • Extending the wdio.conf.js file so that the same file can be used/extended across all repositories.

List of Mediawiki’s Repositories using WebdriverIO:

RepositoriesWebdriverIO Version
mediawiki/core6
mediawiki/extensions/AbuseFilter6
mediawiki/extensions/AdvancedSearch6
mediawiki/extensions/CirrusSearch4
mediawiki/extensions/Cite6
mediawiki/extensions/CodeMirror6
mediawiki/extensions/Echo6
mediawiki/extensions/ElectronPdfService6
mediawiki/extensions/EntitySchema6
mediawiki/extensions/FileImporter7
mediawiki/extensions/GrowthExperiments6
mediawiki/extensions/Math6
mediawiki/extensions/MobileFrontend6
mediawiki/extensions/Newsletter6
mediawiki/extensions/Popups6
mediawiki/extensions/ProofreadPage6
mediawiki/extensions/RelatedArticles6
mediawiki/extensions/TemplateWizard6
mediawiki/extensions/TwoColConflict6
mediawiki/extensions/Wikibase6
mediawiki/extensions/WikibaseLexeme6
mediawiki/extensions/WikibaseMediaInfo6
mediawiki/skins/MinervaNeue6
phabricator/deployment6
wikibase/termbox6
wikidata/query/gui6
wikimedia/portals/deploy4
wmde/wdio-wikibase6
mediawiki/extensions/RevisionSlider6

Possible Mentor(s)

Have you contacted your mentors already?
Yes! I have contacted them via Zulip

Timeline

According to https://www.mediawiki.org/wiki/Selenium/Reference/Example_Code , all of the repositories have been divided mainly into two groups by taking line of code, specs file into consideration.
Taking reference from the above link, I have divided this repos into two main group and one more group for exceptions :
Group-A: The group A will contains the list of repositories with simple spec files for tests.

Repositories Group-A
mediawiki/extensions/AbuseFilter
mediawiki/extensions/Cite
mediawiki/extensions/Echo
mediawiki/extensions/ElectronPdfService
mediawiki/extensions/EntitySchema
mediawiki/extensions/FileImporter
mediawiki/extensions/GrowthExperiments
mediawiki/extensions/Math
mediawiki/extensions/Newsletter
mediawiki/extensions/ProofreadPage
phabricator/deployment

Group-B: The group B will contains the list of repositories with advanced spec files for tests.

Repositories Group-B
mediawiki/core
mediawiki/extensions/AdvancedSearch
mediawiki/extensions/CodeMirror
mediawiki/extensions/MobileFrontend
mediawiki/extensions/Popups
mediawiki/extensions/RelatedArticles
mediawiki/extensions/RevisionSlider
mediawiki/extensions/TwoColConflict
mediawiki/extensions/Wikibase
mediawiki/extensions/WikibaseLexeme
mediawiki/extensions/WikibaseMediaInfo
mediawiki/skins/MinervaNeue
wikibase/termbox
wmde/wdio-wikibase

Group-C: : The group C will consists of exceptional repositories which are using cucumber instead of mocha framework and the ones which are not using page object pattern. Although Some of them are already included in group B due to their complexity, We are not going to include them in group C For example: mediawiki/Extensions/MobileFrontend is using cucumber and not using page object pattern.

Repositories Group-C
mediawiki/extensions/CirrusSearch (v4)
mediawiki/extensions/TemplateWizard
wikimedia/portals/deploy
wikidata/query/gui

Community Bonding Period (May 17, 2021 - June 7, 2021):

PeriodTimeline
May 17 - May 23Exploring the changelog of the packages to be updated, and taking note of all breaking changes from it.
May 23 - June 7Upgrading webdriverIO for the repositories in Group-A and removing chromedriver dependency from them. Additionally, after updating, running the specs within test suite, and fixing the errors (if exist) And rerun them.

Coding Period (June 7, 2021 - August 16, 2021):

PeriodTimeline
June 7 -June 13Enabling video recording for all Selenium Test by installing the necessary video reporter package and configuring it at wdio.conf.js for Group-A, Additionally creating generic npm package for it
June 13 -June 19Exploring and extending the wdio.conf.js file so that the same file can be used/extended across all repositories. Additionally sanitizing the page objects imports for the Group-A repositories
June 19 -July 25Integrating the upgraded repositories of group-A with the existing Jenkins pipeline. And Creating manual report for the changes carried out for Group-A
July 25 -July 7Starting the upgradation for repositories in Group-B. Removing chromedriver dependency from them. Additionally, after updating, running the specs within test suite, and fixing the errors (if exist) And rerun them
July 12 -July 16Evaluation-I: Preparing for the evaluation and getting conclusion from mentors regarding the Migrations done in Group-A .
July 17 -July 23Exploring and extending the wdio.conf.js file so that the same file can be used/extended across all repositories. Additionally sanitizing the page objects imports for the Group-B repositories .
July 24 -July 31Integrating the upgraded repositories of Group-B with the existing Jenkins pipeline. And Creating manual report for the changes carried out for Group-B. Starting the updation for Group-C
August 1 – August 7Enabling video recording for all Selenium Test by installing the necessary video reporter package and configuring it at wdio.conf.js for Group-B and Group-C , Additionally creating generic npm packages.
August 8 – August 16Extending wdio.conf.js for Group-C and working on remaining task in selenium framework cleanup
August 16 –August 24Integrating the upgraded repositories of group-C with the existing Jenkins pipeline. And Creating Final report for the changes carried out for all the repositories during the project period

Final Evaluation(August 24, 2020 - August 31, 2020):
Prepare for the evaluation, fixing the unforeseen bugs, and working on community feedback.

Participation

  • I will be working over 25-30 hours a week.
  • I will be available on IRC and Zulip during my working hours
  • I will also communicate on Phabricator via comments on the related project subtasks.
  • In case of urgency or during non-working hours I can be contacted via email

About me

Education and Academics
I am currently in second year (4th Sem) pursuing Bachelor of Technology (B.tech) in Computer Science & Engineering at Parul University. I am also a junior tech volunteer at Bitcode Club at Parul university.

Technical Skills

Programming Languages:C, C++, Python, javascript
Web Development:Html, Css, NodeJS, Php, Django, Bootstrap, jQuery
Operating Systems:Windows and Ubuntu
DevOps:Docker, Cypress, Mocha, CircleCI, Selenium, Travis Cl
Database:MySQL

How did you hear about this program?

I heard about this program in a college session from my professor regarding open source development.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?

Fortunately End Sem examination will commence from 12th April and ends on 22th April, Hence I don’t have any commitments on this summer, and hence 25-30 hours per week is easily manageable for me to work for this project.

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 to google summer of code with Wikimedia organization

What does making this project happen mean to you?

I am quite passionate in learning through e-resources since my childhood, I have been using Wikipedia since childhood and it always helped me in understanding complex things and has proven to be the better choice among others available on the Internet due to its easy availability. What Wikipedia today is just because of its community. Working on this project will not only help in improving my automation testing skills, but it will also be a pride for me to create something that would be usable by large community . It would help me to realize that how collaboration can lead to great things.

Past Experience

  • I have worked on several different projects that span a wide range of technologies like Html , CSS, Javascript, PHP, Python, C++, Django, Bootstrap, JQuery, and databases like MySQL.
  • I have decent understanding for writing automation tests and also familiar in cypress, selenium.

Microtasks:

Open Source Contribution

Extra

PR: https://github.com/sahilgrewal8072/wikipedia-preview/pull/1

Event Timeline

GSoC application deadline has passed. If you have submitted a proposal on the GSoC program website, please visit https://phabricator.wikimedia.org/project/view/5104/ and then drag your own proposal from the "Backlog" to the "Proposals Submitted" column on the Phabricator workboard. You can continue making changes to this ticket on Phabricator and have discussions with mentors and community members about the project. But, remember that the decision will not be based on the work you did after but during and before the application period. Note: If you have not contacted your mentor(s) before the deadline and have not contributed a code patch before the application deadline, you are unfortunately not eligible. Thank you!

Sahilgrewalhere updated the task description. (Show Details)
Sahilgrewalhere updated the task description. (Show Details)