wiki.techinc.nl/tests/selenium
Adam Wight 878f2fd9c4 Exclude FileImporter browser tests
These test must be run from the extension's repo, because they use a custom
script to modify LocalSettings.php.

Bug: T190829
Change-Id: I920c7faa3ce91f1560f383575aa6a6adfcadd9c7
2019-05-20 14:03:16 +02:00
..
pageobjects selenium: Asynchronous methods should be returned to browser.call() 2019-05-09 12:15:12 +00:00
specs Merge "Temporarily skip rollback test" 2019-05-07 21:50:52 +00:00
wdio-mediawiki Improve rollback tests setup by extracting repeating logic to HistoryPage object 2019-04-30 18:17:00 +02:00
.eslintrc.json Show confirmation prompt on rollback links 2019-03-21 10:13:22 +00:00
README.md Selenium: record video of every test 2018-10-16 22:07:22 +00:00
selenium.sh Use wd/hub not /wd/hub in selenium.sh 2018-06-13 11:56:15 +00:00
wdio.conf.js Exclude FileImporter browser tests 2019-05-20 14:03:16 +02:00

Selenium tests

Prerequisites

If using MediaWiki-Vagrant:

cd mediawiki/vagrant
vagrant up

Installation

cd mediawiki
npm install

Usage

npm run selenium

There are three supported modes of running the tests:

  • Headless. It's the default. You will not see the browser while tests are running because it's running in a headless mode. This mode should run fine on all supported platforms.
  • Headless recording. Set DISPLAY environment variable to a value that starts with colon (:) and video of each test will be recorded. Browser will run headless. Recording videos works only on Linux.
  • Visible. If you want to see the browser, set DISPLAY environment variable to any value that does not start with colon. This mode will not work in a headless environment like MediaWiki-Vagrant.

Example recording session:

sudo apt-get install chromedriver ffmpeg xvfb
export DISPLAY=:94
Xvfb "$DISPLAY" -screen 0 1280x1024x24 &
npm run selenium

Example visible session:

DISPLAY=1 npm run selenium

To run only one test (for example specs/page.js), you first need to start Chromedriver:

chromedriver --url-base=wd/hub --port=4444

Then, in another terminal:

npm run selenium-test -- --spec tests/selenium/specs/page.js

You can also filter specific cases, for ones that contain the string 'preferences':

npm run selenium-test -- tests/selenium/specs/user.js --mochaOpts.grep preferences

The runner reads the configuration from wdio.conf.js. The defaults target a MediaWiki-Vagrant installation on http://127.0.0.1:8080 with a user "Admin" and password "vagrant". Those settings can be overridden using environment variables:

  • MW_SERVER: to be set to the value of your $wgServer
  • MW_SCRIPT_PATH: ditto with $wgScriptPath
  • MEDIAWIKI_USER: username of an account that can create users on the wiki
  • MEDIAWIKI_PASSWORD: password for above user

Example:

MW_SERVER=http://example.org MW_SCRIPT_PATH=/dev/w npm run selenium

Further reading