# Status
| version | repositories
| v5 | 2/32 (6%)
| v6 | 3/32 (9%)
| v7 | 27/32 (85%)
[[ https://codesearch.wmcloud.org/search/?q=webdriverio&files=package.json | MediaWiki code search ]] for `webdriverio` in `package.json`.
[[ https://codesearch.wmcloud.org/search/?q=%40wdio%2F&files=package.json | MediaWiki code search ]] for `@wdio/` in `package.json`.
### Overview
MediaWiki is a free and open-source Wiki application. It powers a lot of websites including Wikipedia, Wiktionary, and Wikimedia commons.
Delivery of optimal quality software with unique and innovative features is always a priority. However, without evaluating software components under various expected and unexpected conditions, one cannot guarantee these aspects. Therefore, testing is performed to test every software component large and small. To increase the efficiency of the testing process and to maximize test coverage, automation is imperative. Automation not only improves the quality of testing but also makes it faster and reduces the cost involved.
We use [[ https://webdriver.io | WebdriverIO ]] as a browser driver for our test automation framework. We are currently using version 6 (2 repositories still at v4). WebdriverIO v7 was released on February 9, 2021.
CodeSearch: [[ https://codesearch.wmflabs.org/search/?q=%22webdriverio%22%3A%20%22.%3F4&files=package.json | v4 ]], [[ https://codesearch.wmflabs.org/search/?q=%22webdriverio%22%3A%20%22.%3F6&files=package.json | v6 ]]
Announcement: [[ https://webdriver.io/blog/2018/12/19/webdriverio-v5-released.html | v5 ]], [[ https://webdriver.io/blog/2020/03/26/webdriverio-v6-released.html | v6 ]], [[ https://webdriver.io/blog/2021/02/09/webdriverio-v7-released/ | v7 ]]
The major goal for the Google Summer of Code 2021 internship is to migrate all repositories to v7. As a part of Google Summer of Code 2020 internship, WebdriverIO was migrated to v6 for almost all repositories. While migration was being carried out, we noticed a need to perform a cleanup and refactoring of the existing WebdriverIO code across all repositories. Some additional goals include:
1. Introduce video recording in all selenium tests. See {T253113}
2. Sanitize Page Object imports across all repositories
3. Work on extending the `wdio.conf.js` file so that the same file can be used/extended across all repositories
4. {T210726}
### Resources
- An exhausted list of clean up tasks required to be performed can be found [[ https://phabricator.wikimedia.org/T210726 | here ]]
- For a list of all repos running Selenium, see https://www.mediawiki.org/wiki/Selenium/Reference/Example_Code
- {T256239}
| repository | version | task/commit |
| mediawiki/core | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/core/+/699033 | 699033 ]]~~ |
| mediawiki/extensions/AbuseFilter | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/AbuseFilter/+/697428| 697428]]~~ |
| mediawiki/extensions/AdvancedSearch | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/AdvancedSearch/+/698757 | 698757 ]]~~ |
| mediawiki/extensions/CentralNotice | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CentralNotice/+/702978| 702978]]~~ |
| mediawiki/extensions/CirrusSearch | 5 | [[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CirrusSearch/+/708516| 708516 ]] T257525 T289168 |
| mediawiki/extensions/Cite | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cite/+/677577 | 677577]]~~ |
| mediawiki/extensions/CodeMirror | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CodeMirror/+/698838 | 698838 ]]~~ |
| mediawiki/extensions/Echo | 6 | [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Echo/+/678287 | 678287]] T271281 |
| mediawiki/extensions/ElectronPdfService | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/ElectronPdfService/+/696016| 696016]]~~ |
| mediawiki/extensions/EntitySchema | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/EntitySchema/+/697055| 697055]]~~ |
| mediawiki/extensions/FileImporter | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/FileImporter/+/671557 | 671557 ]]~~ |
| mediawiki/extensions/GlobalWatchlist | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GlobalWatchlist/+/698854 | 698854 ]]~~ |
| mediawiki/extensions/GrowthExperiments | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GrowthExperiments/+/697082| 697082]]~~ |
| mediawiki/extensions/Math | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Math/+/683974|683974]]~~ |
| mediawiki/extensions/MobileFrontend | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/724731| 724731]]~~|
| mediawiki/extensions/Newsletter | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Newsletter/+/683976|683976]]~~ |
| mediawiki/extensions/Popups | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Popups/+/700229/ | 700229 ]] ~~T286846 |
| mediawiki/extensions/ProofreadPage | 7 |~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/ProofreadPage/+/677648 | 677648 ]]~~|
| mediawiki/extensions/RelatedArticles | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/RelatedArticles/+/697032| 697032]]~~ |
| mediawiki/extensions/RevisionSlider | 7 |~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/RevisionSlider/+/699569/ | 699569 ]]~~ |
| mediawiki/extensions/TemplateWizard | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/TemplateWizard/+/697039| 697039 ]]~~ |
| mediawiki/extensions/TwoColConflict | 7 |~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/TwoColConflict/+/697044| 697044 ]]~~|
| mediawiki/extensions/Wikibase | 6/7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/703923| 703923]]~~ ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/714772 | 714772 ]]~~ ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/715060 | 715060 ]]~~ T265149 T291161 [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/721474/ | 721474 ]] |
| mediawiki/extensions/WikibaseLexeme | 6 | [[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/WikibaseLexeme/+/700217/ | 700217 ]] T289174 |
| mediawiki/extensions/WikibaseMediaInfo | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/WikibaseMediaInfo/+/703925| 703925]]~~|
| mediawiki/extensions/WikiLambda | 7 | ~~[[ https://gerrit.wikimedia.org/r/c/mediawiki/extensions/WikiLambda/+/697056 | 697056 ]]~~ |
| mediawiki/skins/MinervaNeue | 7 | T280975 |
| phabricator/deployment | 7 | ~~[[https://gerrit.wikimedia.org/r/c/phabricator/deployment/+/697069 | 697069 ]]~~|
| wikibase/termbox | 7 | ~~[[https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/703923| 703923]]~~|
| wikidata/query/gui | 7 | ~~[[https://gerrit.wikimedia.org/r/c/wikidata/query/gui/+/702941| 702941]]~~ |
| wikimedia/portals/deploy | 5 | [[https://gerrit.wikimedia.org/r/c/wikimedia/portals/deploy/+/703927|703927]] T255463 T289181 |
| wmde/wdio-wikibase | 7 |~~[[https://github.com/wmde/wdio-wikibase/pull/38|PR]]~~ T288443 |
### Skills:
- [[ https://developer.mozilla.org/en-US/docs/Web/JavaScript | Javascript ]] (Node.js)
- [[ https://webdriver.io/docs/gettingstarted.html | WebdriverIO ]] (Selenium)
### Microtasks:
# [[ https://www.mediawiki.org/wiki/Gerrit/Tutorial | Set up gerrit for Mediawiki ]]
# [[ https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/core | Clone mediawiki/core ]]
# Make a trivial change to `tests/selenium/README.md` in mediawiki/core and push the commit to Gerrit.
- Add `AlQaholic007` and `Vidhi-Mody` to `Reviewers` in Gerrit through the UI
- Make topic of the patch to be T274579 so that Gerrit knows which Phabricator task the patch is for
# Amend your existing commit in Gerrit (See: P12961, For more information see [[ https://www.mediawiki.org/wiki/Gerrit/Tutorial#Amending_a_change_.28your_own_or_someone_else.27s.29 | Gerrit/Tutorial: Amending a change ]])
# Run selenium tests locally. If all tests pass, copy/paste terminal output to a [[ https://phabricator.wikimedia.org/paste/ | paste ]]. Then add the paste to a comment of this task. (Please include the steps followed to run the tests in the paste as well). For reference see P8206 and https://www.mediawiki.org/wiki/Selenium/Getting_Started (Sample Output: P15107)
# Upgrade WebdriverIO to v7 for any one simple repo ([[ https://www.mediawiki.org/wiki/Selenium/Reference/Example_Code | List of repos ]])
# {T269566}
### Student:
- @Sahilgrewalhere
## Mentors:
- @Vidhi-Mody
- @Soham