From 84bccc838ce7bd40217b0d8adbbe65c50af3f180 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Thu, 8 May 2014 13:15:15 +0200 Subject: [PATCH] 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 --- .../Driver/BrowserStackFactory.php | 10 ---------- .../ServiceContainer/Driver/SauceLabsFactory.php | 14 ++------------ .../ServiceContainer/Driver/Selenium2Factory.php | 14 +++++++++++++- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/Behat/MinkExtension/ServiceContainer/Driver/BrowserStackFactory.php b/src/Behat/MinkExtension/ServiceContainer/Driver/BrowserStackFactory.php index 3950381..6188e64 100644 --- a/src/Behat/MinkExtension/ServiceContainer/Driver/BrowserStackFactory.php +++ b/src/Behat/MinkExtension/ServiceContainer/Driver/BrowserStackFactory.php @@ -42,16 +42,6 @@ class BrowserStackFactory extends Selenium2Factory */ 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']); return parent::buildDriver($config); diff --git a/src/Behat/MinkExtension/ServiceContainer/Driver/SauceLabsFactory.php b/src/Behat/MinkExtension/ServiceContainer/Driver/SauceLabsFactory.php index 829f4b7..98d6a57 100644 --- a/src/Behat/MinkExtension/ServiceContainer/Driver/SauceLabsFactory.php +++ b/src/Behat/MinkExtension/ServiceContainer/Driver/SauceLabsFactory.php @@ -43,21 +43,11 @@ class SauceLabsFactory extends Selenium2Factory */ 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'; if ($config['connect']) { $host = 'localhost:4445'; } - $config['capabilities'] = $capabilities; $config['wd_host'] = sprintf('%s:%s@%s/wd/hub', $config['username'], $config['access_key'], $host); return parent::buildDriver($config); @@ -75,13 +65,13 @@ class SauceLabsFactory extends Selenium2Factory ->scalarNode('max-duration')->defaultValue('300')->end() ->scalarNode('command-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') ->useAttributeAsKey('') ->prototype('variable')->end() ->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') ->children() ->scalarNode('executable')->isRequired()->end() diff --git a/src/Behat/MinkExtension/ServiceContainer/Driver/Selenium2Factory.php b/src/Behat/MinkExtension/ServiceContainer/Driver/Selenium2Factory.php index 74be082..1a25836 100644 --- a/src/Behat/MinkExtension/ServiceContainer/Driver/Selenium2Factory.php +++ b/src/Behat/MinkExtension/ServiceContainer/Driver/Selenium2Factory.php @@ -60,9 +60,21 @@ class Selenium2Factory implements DriverFactory $extraCapabilities = $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( $config['browser'], - array_replace($extraCapabilities, $config['capabilities']), + array_replace($extraCapabilities, $guessedCapabilities, $config['capabilities']), $config['wd_host'], )); }