diff --git a/composer.json b/composer.json index 2197fab..70ea417 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "require": { "php": ">=5.3.2", - "behat/behat": "~3.0-RC1@dev", + "behat/behat": "~3.0-RC2@dev", "behat/mink": ">=1.4.3,<1.6-dev", "symfony/config": "~2.2" }, diff --git a/spec/Behat/MinkExtension/Context/Initializer/MinkAwareInitializerSpec.php b/spec/Behat/MinkExtension/Context/Initializer/MinkAwareInitializerSpec.php index 64cc14f..84b208a 100644 --- a/spec/Behat/MinkExtension/Context/Initializer/MinkAwareInitializerSpec.php +++ b/spec/Behat/MinkExtension/Context/Initializer/MinkAwareInitializerSpec.php @@ -19,14 +19,9 @@ class MinkAwareInitializerSpec extends ObjectBehavior $this->shouldHaveType('Behat\Behat\Context\Initializer\ContextInitializer'); } - function it_supports_mink_aware_contexts(MinkAwareContext $context) + function it_does_nothing_for_basic_contexts(Context $context) { - $this->supportsContext($context)->shouldBe(true); - } - - function it_does_not_support_basic_contexts(Context $context) - { - $this->supportsContext($context)->shouldBe(false); + $this->initializeContext($context); } function it_injects_mink_and_parameters_in_mink_aware_contexts(MinkAwareContext $context, $mink) diff --git a/spec/Behat/MinkExtension/Listener/SessionsListenerSpec.php b/spec/Behat/MinkExtension/Listener/SessionsListenerSpec.php index 389beca..49846ad 100644 --- a/spec/Behat/MinkExtension/Listener/SessionsListenerSpec.php +++ b/spec/Behat/MinkExtension/Listener/SessionsListenerSpec.php @@ -7,7 +7,6 @@ use Behat\Gherkin\Node\FeatureNode; use Behat\Gherkin\Node\ScenarioNode; use Behat\Mink\Mink; use PhpSpec\ObjectBehavior; -use Prophecy\Argument; class SessionsListenerSpec extends ObjectBehavior { diff --git a/src/Behat/MinkExtension/Context/Initializer/MinkAwareInitializer.php b/src/Behat/MinkExtension/Context/Initializer/MinkAwareInitializer.php index 5b44c26..94e5afc 100644 --- a/src/Behat/MinkExtension/Context/Initializer/MinkAwareInitializer.php +++ b/src/Behat/MinkExtension/Context/Initializer/MinkAwareInitializer.php @@ -40,20 +40,29 @@ class MinkAwareInitializer implements ContextInitializer } /** - * Checks if initializer supports provided context. + * Initializes provided context. + * + * @param Context $context + */ + public function initializeContext(Context $context) + { + if (!$context instanceof MinkAwareContext && !$this->usesMinkDictionary($context)) { + return; + } + + $context->setMink($this->mink); + $context->setMinkParameters($this->parameters); + } + + /** + * Checks whether the context uses the MinkDictionary trait. * * @param Context $context * * @return Boolean */ - public function supportsContext(Context $context) + private function usesMinkDictionary(Context $context) { - // if context/subcontext implements MinkAwareContext - if ($context instanceof MinkAwareContext) { - return true; - } - - // if context/subcontext uses MinkDictionary trait $refl = new \ReflectionObject($context); if (method_exists($refl, 'getTraitNames')) { if (in_array('Behat\\MinkExtension\\Context\\MinkDictionary', $refl->getTraitNames())) { @@ -63,15 +72,4 @@ class MinkAwareInitializer implements ContextInitializer return false; } - - /** - * Initializes provided context. - * - * @param Context $context - */ - public function initializeContext(Context $context) - { - $context->setMink($this->mink); - $context->setMinkParameters($this->parameters); - } } diff --git a/src/Behat/MinkExtension/Context/RawMinkContext.php b/src/Behat/MinkExtension/Context/RawMinkContext.php index 34765f1..c4d45ec 100644 --- a/src/Behat/MinkExtension/Context/RawMinkContext.php +++ b/src/Behat/MinkExtension/Context/RawMinkContext.php @@ -131,10 +131,10 @@ class RawMinkContext implements MinkAwareContext /** * Save a screenshot of the current window to the file system. * - * @param string $filename Desired filename, defaults to - * __.png - * @param string $filepath Desired filepath, defaults to - * upload_tmp_dir, falls back to sys_get_temp_dir() + * @param string $filename Desired filename, defaults to + * __.png + * @param string $filepath Desired filepath, defaults to + * upload_tmp_dir, falls back to sys_get_temp_dir() */ public function saveScreenshot($filename = null, $filepath = null) { diff --git a/src/Behat/MinkExtension/Listener/FailureShowListener.php b/src/Behat/MinkExtension/Listener/FailureShowListener.php index fd6b5ce..92a22f2 100644 --- a/src/Behat/MinkExtension/Listener/FailureShowListener.php +++ b/src/Behat/MinkExtension/Listener/FailureShowListener.php @@ -65,7 +65,7 @@ class FailureShowListener implements EventSubscriberInterface return; } - if (!$event->getTestResult()->getCallResult()->getException() instanceof MinkException) { + if (!$event->getTestResult()->getException() instanceof MinkException) { return; } diff --git a/src/Behat/MinkExtension/Listener/SessionsListener.php b/src/Behat/MinkExtension/Listener/SessionsListener.php index af707dc..0a56886 100644 --- a/src/Behat/MinkExtension/Listener/SessionsListener.php +++ b/src/Behat/MinkExtension/Listener/SessionsListener.php @@ -10,6 +10,8 @@ namespace Behat\MinkExtension\Listener; +use Behat\Behat\Tester\Event\AbstractScenarioTested; +use Behat\Behat\Tester\Event\ExampleTested; use Behat\Behat\Tester\Event\ScenarioTested; use Behat\Mink\Mink; use Behat\Testwork\Tester\Event\ExerciseCompleted; @@ -45,6 +47,7 @@ class SessionsListener implements EventSubscriberInterface { return array( ScenarioTested::BEFORE => array('prepareDefaultMinkSession', 10), + ExampleTested::BEFORE => array('prepareDefaultMinkSession', 10), ExerciseCompleted::AFTER => array('tearDownMinkSessions', -10) ); } @@ -60,9 +63,9 @@ class SessionsListener implements EventSubscriberInterface * `@insulated` tag will cause Mink to stop current sessions before scenario * instead of just soft-resetting them * - * @param ScenarioTested $event + * @param AbstractScenarioTested $event */ - public function prepareDefaultMinkSession(ScenarioTested $event) + public function prepareDefaultMinkSession(AbstractScenarioTested $event) { $scenario = $event->getScenario(); $feature = $event->getFeature();