/** * Configures default Mink session before each scenario. * Configuration is based on provided scenario tags: * * `@javascript` tagged scenarios will get `javascript_session` as default session * `@mink:CUSTOM_NAME tagged scenarios will get `CUSTOM_NAME` as default session * Other scenarios get `default_session` as default session * * `@insulated` tag will cause Mink to stop current sessions before scenario * instead of just soft-resetting them * * @param ScenarioEvent|OutlineExampleEvent $event */ public function prepareDefaultMinkSession($event) { $scenario = $event instanceof ScenarioEvent ? $event->getScenario() : $event->getOutline(); $session = $this->parameters['default_session']; foreach ($scenario->getTags() as $tag) { if ('javascript' === $tag) { $session = $this->parameters['javascript_session']; } elseif (preg_match('/^mink\\:(.+)/', $tag, $matches)) { $session = $matches[1]; } } if ($scenario->hasTag('insulated')) { $this->mink->stopSessions(); } else { $this->mink->resetSessions(); } $this->mink->setDefaultSessionName($session); }
/** * @param ScenarioEvent|OutlineExampleEvent $event */ public function beforeScenario($event) { if (!$this->enabled) { return; } if ($event instanceof ScenarioEvent) { $this->currentScenarioTitle = $event->getScenario()->getTitle(); $this->currentFeatureTitle = $event->getScenario()->getFeature()->getTitle(); } elseif ($event instanceof OutlineExampleEvent) { $this->currentScenarioTitle = $event->getOutline()->getTitle(); $this->currentFeatureTitle = $event->getOutline()->getFeature()->getTitle(); } else { throw new \InvalidArgumentException(); } $this->currentReport = array('feature' => $this->currentFeatureTitle, 'scenario' => $this->currentScenarioTitle, 'steps' => array()); }
/** * Configures default Drupal driver to use before each scenario or outline. * * `@api` tagged scenarios will get the `api_driver` as the default driver. * * Other scenarios get the `default_driver` as the default driver. * * @param ScenarioEvent|OutlineEvent $event */ public function prepareDefaultDrupalDriver($event) { $scenario = $event instanceof ScenarioEvent ? $event->getScenario() : $event->getOutline(); // Set the default driver. $driver = $this->parameters['default_driver']; foreach ($scenario->getTags() as $tag) { if (isset($this->parameters[$tag . '_driver'])) { $driver = $this->parameters[$tag . '_driver']; } } $this->drupal->setDefaultDriverName($driver); }