Selenium/PHP/Selenium Configuration

This is detailed information for setting up the Selenium framework.

Enable Selenium on your test Wiki

edit

Set the following in your test wiki's LocalSettings.php:

$wgEnableSelenium = true;

The tests runner is a maintenance script maintenance/tests/RunSeleniumTests.php
The next sections cover how you can tell the test runner about your selenium environment.

Configure Selenium using a configuration file

edit
  • The easiest way is to point the test runner to your selenium configuration file through the command line option.
php RunSeleniumTests.php --seleniumConfig=../../selenium_settings.ini
Using Selenium Configuration file: ../../selenium_settings.ini
....
  • If the --seleniumConfig option is not found and in the absense of a hook, it looks for a global variable $wgSeleniumConfigFile that you can set in your LocalSettings.php
$wgSeleniumConfigFile = $IP . '/selenium_settings.ini';
php RunSeleniumTests.php 
No command line configuration file or configuration hook found.
....
Sample configuration to run on a local machine
edit

A sample configuration is checked into maintenance/tests/selenium/selenium_settings.ini.sample

[SeleniumSettings]

; Set up the available browsers that Selenium can control.
browsers[firefox] 	= "*firefox"
browsers[iexplorer]     = "*iexploreproxy"
browsers[chrome] 	= "*chrome"

; The simple configurations above usually work on Linux, but Windows and
; Mac OS X hosts may need to specify a full path:
;browsers[firefox] = "*firefox /Applications/Firefox.app/Contents/MacOS/firefox-bin"
;browsers[firefox] = "*firefox C:\Program Files\Mozilla Firefox\firefox.exe"

host 				= "localhost"
port 				= "4444"
wikiUrl 			= "http://localhost/deployment"
username 			= "wikiuser"
userPassword 		        = "wikipass"
testBrowser 		        = "firefox"
startserver			=
stopserver			=
jUnitLogFile		        =
runAgainstGrid	                = false

; To let the test runner start and stop the selenium server, it needs the full
; path to selenium-server.jar from the selenium-remote-control package.
seleniumserverexecpath = "/opt/local/selenium-remote-control-1.0.3/selenium-server-1.0.3/selenium-server.jar"

[SeleniumTests]

testSuite[SimpleSeleniumTestSuite] = "maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php"
testSuite[PagedTiffHandlerSeleniumTestSuite] = "extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php"

  • Hint: seleniumserverexecpath not yet implemented for Windows.
Sample configuration to run against a selenium grid
edit

A sample configuration is checked into maintenance/tests/selenium/selenium_settings_grid.ini.sample

[SeleniumSettings]

host			= "grid.tesla.usability.wikimedia.org"
port			= "4444"
wikiUrl			= "http://208.80.152.253:5001"
username		= "wikiuser"
userPassword	        = "wikipass"
testBrowser		= "Safari on OS X Snow Leopard"
runAgainstGrid	        = true

[testSuite]

SimpleSeleniumTestSuite	= "maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php"
  • You don't need to define any browsers as this is done for you by the grid.
  • Available environments can be found at the grid console
    • Use the name under "Environment" as testBrowser value.
    • Use host:port as wikiUrl.
  • Make sure the option runAgainstGrid is set to true.

Configure Selenium using command line parameters (This may go away soon)

edit

You can override parameters from the configuration file or the hook function using command line paranteres:

Usage: php RunSeleniumTests.php [--conf|--help|--host|--list-browsers|--port|--quiet|--seleniumConfig
                                |--testBrowser|--userPassword|--username|--verbose|--wikiUrl]

    conf : Location of LocalSettings.php, if not default
    help : Display this help message
    host : Host selenium server. Default: $wgServer . $wgScriptPath
    list-browsers : List the available browsers.
    port : Port used by selenium server. Default: 4444
    quiet : Whether to supress non-error output
    seleniumConfig : Location of the selenium config file. Default: empty
    testBrowser : The browser he used during testing. Default: firefox
    userPassword : The login password for running tests. Default: empty
    username : The login username for sunning tests. Default: empty
    verbose : Be noisier.
    wikiUrl : The Mediawiki installation to point to. Default: http://localhost

For example:

php RunSeleniumTests.php --wikiUrl='http://localhost/deployment' --username='WikiSysop' --userPassword='xxxxxx'

Configure Selenium using a Hook function

edit

Another way to configure your selenium test instance is through a Hook - SeleniumSettings.

$wgHooks['SeleniumSettings'][] = 'MyCustomSeleniumTestConfigStatic::getSeleniumSettings';

You will need to add MyCustomSeleniumTestConfigStatic to the AutoLoader or your LocalSettings.php.

The 3 required parameters passed by reference are:

  • $seleniumSettings: An array containing the selenium configuration parameters as key value pairs> Possible keys are:
array (
  'host' => '<selenium server host>',
  'port' => '<selenium server port>',
  'wikiUrl' => '<the test wiki url>',
  'username' => '<the username if the tests require login>',
  'userPassword' => '<the user password if the tests require login>',
  'testBrowser' => '<the browser to use for testing>',
)
  • $seleniumBrowsers: Browsers available to the selenium server. For example:
array (
  'firefox' => '*firefox',
  'iexplorer' => '*iexploreproxy',
  'chrome' => '*chrome',
)
  • $seleniumTestSuites: Path to the test suites that the test runner will run. For example:
array (
  'SimpleSeleniumTestSuite' => 'maintenance/tests/selenium/SimpleSeleniumTestSuite.php',
  'MyExtensionTestSuite' => 'extensions/myextension/tests/selenium/MyExtensionTestSuite.php',
)