/** * Creates the browser configuration. * * @param IMinkDriverFactory $factory Driver factory. * * @return BrowserConfiguration */ protected function createBrowserConfiguration(IMinkDriverFactory $factory) { $di = new DIContainer(); $event_dispatcher = m::mock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $browser_configuration = new BrowserConfiguration($event_dispatcher, $di['driver_factory_registry']); $browser_configuration->setDriver($factory->getDriverName()); return $browser_configuration; }
/** * Returns a new driver instance according to the browser configuration. * * @param BrowserConfiguration $browser The browser configuration. * * @return DriverInterface */ public function createDriver(BrowserConfiguration $browser) { if (!class_exists('Behat\\Mink\\Driver\\ZombieDriver')) { throw new \RuntimeException('Install MinkZombieDriver in order to use zombie driver.'); } $driver_options = $browser->getDriverOptions(); return new \Behat\Mink\Driver\ZombieDriver(new \Behat\Mink\Driver\NodeJS\Server\ZombieServer($browser->getHost(), $browser->getPort(), $driver_options['node_bin'], $driver_options['server_path'], $driver_options['threshold'], $driver_options['node_modules_path'])); }
/** * Returns a new driver instance according to the browser configuration. * * @param BrowserConfiguration $browser The browser configuration. * * @return DriverInterface */ public function createDriver(BrowserConfiguration $browser) { if (!class_exists('Behat\\Mink\\Driver\\SahiDriver')) { throw new \RuntimeException('Install MinkSahiDriver in order to use sahi driver.'); } $driver_options = $browser->getDriverOptions(); $connection = new \Behat\SahiClient\Connection($driver_options['sid'], $browser->getHost(), $browser->getPort(), $driver_options['browser'], $driver_options['limit']); return new \Behat\Mink\Driver\SahiDriver($browser->getBrowserName(), new \Behat\SahiClient\Client($connection)); }
/** * Returns a new driver instance according to the browser configuration. * * @param BrowserConfiguration $browser The browser configuration. * * @return DriverInterface */ public function createDriver(BrowserConfiguration $browser) { if (!class_exists('Behat\\Mink\\Driver\\GoutteDriver')) { throw new \RuntimeException('Install MinkGoutteDriver in order to use goutte driver.'); } $driver_options = $browser->getDriverOptions(); if ($this->_isGoutte1()) { $guzzle_client = $this->_buildGuzzle3Client($driver_options['guzzle_parameters']); } else { $guzzle_client = $this->_buildGuzzle4Client($driver_options['guzzle_parameters']); } $goutte_client = new \Behat\Mink\Driver\Goutte\Client($driver_options['server_parameters']); $goutte_client->setClient($guzzle_client); return new \Behat\Mink\Driver\GoutteDriver($goutte_client); }
/** * Initializes session strategy using given browser test case. * * @param BrowserConfiguration $browser Browser configuration. * * @return ISessionStrategy */ public function getSessionStrategy(BrowserConfiguration $browser) { /* * This logic creates separate strategy for: * - each browser configuration in BrowserTestCase::$browsers (for isolated strategy) * - each browser configuration in BrowserTestCase::$browsers for each test case class (for shared strategy) */ $strategy_type = $browser->getSessionStrategy(); $strategy_hash = $browser->getSessionStrategyHash(); if ($strategy_hash !== $this->lastUsedSessionStrategyHash) { $this->sessionStrategiesInUse[$strategy_hash] = $this->_sessionStrategyFactory->createStrategy($strategy_type); } $this->lastUsedSessionStrategyHash = $strategy_hash; return $this->sessionStrategiesInUse[$strategy_hash]; }
/** * Returns browser configuration instance. * * @param array $config Browser. * @param BrowserTestCase $test_case Test case. * * @return BrowserConfiguration */ public function createBrowserConfiguration(array $config, BrowserTestCase $test_case) { $aliases = $test_case->getBrowserAliases(); $config = BrowserConfiguration::resolveAliases($config, $aliases); $type = isset($config['type']) ? $config['type'] : 'default'; unset($config['type']); return $this->create($type)->setAliases($aliases)->setup($config); }
/** * Test description. * * @return void */ public function testGetTestStatusShared() { $test_case = m::mock(self::TEST_CASE_CLASS); $test_result = m::mock('\\PHPUnit_Framework_TestResult'); $test_result->shouldReceive('wasSuccessful')->once()->andReturn(true); $this->browser->setSessionStrategy(ISessionStrategyFactory::TYPE_SHARED); $this->assertTrue($this->browser->getTestStatus($test_case, $test_result)); }
/** * Creates API client. * * @param BrowserConfiguration $browser Browser configuration. * * @return IAPIClient * @throws \LogicException When unsupported browser configuration given. */ public function createAPIClient(BrowserConfiguration $browser) { if ($browser instanceof SauceLabsBrowserConfiguration) { $sauce_rest = new SauceRest($browser->getApiUsername(), $browser->getApiKey()); return new SauceLabsAPIClient($sauce_rest); } elseif ($browser instanceof BrowserStackBrowserConfiguration) { return new BrowserStackAPIClient($browser->getApiUsername(), $browser->getApiKey(), ServiceFactory::getInstance()->getService('service.curl')); } throw new \LogicException('Unsupported browser configuration given'); }
/** * Creates driver based on browser configuration. * * @param BrowserConfiguration $browser Browser configuration. * * @return DriverInterface */ private function _createDriver(BrowserConfiguration $browser) { $browser_name = $browser->getBrowserName(); $capabilities = $browser->getDesiredCapabilities(); $capabilities['browserName'] = $browser_name; // TODO: maybe doesn't work! ini_set('default_socket_timeout', $browser->getTimeout()); $driver = new Selenium2Driver($browser_name, $capabilities, 'http://' . $browser->getHost() . ':' . $browser->getPort() . '/wd/hub'); return $driver; }
/** * Returns a new driver instance according to the browser configuration. * * @param BrowserConfiguration $browser The browser configuration. * * @return DriverInterface */ public function createDriver(BrowserConfiguration $browser) { if (!class_exists('Behat\\Mink\\Driver\\Selenium2Driver')) { throw new \RuntimeException('Install MinkSelenium2Driver in order to use selenium2 driver.'); } $browser_name = $browser->getBrowserName(); $capabilities = $browser->getDesiredCapabilities(); $capabilities['browserName'] = $browser_name; // TODO: Maybe doesn't work! ini_set('default_socket_timeout', $browser->getTimeout()); $driver = new \Behat\Mink\Driver\Selenium2Driver($browser_name, $capabilities, 'http://' . $browser->getHost() . ':' . $browser->getPort() . '/wd/hub'); return $driver; }
/** * Creates new session based on browser configuration. * * @param BrowserConfiguration $browser Browser configuration. * * @return Session */ public function createSession(BrowserConfiguration $browser) { return new SessionProxy($browser->createDriver()); }
/** * Hook, called from "BrowserTestCase::run" method. * * @param TestEndedEvent $event Test ended event. * * @return void */ public function onTestEnded(TestEndedEvent $event) { if (!$this->isEventForMe($event)) { return; } parent::onTestEnded($event); if ($event->getSession() === null) { // Session wasn't used in particular test. return; } $test_case = $event->getTestCase(); $this->getAPIClient()->updateStatus($this->getSessionId($event->getSession()), $this->getTestStatus($test_case, $event->getTestResult())); }
/** * Hook, called from "BrowserTestCase::run" method. * * @param TestEndedEvent $event Test ended event. * * @return void */ public function onTestEnded(TestEndedEvent $event) { if (!$event->validateSubscriber($this->getTestCase())) { return; } parent::onTestEnded($event); $session = $event->getSession(); if ($session === null || !$session->isStarted()) { // Session wasn't used in particular test. return; } $test_case = $event->getTestCase(); $this->getAPIClient()->updateStatus($this->getSessionId($session), $this->getTestStatus($test_case, $event->getTestResult())); }
/** * Sets browser configuration. * * @param BrowserConfiguration $browser Browser configuration. * * @return self */ public function setBrowser(BrowserConfiguration $browser) { $this->_browser = $browser->attachToTestCase($this); // Configure session strategy. return $this->setSessionStrategy($this->sessionStrategyManager->getSessionStrategy($browser)); }
/** * Creates instance of browser configuration. * * @param array $aliases Aliases. * @param boolean $add_subscriber Expect addition of subscriber to event dispatcher. * * @return BrowserConfiguration */ protected function createBrowserConfiguration(array $aliases = array(), $add_subscriber = false) { $browser = new BrowserConfiguration($this->eventDispatcher); $browser->setAliases($aliases); $this->eventDispatcher->shouldReceive('addSubscriber')->with($browser)->times($add_subscriber ? 1 : 0); return $browser; }