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.
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:
Repositories | WebdriverIO Version |
---|---|
mediawiki/core | 6 |
mediawiki/extensions/AbuseFilter | 6 |
mediawiki/extensions/AdvancedSearch | 6 |
mediawiki/extensions/CirrusSearch | 4 |
mediawiki/extensions/Cite | 6 |
mediawiki/extensions/CodeMirror | 6 |
mediawiki/extensions/Echo | 6 |
mediawiki/extensions/ElectronPdfService | 6 |
mediawiki/extensions/EntitySchema | 6 |
mediawiki/extensions/FileImporter | 7 |
mediawiki/extensions/GrowthExperiments | 6 |
mediawiki/extensions/Math | 6 |
mediawiki/extensions/MobileFrontend | 6 |
mediawiki/extensions/Newsletter | 6 |
mediawiki/extensions/Popups | 6 |
mediawiki/extensions/ProofreadPage | 6 |
mediawiki/extensions/RelatedArticles | 6 |
mediawiki/extensions/TemplateWizard | 6 |
mediawiki/extensions/TwoColConflict | 6 |
mediawiki/extensions/Wikibase | 6 |
mediawiki/extensions/WikibaseLexeme | 6 |
mediawiki/extensions/WikibaseMediaInfo | 6 |
mediawiki/skins/MinervaNeue | 6 |
phabricator/deployment | 6 |
wikibase/termbox | 6 |
wikidata/query/gui | 6 |
wikimedia/portals/deploy | 4 |
wmde/wdio-wikibase | 6 |
mediawiki/extensions/RevisionSlider | 6 |
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):
Period | Timeline |
---|---|
May 17 - May 23 | Exploring the changelog of the packages to be updated, and taking note of all breaking changes from it. |
May 23 - June 7 | Upgrading 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):
Period | Timeline |
---|---|
June 7 -June 13 | Enabling 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 19 | Exploring 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 25 | Integrating 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 7 | Starting 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 16 | Evaluation-I: Preparing for the evaluation and getting conclusion from mentors regarding the Migrations done in Group-A . |
July 17 -July 23 | Exploring 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 31 | Integrating 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 7 | Enabling 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 16 | Extending wdio.conf.js for Group-C and working on remaining task in selenium framework cleanup |
August 16 –August 24 | Integrating 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:
- Made a Trivial change to tests/selenium/readme, amended and updated the commit.
- Successfully runned selenium test locally and created paste
- Upgraded webdriverIO from v6 to v7 for mediawiki/extensions/Echo
- Removed chromedriver dependency
Open Source Contribution
- Partner description page" tooltip in the Library Card Platform is not translatable
- Stop showing block warning message if user is whitelisted
- Removed one-time EZProxy announcement email
- When encountering an error, enable Update pagelist button in dialogue
- Selenium: Added wdio-video-reporter for recording test videos
- Typos fixing in mediawiki/services/mathjax
- Typos fixing in mediawiki/services/cxserver
- Typos fixing in mediawiki/extensions/flaggedrevs
- Typos fixing in mediawiki/core
- Typos fixing in mediawiki/extension/cognate
- Replaced deprecated addToBodyAttributes() with onOutputPageBodyAttributes() hook (tracking)
- Typos fixing in mediawiki/extension/extjsbase
- Typos fixing in mediawiki/extension/renameuser
- Typos fixing in mediawiki/extension/thewikipedialibrary
- Replaced <div class="header"> by <header>, <div class="footer"> by <footer> Successfully
- Improved filename regex in cli/recover-dump
- Typos fixing in mediawiki/extension/renameuser
- Typos fixing in Operation/puppet
Extra
- Selenium: Added wdio-video-reporter for recording test videos
- Created sample cypress test for Wikipedia-preview
- Integrated the test with circleci
- Performed Cross browser testing with firefox and chrome browser
- Created initial test analysis report.
PR: https://github.com/sahilgrewal8072/wikipedia-preview/pull/1