Mediawiki::Selenium
Several MediaWiki extensions share code that makes it easy to run Selenium tests. This gem makes it easy to update the shared code.
Installation
To run the Selenium tests you will have to install Ruby. Look at the Gemfile
file for the exact required version. You also have to install the latest
versions of RubyGems and Firefox (the default browser in which the tests run).
The easiest way to install Ruby on Linux/Unix/Mac is RVM and
on Windows RubyInstaller.
ALERT: On Windows you must use Ruby 1.9.3 for now because Cucumber currently doesn't work with Ruby 2.
cd /tests/browser
gem update --system
gem install bundler
bundle install
If you're not using RVM to manage your Ruby versions, you will need to run the
commands as root (using sudo
).
Environment variables MEDIAWIKI_USER
and MEDIAWIKI_PASSWORD
are required for
tests tagged @login
. For local testing, create a test user on your local wiki
and export the user and password as the values for those variables.
For example:
export MEDIAWIKI_USER=<username here> # Linux/Unix/Mac
set MEDIAWIKI_USER=<username here> # Windows
export MEDIAWIKI_PASSWORD=<password here> # Linux/Unix/Mac
set MEDIAWIKI_PASSWORD=<password here> # Windows
Usage
Run the tests with bundle exec cucumber
, this should start Firefox.
By default the tests run at en.wikipedia.beta.wmflabs.org. If you want to run
the tests elsewhere, set the MEDIAWIKI_URL
environment variable. For example:
export MEDIAWIKI_URL=http://commons.wikimedia.beta.wmflabs.org/wiki/ # Linux/Unix/Mac
set MEDIAWIKI_URL=http://commons.wikimedia.beta.wmflabs.org/wiki/ # Windows
To run a single test file enter bundle exec cucumber features/FEATURE_NAME.feature
.
To run a single test scenario, put a colon and the line number (NN) on which the scenario begins after the file name:
bundle exec cucumber features/FEATURE_NAME.feature:NN
You can use a different browser with the BROWSER
env variable, the fastest is
probably PhantomJS, a headless browser:
export BROWSER=phantomjs # Linux/Unix/Mac
set BROWSER=phantomjs # Windows
By default, the browser will close itself at the end of every scenario. If you
want the browser to stay open, set the environment variable KEEP_BROWSER_OPEN
to true
:
export KEEP_BROWSER_OPEN=true # Linux/Unix/Mac
set KEEP_BROWSER_OPEN=true # Windows
Screenshots
You can get screenshots on failures by setting the environment
variable SCREENSHOT_FAILURES
to true
. Screenshots will be written under the
screenshots
directory relatively to working directory. The
SCREENSHOT_FAILURES_PATH
environment variable lets you override
the destination path for screenshots. Example:
SCREENSHOT_FAILURES=true SCREENSHOT_FAILURES_PATH="/tmp/screenshots" bundle exec cucumber
Update your Gemfile
In your repository, the Gemfile
specifies dependencies and Gemfile.lock
defines
the whole dependency tree. To update it simply run:
bundle update
It will fetch all dependencies and update the Gemfile.lock
file, you can then
commit back both files.
Links
mediawiki_selenium gem: Gerrit, GitHub, RubyGems, Code Climate
If not stated differently, Selenium tests are in /tests/browser
folder.
Repositories that use the gem:
- CirrusSearch: Gerrit, GitHub, Jenkins, Code Climate
- ContentTranslation: Gerrit, GitHub, Jenkins, Code Climate
- Flow: Gerrit, GitHub, Jenkins, Code Climate
- MobileFrontend: Gerrit, GitHub, Jenkins, Code Climate
- MultimediaViewer: Gerrit, GitHub, Jenkins, Code Climate
- Translate: Gerrit, GitHub, Jenkins, Code Climate
- TwnMainPage: Gerrit, GitHub, Jenkins, Code Climate
- UniversalLanguageSelector: Gerrit, GitHub, Jenkins, Code Climate
- UploadWizard: Gerrit, GitHub, Jenkins, Code Climate
- VisualEditor: Gerrit, GitHub, Jenkins, Code Climate,
/modules/ve-mw/test/browser
folder - Wikibase: Gerrit, GitHub, Jenkins, Code Climate
- WikiLove: Gerrit, GitHub, Jenkins, Code Climate
- ZeroRatedMobileAccess: Gerrit, GitHub, Jenkins, Code Climate
- browsertests: Gerrit, GitHub, Jenkins, Code Climate
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Also see https://www.mediawiki.org/wiki/QA/Browser_testing#How_to_contribute
Release notes
0.2.8
- Possibility to set BROWSER_TIMEOUT.
0.2.2
SCREENSHOT_FAILURES_PATH
environment variable lets you override the destination path for screenshots.
0.2.1
- Get screenshots on failures by setting the environment variable
SCREENSHOT_FAILURES
totrue
.