Implement direct SauceLabs support
This commit is contained in:
@@ -91,6 +91,40 @@ class Extension implements ExtensionInterface
|
|||||||
|
|
||||||
$loader->load('sessions/selenium2.xml');
|
$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();
|
$minkParameters = array();
|
||||||
foreach ($config as $ns => $tlValue) {
|
foreach ($config as $ns => $tlValue) {
|
||||||
@@ -330,6 +364,41 @@ class Extension implements ExtensionInterface
|
|||||||
end()->
|
end()->
|
||||||
end()->
|
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()->
|
||||||
end();
|
end();
|
||||||
}
|
}
|
||||||
|
|||||||
29
src/Behat/MinkExtension/services/sessions/saucelabs.xml
Normal file
29
src/Behat/MinkExtension/services/sessions/saucelabs.xml
Normal 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>
|
||||||
Reference in New Issue
Block a user