Improved the guessing of capabilities on Travis

The logic is not duplicated anymore between BrowserStack and Travis, and
user-defined capabilities now win over guessed capabilities.
Refs #140
This commit is contained in:
Christophe Coevoet
2014-05-08 13:15:15 +02:00
parent b1a3659899
commit 84bccc838c
3 changed files with 15 additions and 23 deletions

View File

@@ -42,16 +42,6 @@ class BrowserStackFactory extends Selenium2Factory
*/ */
public function buildDriver(array $config) public function buildDriver(array $config)
{ {
$capabilities = $config['capabilities'];
$capabilities['tags'] = array(php_uname('n'), 'PHP '.phpversion());
if (getenv('TRAVIS_JOB_NUMBER')) {
$capabilities['tunnel-identifier'] = getenv('TRAVIS_JOB_NUMBER');
$capabilities['build'] = getenv('TRAVIS_BUILD_NUMBER');
$capabilities['tags'] = array('Travis-CI', 'PHP '.phpversion());
}
$config['capabilities'] = $capabilities;
$config['wd_host'] = sprintf('%s:%s@hub.browserstack.com/wd/hub', $config['username'], $config['access_key']); $config['wd_host'] = sprintf('%s:%s@hub.browserstack.com/wd/hub', $config['username'], $config['access_key']);
return parent::buildDriver($config); return parent::buildDriver($config);

View File

@@ -43,21 +43,11 @@ class SauceLabsFactory extends Selenium2Factory
*/ */
public function buildDriver(array $config) public function buildDriver(array $config)
{ {
$capabilities = $config['capabilities'];
$capabilities['tags'] = array(php_uname('n'), 'PHP '.phpversion());
if (getenv('TRAVIS_JOB_NUMBER')) {
$capabilities['tunnel-identifier'] = getenv('TRAVIS_JOB_NUMBER');
$capabilities['build'] = getenv('TRAVIS_BUILD_NUMBER');
$capabilities['tags'] = array('Travis-CI', 'PHP '.phpversion());
}
$host = 'ondemand.saucelabs.com'; $host = 'ondemand.saucelabs.com';
if ($config['connect']) { if ($config['connect']) {
$host = 'localhost:4445'; $host = 'localhost:4445';
} }
$config['capabilities'] = $capabilities;
$config['wd_host'] = sprintf('%s:%s@%s/wd/hub', $config['username'], $config['access_key'], $host); $config['wd_host'] = sprintf('%s:%s@%s/wd/hub', $config['username'], $config['access_key'], $host);
return parent::buildDriver($config); return parent::buildDriver($config);
@@ -75,13 +65,13 @@ class SauceLabsFactory extends Selenium2Factory
->scalarNode('max-duration')->defaultValue('300')->end() ->scalarNode('max-duration')->defaultValue('300')->end()
->scalarNode('command-timeout')->end() ->scalarNode('command-timeout')->end()
->scalarNode('idle-timeout')->end() ->scalarNode('idle-timeout')->end()
->scalarNode('build')->info('will be set automatically based on the TRAVIS_JOB_NUMBER environment variable if available')->end() ->scalarNode('build')->info('will be set automatically based on the TRAVIS_BUILD_NUMBER environment variable if available')->end()
->arrayNode('custom-data') ->arrayNode('custom-data')
->useAttributeAsKey('') ->useAttributeAsKey('')
->prototype('variable')->end() ->prototype('variable')->end()
->end() ->end()
->scalarNode('screen-resolution')->end() ->scalarNode('screen-resolution')->end()
->scalarNode('tunnel-identifier')->end() ->scalarNode('tunnel-identifier')->info('will be set automatically based on the TRAVIS_JOB_NUMBER environment variable if available')->end()
->arrayNode('prerun') ->arrayNode('prerun')
->children() ->children()
->scalarNode('executable')->isRequired()->end() ->scalarNode('executable')->isRequired()->end()

View File

@@ -60,9 +60,21 @@ class Selenium2Factory implements DriverFactory
$extraCapabilities = $config['capabilities']['extra_capabilities']; $extraCapabilities = $config['capabilities']['extra_capabilities'];
unset($config['capabilities']['extra_capabilities']); unset($config['capabilities']['extra_capabilities']);
if (getenv('TRAVIS_JOB_NUMBER')) {
$guessedCapabilities = array(
'tunnel-identifier' => getenv('TRAVIS_JOB_NUMBER'),
'build' => getenv('TRAVIS_BUILD_NUMBER'),
'tags' => array('Travis-CI', 'PHP '.phpversion()),
);
} else {
$guessedCapabilities = array(
'tags' => array(php_uname('n'), 'PHP '.phpversion()),
);
}
return new Definition('Behat\Mink\Driver\Selenium2Driver', array( return new Definition('Behat\Mink\Driver\Selenium2Driver', array(
$config['browser'], $config['browser'],
array_replace($extraCapabilities, $config['capabilities']), array_replace($extraCapabilities, $guessedCapabilities, $config['capabilities']),
$config['wd_host'], $config['wd_host'],
)); ));
} }