===Profile Information
**Name**: Gaurav Kataria
**Email**: gkataria987@gmail.com
**Web Profile**:[[ https://www.linkedin.com/in/gaurav-kataria987 | Linkedin ]]
**Location**: Faridabad,Haryana,India
**Working hours**: 7pm to 3am(Indian Standard Time) other than that I’ll be available in non-working hours too.
===**Synopsis**
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..
===**Mentors**
@jbolorinos-ctr
@zeljkofilipin
**Have you contacted your mentors already?**
Yes, I did
====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.
===Deliverables
# After completion of Internship , these are the milestones:
# Upgrade the version of WebDriverIo to 6 in all repositories.
# Detailed and easy to understand documentations of all work I done.
===About me
I am an undergraduate student at Computer science Engineering. I have good experience of working in javascript and Node js. I also love to play with web automation using selenium and from the last few weeks I am reading about WebdriverIo. I tend to complete the work provided to me on time.
**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.
===Past Experience
- I have 2 years of experience with javascript and node js .
- I created an e-commerce website using Node js and Javascript and angular & use Mobgo as database
- I have done a full stack development internship at Bharti robotic System,there I added many features in their CRUD application and do Testing.
===Participation
- 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
- 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
===Timeline
>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.
>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
- Popup
- FileImporter
- TemplateWizard
> June 7, 2020 - June 13 ,2020
- MobileFrontend
- Cite
- MinervaNeue
>June 14, 2020 -June 20, 2020
- AdvancedSearch medium
- CirrusSearch
- RevisionSlider
>June 21, 2020 - June 29, 2020
- Math
- Newsletter
- ORES
>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
- RelatedArticles
- TwoColConflict
- WikibaseCirrusSearch
- WikibaseMediaInfo
>July 10, 2020 - July 16, 2020
- ContentTranslation
- Echo
- ElectronPdfService
- AbuseFilter
>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
- Popup
- FileImporter
- TemplateWizard
- Cite
>July 23, 2020 -July 27, 2020
- AdvancedSearch medium
- CirrusSearch
- RelatedArticles
- MinervaNeue
>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
- Math
- MobileFrontend
- Newsletter
- ORES
- WikibaseLexeme
>August 8, 2020 - August 14, 2020
- RevisionSlider
- TwoColConflict
- WikibaseCirrusSearch
- WikiBase
- GrowthExperiments
>August 15, 2020 - August 24, 2020
- ContentTranslation
- Echo
- ElectronPdfService
- AbuseFilter
- WikibaseMediaInfo
>August 24, 2020 - August 21, 2020 - Final Evaluation
By now WebDriverIo version in all repositories are upgraded to 6 with proper and detailed documentation.