/** * @group SeleniumFramework * @dataProvider sampleConfigs */ public function testgetSeleniumSettings($sampleConfig, $expectedSettings, $expectedBrowsers, $expectedSuites) { $this->writeToTempFile($sampleConfig); $seleniumSettings = array(); $seleniumBrowsers = array(); $seleniumTestSuites = null; SeleniumConfig::getSeleniumSettings($seleniumSettings, $seleniumBrowsers, $seleniumTestSuites, $this->tempFileName); $this->assertEquals($seleniumSettings, $expectedSettings, "The selenium settings for the following test configuration was not retrieved correctly" . $sampleConfig); $this->assertEquals($seleniumBrowsers, $expectedBrowsers, "The available browsers for the following test configuration was not retrieved correctly" . $sampleConfig); $this->assertEquals($seleniumTestSuites, $expectedSuites, "The test suites for the following test configuration was not retrieved correctly" . $sampleConfig); }
public function execute() { global $wgServer, $wgScriptPath, $wgHooks; $seleniumSettings; $seleniumBrowsers; $seleniumTestSuites; $configFile = $this->getOption('seleniumConfig', ''); if (strlen($configFile) > 0) { $this->output("Using Selenium Configuration file: " . $configFile . "\n"); SeleniumConfig::getSeleniumSettings($seleniumSettings, $seleniumBrowsers, $seleniumTestSuites, $configFile); } else { if (!isset($wgHooks['SeleniumSettings'])) { $this->output("No command line, configuration file or configuration hook found.\n"); SeleniumConfig::getSeleniumSettings($seleniumSettings, $seleniumBrowsers, $seleniumTestSuites); } else { $this->output("Using 'SeleniumSettings' hook for configuration.\n"); wfRunHooks('SeleniumSettings', array($seleniumSettings, $seleniumBrowsers, $seleniumTestSuites)); } } // State for starting/stopping the Selenium server has nothing to do with the Selenium // class. Keep this state local to SeleniumTester class. Using getOption() is clumsy, but // the Maintenance class does not have a setOption() if (!isset($seleniumSettings['startserver'])) { $this->getOption('startserver', true); } if (!isset($seleniumSettings['stopserver'])) { $this->getOption('stopserver', true); } if (!isset($seleniumSettings['seleniumserverexecpath'])) { $seleniumSettings['seleniumserverexecpath'] = ''; } $this->seleniumServerExecPath = $seleniumSettings['seleniumserverexecpath']; //set reasonable defaults if we did not find the settings if (!isset($seleniumBrowsers)) { $seleniumBrowsers = array('firefox' => '*firefox'); } if (!isset($seleniumSettings['host'])) { $seleniumSettings['host'] = $wgServer . $wgScriptPath; } if (!isset($seleniumSettings['port'])) { $seleniumSettings['port'] = '4444'; } if (!isset($seleniumSettings['wikiUrl'])) { $seleniumSettings['wikiUrl'] = 'http://localhost'; } if (!isset($seleniumSettings['username'])) { $seleniumSettings['username'] = ''; } if (!isset($seleniumSettings['userPassword'])) { $seleniumSettings['userPassword'] = ''; } if (!isset($seleniumSettings['testBrowser'])) { $seleniumSettings['testBrowser'] = 'firefox'; } if (!isset($seleniumSettings['jUnitLogFile'])) { $seleniumSettings['jUnitLogFile'] = false; } if (!isset($seleniumSettings['runAgainstGrid'])) { $seleniumSettings['runAgainstGrid'] = false; } // Setup Selenium class $this->selenium = new Selenium(); $this->selenium->setAvailableBrowsers($seleniumBrowsers); $this->selenium->setRunAgainstGrid($this->getOption('runAgainstGrid', $seleniumSettings['runAgainstGrid'])); $this->selenium->setUrl($this->getOption('wikiUrl', $seleniumSettings['wikiUrl'])); $this->selenium->setBrowser($this->getOption('testBrowser', $seleniumSettings['testBrowser'])); $this->selenium->setPort($this->getOption('port', $seleniumSettings['port'])); $this->selenium->setHost($this->getOption('host', $seleniumSettings['host'])); $this->selenium->setUser($this->getOption('username', $seleniumSettings['username'])); $this->selenium->setPass($this->getOption('userPassword', $seleniumSettings['userPassword'])); $this->selenium->setVerbose($this->hasOption('verbose')); $this->selenium->setJUnitLogFile($this->getOption('jUnitLogFile', $seleniumSettings['jUnitLogFile'])); if ($this->hasOption('list-browsers')) { $this->listBrowsers(); exit(0); } if ($this->hasOption('startserver')) { $this->startServer(); } $logger = new SeleniumTestConsoleLogger(); $this->selenium->setLogger($logger); $this->runTests($seleniumTestSuites); if ($this->hasOption('stopserver')) { $this->stopServer(); } }