Implement direct SauceLabs support

This commit is contained in:
everzet
2013-06-03 10:39:43 +01:00
parent 52cee46976
commit 76a9c1f8fb
2 changed files with 98 additions and 0 deletions

View File

@@ -91,6 +91,40 @@ class Extension implements ExtensionInterface
$loader->load('sessions/selenium2.xml');
}
if (isset($config['saucelabs'])) {
if (!class_exists('Behat\\Mink\\Driver\\Selenium2Driver')) {
throw new \RuntimeException(
'Install MinkSelenium2Driver in order to activate saucelabs session.'
);
}
$loader->load('sessions/saucelabs.xml');
$http = 'https';
$host = 'ondemand.saucelabs.com';
if ($config['saucelabs']['connect']) {
$http = 'http';
$host = 'localhost:4445';
}
$username = $config['saucelabs']['username'];
$accessKey = $config['saucelabs']['access_key'];
$container->setParameter('behat.mink.saucelabs.wd_host', sprintf(
'%s://%s:%s@%s/wd/hub', $http, $username, $accessKey, $host
));
$container->setParameter('behat.mink.saucelabs.browser',
$config['saucelabs']['capabilities']['browser_name']
);
if ($config['saucelabs']['travis']) {
$capabilities = $container->getParameter('behat.mink.saucelabs.capabilities');
$capabilities['tunnel-identifier'] = getenv('TRAVIS_JOB_NUMBER');
$capabilities['build'] = getenv('TRAVIS_BUILD_NUMBER');
$container->setParameter('behat.mink.saucelabs.capabilities');
}
}
$minkParameters = array();
foreach ($config as $ns => $tlValue) {
@@ -330,6 +364,41 @@ class Extension implements ExtensionInterface
end()->
end()->
end()->
arrayNode('saucelabs')->
children()->
scalarNode('username')->
defaultValue(getenv('SAUCE_USERNAME'))->
end()->
scalarNode('access_key')->
defaultValue(getenv('SAUCE_ACCESS_KEY'))->
end()->
booleanNode('travis')->
defaultValue(isset($config['saucelabs']['travis']) ? 'true' === $config['saucelabs']['travis'] : false)->
end()->
booleanNode('connect')->
defaultValue(isset($config['saucelabs']['connect']) ? 'true' === $config['saucelabs']['connect'] : false)->
end()->
arrayNode('capabilities')->
children()->
scalarNode('browser')->
defaultValue(isset($config['saucelabs']['browser']) ? $config['saucelabs']['browser'] : 'firefox')->
end()->
scalarNode('platform')->
defaultValue(isset($config['saucelabs']['platform']) ? $config['saucelabs']['platform'] : 'Linux')->
end()->
scalarNode('version')->
defaultValue(isset($config['saucelabs']['version']) ? $config['saucelabs']['version'] : '21')->
end()->
scalarNode('deviceType')->
defaultValue(isset($config['saucelabs']['deviceType']) ? $config['saucelabs']['deviceType'] : null)->
end()->
scalarNode('deviceOrientation')->
defaultValue(isset($config['saucelabs']['deviceOrientation']) ? $config['saucelabs']['deviceOrientation'] : null)->
end()->
end()->
end()->
end()->
end()->
end()->
end();
}

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="behat.mink.driver.saucelabs.class">Behat\Mink\Driver\Selenium2Driver</parameter>
<parameter key="behat.mink.saucelabs.browser">%behat.mink.browser_name%</parameter>
<parameter key="behat.mink.saucelabs.capabilities" type="collection"></parameter>
<parameter key="behat.mink.saucelabs.wd_host">https://USERNAME:ACCESS_KEY@ondemand.saucelabs.com/wd/hub</parameter>
</parameters>
<services>
<service id="behat.mink.session.saucelabs" class="%behat.mink.session.class%">
<argument type="service">
<service class="%behat.mink.driver.saucelabs.class%">
<argument>%behat.mink.saucelabs.browser%</argument>
<argument>%behat.mink.saucelabs.capabilities%</argument>
<argument>%behat.mink.saucelabs.wd_host%</argument>
</service>
</argument>
<argument type="service" id="behat.mink.selector.handler" />
<tag name="behat.mink.session" alias="saucelabs" />
</service>
</services>
</container>