diff --git a/etc/travis/suites/application/script/test-behat-with-javascript b/etc/travis/suites/application/script/test-behat-with-javascript index 86566ecfdb..fdbc675d4b 100755 --- a/etc/travis/suites/application/script/test-behat-with-javascript +++ b/etc/travis/suites/application/script/test-behat-with-javascript @@ -29,14 +29,10 @@ run_behat() { local code=0 print_header "Testing (Behat - brand new, javascript scenarios; @javascript && ~@todo && ~@cli)" "Sylius" - - for path in features/* - do - run_command "bin/behat $path --no-interaction -vvv -f progress -p cached --tags=\"@javascript && ~@todo && ~@cli\"" || code=$? - if [[ ${code} = 1 ]]; then - run_command "bin/behat $path --no-interaction -vvv -f progress -p cached --tags=\"@javascript && ~@todo && ~@cli\" --rerun" ; code=$? - fi - done + run_command "bin/behat --strict --no-interaction -vvv -f progress -p cached --tags=\"@javascript && ~@todo && ~@cli\"" || code=$? + if [[ ${code} = 1 ]]; then + run_command "bin/behat --strict --no-interaction -vvv -f progress -p cached --tags=\"@javascript && ~@todo && ~@cli\" --rerun" ; code=$? + fi return ${code} } diff --git a/src/Sylius/Behat/Extension/SeleniumExtension/SeleniumSessionRestarter.php b/src/Sylius/Behat/Extension/SeleniumExtension/SeleniumSessionRestarter.php new file mode 100644 index 0000000000..31ce048df3 --- /dev/null +++ b/src/Sylius/Behat/Extension/SeleniumExtension/SeleniumSessionRestarter.php @@ -0,0 +1,52 @@ + + */ +final class SeleniumSessionRestarter implements EventSubscriberInterface +{ + /** + * @var Mink + */ + private $mink; + + /** + * @param Mink $mink + */ + public function __construct(Mink $mink) + { + $this->mink = $mink; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() + { + return [ + AfterSuiteTested::BEFORE => ['stopSession', 128], + ]; + } + + public function stopSession() + { + if ($this->mink->hasSession('selenium2') && $this->mink->isSessionStarted('selenium2')) { + $this->mink->getSession('selenium2')->stop(); + } + } +} diff --git a/src/Sylius/Behat/Extension/SeleniumExtension/ServiceContainer/SeleniumExtension.php b/src/Sylius/Behat/Extension/SeleniumExtension/ServiceContainer/SeleniumExtension.php new file mode 100644 index 0000000000..4902086aa2 --- /dev/null +++ b/src/Sylius/Behat/Extension/SeleniumExtension/ServiceContainer/SeleniumExtension.php @@ -0,0 +1,68 @@ + + */ +final class SeleniumExtension implements Extension +{ + /** + * {@inheritdoc} + */ + public function getConfigKey() + { + return 'sylius_selenium'; + } + + /** + * {@inheritdoc} + */ + public function initialize(ExtensionManager $extensionManager) + { + } + + /** + * {@inheritdoc} + */ + public function configure(ArrayNodeDefinition $builder) + { + } + + /** + * {@inheritdoc} + */ + public function load(ContainerBuilder $container, array $config) + { + $definition = new Definition(SeleniumSessionRestarter::class, [new Reference(MinkExtension::MINK_ID)]); + $definition->addTag(EventDispatcherExtension::SUBSCRIBER_TAG); + + $container->setDefinition('sylius_selenium.selenium_session_restarter', $definition); + } + + /** + * {@inheritdoc} + */ + public function process(ContainerBuilder $container) + { + } +} diff --git a/src/Sylius/Behat/Resources/config/profiles/default.yml b/src/Sylius/Behat/Resources/config/profiles/default.yml index 3cde32393b..c3ce3860ad 100644 --- a/src/Sylius/Behat/Resources/config/profiles/default.yml +++ b/src/Sylius/Behat/Resources/config/profiles/default.yml @@ -50,6 +50,8 @@ default: Sylius\Behat\Extension\SymfonyExtension: ~ + Sylius\Behat\Extension\SeleniumExtension: ~ + FriendsOfBehat\PerformanceExtension: ~ FriendsOfBehat\VariadicExtension: ~