#!/usr/bin/php addOption( 'port', 'Port used by selenium server' ); $this->addOption( 'host', 'Host selenium server' ); $this->addOption( 'browser', 'The browser he used during testing' ); $this->addOption( 'url', 'The Mediawiki installation to point to.' ); $this->addOption( 'list-browsers', 'List the available browsers.' ); $this->addOption( 'verbose', 'Be noisier.' ); $this->deleteOption( 'dbpass' ); $this->deleteOption( 'dbuser' ); $this->deleteOption( 'globals' ); $this->deleteOption( 'wiki' ); } public function listBrowsers() { global $wgSeleniumTestsBrowsers; $desc = "Available browsers:\n"; foreach ($wgSeleniumTestsBrowsers as $k => $v) { $desc .= " $k => $v\n"; } echo $desc; } protected function runTests( $verbose = false ) { global $wgSeleniumLogger, $wgSeleniumTestSuites; require_once( 'Testing/Selenium.php' ); require_once( 'PHPUnit/Framework.php' ); require_once( 'PHPUnit/Extensions/SeleniumTestCase.php' ); $result = new PHPUnit_Framework_TestResult; $wgSeleniumLogger = new SeleniumTestConsoleLogger; $result->addListener( new SeleniumTestListener( $wgSeleniumLogger ) ); foreach ( $wgSeleniumTestSuites as $testSuiteName ) { $suite = new $testSuiteName; $suite->addTests(); try { $suite->run( $result ); } catch ( Testing_Selenium_Exception $e ) { throw new MWException( $e->getMessage() ); } } } public function execute() { global $wgSeleniumServerPort, $wgSeleniumTestsSeleniumHost, $wgSeleniumTestsWikiUrl, $wgServer, $wgScriptPath; if( $this->hasOption( 'list-browsers' ) ) { $this->listBrowsers(); exit(0); } $wgSeleniumServerPort = $this->getOption( 'port', 4444 ); $wgSeleniumTestsSeleniumHost = $this->getOption( 'host', 'localhost' ); $wgSeleniumTestsWikiUrl = $this->getOption( 'url', $wgServer . $wgScriptPath ); $wgSeleniumTestsUseBrowser = $this->getOption( 'browser', 'firefox' ); $this->runTests( $this->hasOption( 'verbose' ) ); } } $maintClass = "SeleniumTester"; require_once( DO_MAINTENANCE );