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.

mediawiki_selenium gem: Gerrit, GitHub, RubyGems, Code Climate

If not stated differently, Selenium tests are in /tests/browser folder.

Repositories that use the gem:

  1. CirrusSearch: Gerrit, GitHub, Jenkins, Code Climate
  2. ContentTranslation: Gerrit, GitHub, Jenkins, Code Climate
  3. Flow: Gerrit, GitHub, Jenkins, Code Climate
  4. MobileFrontend: Gerrit, GitHub, Jenkins, Code Climate
  5. MultimediaViewer: Gerrit, GitHub, Jenkins, Code Climate
  6. Translate: Gerrit, GitHub, Jenkins, Code Climate
  7. TwnMainPage: Gerrit, GitHub, Jenkins, Code Climate
  8. UniversalLanguageSelector: Gerrit, GitHub, Jenkins, Code Climate
  9. UploadWizard: Gerrit, GitHub, Jenkins, Code Climate
  10. VisualEditor: Gerrit, GitHub, Jenkins, Code Climate, /modules/ve-mw/test/browser folder
  11. Wikibase: Gerrit, GitHub, Jenkins, Code Climate
  12. WikiLove: Gerrit, GitHub, Jenkins, Code Climate
  13. ZeroRatedMobileAccess: Gerrit, GitHub, Jenkins, Code Climate
  14. browsertests: Gerrit, GitHub, Jenkins, Code Climate

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. 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 to true.