diff --git a/src/Behat/MinkExtension/Configuration.php b/src/Behat/MinkExtension/Configuration.php deleted file mode 100644 index c839ecb..0000000 --- a/src/Behat/MinkExtension/Configuration.php +++ /dev/null @@ -1,145 +0,0 @@ - - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -/** - * MinkExtension configuration tree. - * - * @author Konstantin Kudryashov - */ -class Configuration implements ConfigurationInterface -{ - /** - * Returns configuration tree. - * - * @return TreeBuilder - */ - public function getConfigTreeBuilder() - { - $treeBuilder = new TreeBuilder(); - - return $treeBuilder->root('mink')-> - children()-> - scalarNode('mink_loader')-> - defaultNull()-> - end()-> - scalarNode('base_url')-> - defaultNull()-> - end()-> - scalarNode('files_path')-> - defaultNull()-> - end()-> - scalarNode('show_cmd')-> - defaultNull()-> - end()-> - scalarNode('show_tmp_dir')-> - defaultValue(sys_get_temp_dir())-> - end()-> - scalarNode('default_session')-> - defaultValue('goutte')-> - end()-> - scalarNode('javascript_session')-> - defaultValue('sahi')-> - end()-> - scalarNode('browser_name')-> - defaultValue('firefox')-> - end()-> - arrayNode('goutte')-> - children()-> - arrayNode('zend_config')-> - useAttributeAsKey('key')-> - prototype('variable')->end()-> - end()-> - arrayNode('server_parameters')-> - useAttributeAsKey('key')-> - prototype('variable')->end()-> - end()-> - end()-> - end()-> - arrayNode('sahi')-> - children()-> - scalarNode('sid')-> - defaultNull()-> - end()-> - scalarNode('host')-> - defaultValue('localhost')-> - end()-> - scalarNode('port')-> - defaultValue(9999)-> - end()-> - end()-> - end()-> - arrayNode('zombie')-> - children()-> - scalarNode('host')-> - defaultValue('127.0.0.1')-> - end()-> - scalarNode('port')-> - defaultValue(8124)-> - end()-> - scalarNode('auto_server')-> - defaultValue(true)-> - end()-> - scalarNode('node_bin')-> - defaultValue('node')-> - end()-> - end()-> - end()-> - arrayNode('selenium')-> - children()-> - scalarNode('host')-> - defaultValue('127.0.0.1')-> - end()-> - scalarNode('port')-> - defaultValue(4444)-> - end()-> - scalarNode('browser')-> - defaultValue('*%behat.mink.browser_name%')-> - end()-> - end()-> - end()-> - arrayNode('selenium2')-> - children()-> - scalarNode('browser')-> - defaultValue('%behat.mink.browser_name%')-> - end()-> - arrayNode('capabilities')-> - children()-> - scalarNode('browserName')-> - defaultValue('firefox')-> - end()-> - scalarNode('version')-> - defaultValue(8)-> - end()-> - scalarNode('platform')-> - defaultValue('ANY')-> - end()-> - scalarNode('browserVersion')-> - defaultValue(8)-> - end()-> - scalarNode('browser')-> - defaultValue('firefox')-> - end()-> - end()-> - end()-> - scalarNode('wd_host')-> - defaultValue('http://localhost:4444/wd/hub')-> - end()-> - end()-> - end()-> - end()-> - end(); - } -} diff --git a/src/Behat/MinkExtension/Context/ClassGuesser/MinkContextClassGuesser.php b/src/Behat/MinkExtension/Context/ClassGuesser/MinkContextClassGuesser.php new file mode 100644 index 0000000..da75d34 --- /dev/null +++ b/src/Behat/MinkExtension/Context/ClassGuesser/MinkContextClassGuesser.php @@ -0,0 +1,22 @@ + @@ -21,7 +23,7 @@ use Behat\Mink\Mink; * * @author Konstantin Kudryashov */ -class MinkAwareContextInitializer implements ContextInitializerInterface +class MinkAwareInitializer implements InitializerInterface { private $mink; private $parameters; diff --git a/src/Behat/MinkExtension/Extension.php b/src/Behat/MinkExtension/Extension.php index 056c3b7..8c5c8a9 100644 --- a/src/Behat/MinkExtension/Extension.php +++ b/src/Behat/MinkExtension/Extension.php @@ -2,8 +2,8 @@ namespace Behat\MinkExtension; -use Symfony\Component\Config\Definition\Processor, - Symfony\Component\Config\FileLocator, +use Symfony\Component\Config\FileLocator, + Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition, Symfony\Component\DependencyInjection\ContainerBuilder, Symfony\Component\DependencyInjection\Loader\XmlFileLoader; @@ -33,18 +33,14 @@ class Extension implements ExtensionInterface */ public function load(array $config, ContainerBuilder $container) { - $processor = new Processor(); - $configuration = new Configuration(); - $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/services')); - - $config = $processor->processConfiguration($configuration, array($config)); + $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/services')); $loader->load('mink.xml'); if (isset($config['mink_loader'])) { - $configPath = $container->getParameter('behat.paths.config'); + $basePath = $container->getParameter('behat.paths.base'); - if (file_exists($configPath.DIRECTORY_SEPARATOR.$config['mink_loader'])) { - require($configPath.DIRECTORY_SEPARATOR.$config['mink_loader']); + if (file_exists($basePath.DIRECTORY_SEPARATOR.$config['mink_loader'])) { + require($basePath.DIRECTORY_SEPARATOR.$config['mink_loader']); } else { require($config['mink_loader']); } @@ -83,6 +79,126 @@ class Extension implements ExtensionInterface $container->setParameter('mink.paths.lib', $minkLibPath); } + /** + * Setups configuration for current extension. + * + * @param ArrayNodeDefinition $builder + */ + public function getConfig(ArrayNodeDefinition $builder) + { + $builder-> + children()-> + scalarNode('mink_loader')-> + defaultNull()-> + end()-> + scalarNode('base_url')-> + defaultNull()-> + end()-> + scalarNode('files_path')-> + defaultNull()-> + end()-> + scalarNode('show_cmd')-> + defaultNull()-> + end()-> + scalarNode('show_tmp_dir')-> + defaultValue(sys_get_temp_dir())-> + end()-> + scalarNode('default_session')-> + defaultValue('goutte')-> + end()-> + scalarNode('javascript_session')-> + defaultValue('selenium2')-> + end()-> + scalarNode('browser_name')-> + defaultValue('firefox')-> + end()-> + arrayNode('goutte')-> + children()-> + arrayNode('zend_config')-> + useAttributeAsKey('key')-> + prototype('variable')->end()-> + end()-> + arrayNode('server_parameters')-> + useAttributeAsKey('key')-> + prototype('variable')->end()-> + end()-> + end()-> + end()-> + arrayNode('sahi')-> + children()-> + scalarNode('sid')-> + defaultNull()-> + end()-> + scalarNode('host')-> + defaultValue('localhost')-> + end()-> + scalarNode('port')-> + defaultValue(9999)-> + end()-> + end()-> + end()-> + arrayNode('zombie')-> + children()-> + scalarNode('host')-> + defaultValue('127.0.0.1')-> + end()-> + scalarNode('port')-> + defaultValue(8124)-> + end()-> + scalarNode('auto_server')-> + defaultValue(true)-> + end()-> + scalarNode('node_bin')-> + defaultValue('node')-> + end()-> + end()-> + end()-> + arrayNode('selenium')-> + children()-> + scalarNode('host')-> + defaultValue('127.0.0.1')-> + end()-> + scalarNode('port')-> + defaultValue(4444)-> + end()-> + scalarNode('browser')-> + defaultValue('*%behat.mink.browser_name%')-> + end()-> + end()-> + end()-> + arrayNode('selenium2')-> + children()-> + scalarNode('browser')-> + defaultValue('%behat.mink.browser_name%')-> + end()-> + arrayNode('capabilities')-> + children()-> + scalarNode('browserName')-> + defaultValue('firefox')-> + end()-> + scalarNode('version')-> + defaultValue(8)-> + end()-> + scalarNode('platform')-> + defaultValue('ANY')-> + end()-> + scalarNode('browserVersion')-> + defaultValue(8)-> + end()-> + scalarNode('browser')-> + defaultValue('firefox')-> + end()-> + end()-> + end()-> + scalarNode('wd_host')-> + defaultValue('http://localhost:4444/wd/hub')-> + end()-> + end()-> + end()-> + end()-> + end(); + } + /** * Returns compiler passes used by mink extension. * diff --git a/src/Behat/MinkExtension/services/mink.xml b/src/Behat/MinkExtension/services/mink.xml index f4d9b7a..9abace9 100644 --- a/src/Behat/MinkExtension/services/mink.xml +++ b/src/Behat/MinkExtension/services/mink.xml @@ -9,10 +9,9 @@ Behat\Mink\Mink Behat\Mink\Session Behat\Mink\Selector\SelectorsHandler - Behat\MinkBundle\Client goutte - sahi + selenium2 null null null @@ -33,10 +32,14 @@ - + %behat.mink.parameters% - + + + + +