This task aims at speeding up CI run time by moving Wikibase tests to an independent job. This will save us from running the 7 minutes long Selenium test when it is not needed.
Quibble invokes selenium-test in all extensions for which the script is defined. The quibble-with-gated-extensions* jobs has 50 extensions which is triggered by each of those 50 extensions and each time run the whole Wikibase Selenium tests. However the Selenium tests pass with just MinervaNeue, MobileFrontend and UniversalLanguageSelector, and we can optimize the runtime by only running the Wikibase Selenium tests for that subset of repositories. This will make CI faster for all other extensions.
Wikibase selenium-test entry point runs a suite for the repository and another one for the client. There is a 3rd one which is currently disabled:
{ "selenium-test": "npm run cypress:install && npm run cypress:run && npm-run-all --continue-on-error selenium-test:*", "selenium-test:repo": "wdio repo/tests/selenium/wdio.conf.js", "selenium-test:client": "wdio client/tests/selenium/wdio.conf.js", "@selenium-test:bridge": "npm --prefix client/data-bridge run selenium-test # Disabled per T354841", }
There are a few oddities here and there though. The repo tests do run view/lib/wikibase-termbox tests and thus fail when one only has the Wikibase repo:
specs: [ __dirname + '/specs/*.js', __dirname + '/../../../view/lib/wikibase-termbox/tests/selenium/specs/*.js' ],
I have created two jobs to experiment:
| Command | Job |
|---|---|
| npm run selenium-test:repo | https://integration.wikimedia.org/ci/job/wikibase-selenium-repo-docker/ |
| npm run selenium-test:client | https://integration.wikimedia.org/ci/job/wikibase-selenium-client-docker/ |
