Name: Gaurav Kataria
Web Profile:Linkedin & Github
Working hours: 7pm to 3am(Indian Standard Time) other than that I’ll be available in non-working hours too.
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.
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:
- Special Homepage
- Welcome Survey
- Help Panel
- ConfirmationEmail improvements
3. WikibaseLexeme - The Wikibase Lexeme extension provides improved modeling for lexical entities such as words and phrases.
After final evaluation, these are the milestones:
- Upgrade the version of WebDriverIo to 6 in all repositories.
- Use features of latest version of WebDriverIo to decrease the complexity and increase the efficiency of test cases in all repositories
- 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.
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.
- 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.
- 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
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
June 7, 2020 - June 13 ,2020
June 14, 2020 -June 20, 2020
June 21, 2020 - June 29, 2020
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
July 10, 2020 - July 16, 2020
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
July 23, 2020 -July 27, 2020
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
August 8, 2020 - August 14, 2020
August 15, 2020 - August 24, 2020
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.