Page MenuHomePhabricator

Outreachy Project Proposal: Selenium Framework Cleanup
Closed, DeclinedPublic

Description

Name: Richa Sharma
Timezone: UTC+05:30
Web Profile: https://helloricha.netlify.app
Blog: https://14richa.github.io/
Githubhttps://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 NameGroup
1mediawiki/coreGroup A
2mediawiki/extensions/AbuseFilterGroup A
3mediawiki/extensions/AdvancedSearchGroup A
4amediawiki/extensions/CirrusSearch: tests/integrationGroup A
4bmediawiki/extensions/CirrusSearch: tests/seleniumGroup A
5mediawiki/extensions/CiteGroup A
6mediawiki/extensions/ContentTranslationGroup A
7mediawiki/extensions/EchoGroup A
8mediawiki/extensions/ElectronPdfServiceGroup A
9mediawiki/extensions/EntitySchemaGroup A
10mediawiki/extensions/FileImporterGroup A
11mediawiki/extensions/GrowthExperimentsGroup B
12mediawiki/extensions/MathGroup B
13mediawiki/extensions/MobileFrontendGroup B
14mediawiki/extensions/NewsletterGroup B
15mediawiki/extensions/ORESGroup B
16mediawiki/extensions/PopupsGroup B
17mediawiki/extensions/ProofreadPageGroup B
18mediawiki/extensions/RelatedArticlesGroup B
19mediawiki/extensions/RevisionSliderGroup B
20mediawiki/extensions/TemplateWizardGroup B
21mediawiki/extensions/TwoColConflictGroup C
22mediawiki/extensions/WikibaseGroup C
23mediawiki/extensions/WikibaseLexemeGroup C
24mediawiki/extensions/WikibaseMediaInfoGroup C
25mediawiki/skins/MinervaNeueGroup C
26phab-deploymentGroup C
27wikibase/termboxGroup C
28wikidata/query/guiGroup C
29wikimedia/portals/deployGroup C

For the above repositories we should ensure:

  1. /tests/selenium/log is in .gitignore so that logs are not getting tracked by git. Tracked by: T265463
  2. README.md is updated and correct. Tracked by: T248221
  3. 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
  4. eslint-config-wikimedia 0.17.x is used in all repositories. Tracked by: T254495
  5. MediaWiki-Dcoker is the default testing environment for Selenium Framework. Tracked by: T247312
  6. Addition of junit publisher to selenium-daily-beta Jenkins Jobs. Tracked by: T214686
  7. 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.

TimelineTasks/DeliverablesComments
Dec 1 - Dec 7Complete T265463 and start on T248221Most of the work in T265463 is already completed as part of the microtasks.
Dec 8 - Dec 14Continue working on T248221 and also ensure that package.json and eslint-config` are updated as required in T247844 and T254495I suggest splitting repositories in groups of 10 and completing T248221, T247844 ad T254495 parallelly
Dec 15 - Dec 21Repeat the above steps for Group B and C
Dec 22 - Dec 28Buffer week for left over items from previous three weeks and a blogpost regarding the progress
Dec 29 - Jan 4Start T254495 for Group A, also ensure the readme stays updated wherever requiredThis could take some time because of docker set-up and integration. Alloting extra time for this task.
Jan 5 - Jan 11Wrap up T254495 for Group A and start it for Group B and C
Jan 12 - Jan 18Continue working on T254495 for Group B and C
Jan 19 - Jan 25Buffer week for left over items from previous three weeks and a blogpost regarding the progress
Jan 26 - Feb 1Start T214686I am currently unsure regarding the complexity of this task. Hence assigning it two weeks.
Feb 2 - Feb 8Continue T214686
Feb 9 - Feb 15Work on writing npm package T259341Want to finish this before taking up T253113 so that work done here can be utilized.
Feb 16 - Feb 22Finish T259341 and use the package in T253113
Feb 23 - Mar 2Buffer week for left over items, blogpost and internship wrap-upHurray! 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

  1. Written documentation on my progress every week.
  2. 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.

Event Timeline

Richa1496 renamed this task from Outreachy Project Proposal: Selenium Framework Cleanup to Outreachy Project Proposal: Selenium Framework Cleanup [WIP].Oct 29 2020, 9:33 AM
Richa1496 updated the task description. (Show Details)

@Richa1496 I see you've recorded a contribution at Outreachy, but you haven't submitted the application. The deadline is Saturday, October 31 2020.

https://www.outreachy.org/outreachy-december-2020-internship-round/communities/wikimedia/refactor-selenium-tests-and-perform-cleanup/contributions/

@Richa1496 I see you've recorded a contribution at Outreachy, but you haven't submitted the application. The deadline is Saturday, October 31 2020.

https://www.outreachy.org/outreachy-december-2020-internship-round/communities/wikimedia/refactor-selenium-tests-and-perform-cleanup/contributions/

Thanks for noticing, I have submitted the application.

Richa1496 renamed this task from Outreachy Project Proposal: Selenium Framework Cleanup [WIP] to Outreachy Project Proposal: Selenium Framework Cleanup .Oct 30 2020, 6:31 AM
Gopavasanth subscribed.

@Richa1496 We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 28 quality applications, and we could only accept 7 interns. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many interns who we did not accept in 2019 have become Wikimedia maintainers, contractors and even Outreachy interns and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for Outreachy next year, we look forward to your participation!

If you're looking for a task take a look at T210726: Selenium framework maintenance. Let us know if you need help.