Name: Richa Sharma
Timezone: UTC+05:30
Web Profile: https://helloricha.netlify.app
Blog: https://14richa.github.io/
Github: https://github.com/14Richa
Typical working hours: 10 AM to 9 PM (UTC+5:30). Will be available at other times of the day on prior notice.
Location: New Delhi, India
Mentors: @zeljkofilipin , @Soham , @Vidhi-Mody
Contribution
Summary
MediaWiki uses WebdriverIO as its primary testing framework. Recently WebdriverIO was migrated to v6 for most of the repositories. While migration was being carried out, it was noticed that there was a need for cleanup and refactoring of the existing WebdriverIO code across the repositories. It is desirable to keep the tests consistent across repositories and make the components re-usable. This helps in maintaining code quality and increases developer productivity.
Broad goals of the project are:
- Remove inconsistency and redundancy in selenium test files across different repositories.
- Ensure that the documentation of the testing is updated and in-sync with the latest code.
- Develop packages and abstractions which can be re-used inside different repositories for testing. This would remove duplication of code across files in different repositories.
Technical Details
Repositories running selenium tests currently:
Source: 1 and 2
| No. | Repository Name | Group |
| 1 | mediawiki/core | Group A |
| 2 | mediawiki/extensions/AbuseFilter | Group A |
| 3 | mediawiki/extensions/AdvancedSearch | Group A |
| 4a | mediawiki/extensions/CirrusSearch: tests/integration | Group A |
| 4b | mediawiki/extensions/CirrusSearch: tests/selenium | Group A |
| 5 | mediawiki/extensions/Cite | Group A |
| 6 | mediawiki/extensions/ContentTranslation | Group A |
| 7 | mediawiki/extensions/Echo | Group A |
| 8 | mediawiki/extensions/ElectronPdfService | Group A |
| 9 | mediawiki/extensions/EntitySchema | Group A |
| 10 | mediawiki/extensions/FileImporter | Group A |
| 11 | mediawiki/extensions/GrowthExperiments | Group B |
| 12 | mediawiki/extensions/Math | Group B |
| 13 | mediawiki/extensions/MobileFrontend | Group B |
| 14 | mediawiki/extensions/Newsletter | Group B |
| 15 | mediawiki/extensions/ORES | Group B |
| 16 | mediawiki/extensions/Popups | Group B |
| 17 | mediawiki/extensions/ProofreadPage | Group B |
| 18 | mediawiki/extensions/RelatedArticles | Group B |
| 19 | mediawiki/extensions/RevisionSlider | Group B |
| 20 | mediawiki/extensions/TemplateWizard | Group B |
| 21 | mediawiki/extensions/TwoColConflict | Group C |
| 22 | mediawiki/extensions/Wikibase | Group C |
| 23 | mediawiki/extensions/WikibaseLexeme | Group C |
| 24 | mediawiki/extensions/WikibaseMediaInfo | Group C |
| 25 | mediawiki/skins/MinervaNeue | Group C |
| 26 | phab-deployment | Group C |
| 27 | wikibase/termbox | Group C |
| 28 | wikidata/query/gui | Group C |
| 29 | wikimedia/portals/deploy | Group C |
For the above repositories we should ensure:
- /tests/selenium/log is in .gitignore so that logs are not getting tracked by git. Tracked by: T265463
- README.md is updated and correct. Tracked by: T248221
- package.json has @wdio dependencies with version v6 and above. Sample paste: P8623. This is also being tracked by: T247844. All repositories except mediawiki/extensions/CirrusSearch and wikimedia/portals/deploy seem to have been moved to v6
- eslint-config-wikimedia 0.17.x is used in all repositories. Tracked by: T254495
- MediaWiki-Dcoker is the default testing environment for Selenium Framework. Tracked by: T247312
- Addition of junit publisher to selenium-daily-beta Jenkins Jobs. Tracked by: T214686
- Recording of Selenium tests. Tracked by: T253113
Apart from the above tasks which need to be done and/or checked for each repository, we want to create a npm package that helps in recording videos for test runs (T259341). This will help in recording selenium tests which is a requirement for each repository.
| Timeline | Tasks/Deliverables | Comments |
| Dec 1 - Dec 7 | Complete T265463 and start on T248221 | Most of the work in T265463 is already completed as part of the microtasks. |
| Dec 8 - Dec 14 | Continue working on T248221 and also ensure that package.json and eslint-config` are updated as required in T247844 and T254495 | I suggest splitting repositories in groups of 10 and completing T248221, T247844 ad T254495 parallelly |
| Dec 15 - Dec 21 | Repeat the above steps for Group B and C | |
| Dec 22 - Dec 28 | Buffer week for left over items from previous three weeks and a blogpost regarding the progress | |
| Dec 29 - Jan 4 | Start T254495 for Group A, also ensure the readme stays updated wherever required | This could take some time because of docker set-up and integration. Alloting extra time for this task. |
| Jan 5 - Jan 11 | Wrap up T254495 for Group A and start it for Group B and C | |
| Jan 12 - Jan 18 | Continue working on T254495 for Group B and C | |
| Jan 19 - Jan 25 | Buffer week for left over items from previous three weeks and a blogpost regarding the progress | |
| Jan 26 - Feb 1 | Start T214686 | I am currently unsure regarding the complexity of this task. Hence assigning it two weeks. |
| Feb 2 - Feb 8 | Continue T214686 | |
| Feb 9 - Feb 15 | Work on writing npm package T259341 | Want to finish this before taking up T253113 so that work done here can be utilized. |
| Feb 16 - Feb 22 | Finish T259341 and use the package in T253113 | |
| Feb 23 - Mar 2 | Buffer week for left over items, blogpost and internship wrap-up | Hurray! Selenium Framework is clean! |
Participation
- Will be working more than 50 hours a week
- Will be available on Zulip during working hours
- Will be available on email outside working hours
Why Is This Necessary?
It is desirable to keep the tests consistent across repositories and make the components re-usable. This helps in maintaining code quality and increases developer productivity.
Other Deliverables
- Written documentation on my progress every week.
- Regular communication with my mentor(s) and other community members.
About Me
I am proficient in Front-end stack with a knack of design sense. I feel that my projects should please the user and provide a friction less experience.
Tech stack:
- ReactJS for front-end web apps, Node.js/Express.js for backend.
- Proficient in HTML/5, CSS/3, SASS, Javascript, Babel, Webpack, NPM, JQuery, Markdown, Latex.