In default I run tests with goutte. How can I set different driver for one step? For example to take screenshot after failed step I need selenium driver. And I don't know which step will fail.
Have a look at the Mink docs, specifically the managing sessions chapter to learn how to change the default driver. If you're not familiar with Behat hooks it's also good to catch up with Hooking into the Test Process docs.
Here's an example of how you could access mink and change the default session. Once this method is executed, all the following operations on the session object will be perform through the selected driver.
use Behat\Behat\Hook\Scope\BeforeStepScope;
use Behat\Behat\Hook\Scope\AfterStepScope;
class MyContext extends RawMinkContext
{
/**
* @BeforeStep
*/
public function before(BeforeStepScope $scope)
{
// note that this will be called before EVERY step
// add logic here if you want to perform it before SOME steps
// You can't really know if your step will fail though ;)
$mink = $this->getMink();
$mink->setDefaultSessionName('selenium');
}
public function after(AfterStepScope $scope)
{
// here you can inspect $scope to see if your step failed
}
}
This is not a complete solution, but should point you into the right direction if you really want to pursue it.
However, I strongly discourage you from doing so.
If your step failed it was already executed. To make a screenshot you would need to execute the step again with a different driver. The state of the app would be most likely different at this point. You'd also need to fight with differences between the drivers, try to share the cookie etc. It's just not worth the effort.
Instead, simply dump an html. You can always display it in a browser.