wiki.techinc.nl/tests/selenium/README.md
Željko Filipin 0513250c88 Selenium: record video of every test
In addition to two existing modes (headless and visible), this patch
introcues another mode, headless recording.

If DISPLAY environment variable is not set, Chrome will run in it's
built-in headless mode.
If it is set, and the value starts with colon (`:`), Chrome will
run in headless mode using Xvfb and record video of every test using FFmpeg.
If the value does not start with colon, Chrome will be visible.

Bug: T179188
Change-Id: Ic1723c5f2d57a28201caf6ba7056cb73fb74a957
2018-10-16 22:07:22 +00:00

74 lines
2.2 KiB
Markdown

# Selenium tests
## Prerequisites
- [Chrome](https://www.google.com/chrome/)
- [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/)
- [Node.js](https://nodejs.org/en/)
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
- [Selenium/Node.js](https://www.mediawiki.org/wiki/Selenium/Node.js)