Skip to content

Instantly share code, notes, and snippets.

@jk
Forked from michalochman/gist:3175175
Last active February 14, 2019 16:37
Show Gist options
  • Save jk/6422163 to your computer and use it in GitHub Desktop.
Save jk/6422163 to your computer and use it in GitHub Desktop.
Take screenshots with Behat + Mink + Selenium2 Stack when a step fails. CAUTION: Work in progress
<?php
use Behat\Behat\Event\StepEvent;
use Behat\Gherkin\Node\StepNode,
Behat\Gherkin\Node\ScenarioNode,
Behat\Gherkin\Node\FeatureNode;
use Behat\Mink\Driver\Selenium2Driver;
/**
* Take screenshot when step fails.
* Works only with Selenium2Driver.
*
* @AfterStep
*/
public function takeScreenshotAfterFailedStep(StepEvent $event)
{
if (StepEvent::FAILED === $event->getResult()) {
$driver = $this->getSession()->getDriver();
// var_dump($step);
if (!($driver instanceof Selenium2Driver)) {
// throw new UnsupportedDriverActionException('Taking screenshots is not supported by %s, use Selenium2Driver instead.', $driver);
return;
}
$stepNode = $event->getStep();
$scenarioNode = $stepNode->getParent();
$featureNode = $scenarioNode->getFeature();
// $title = ['step' => $stepNode->getText(), 'scenario' => $scenarioNode->getTitle(), 'feature' => $featureNode->getTitle().": ".$featureNode->getDescription()];
// var_dump($title);
$screenshot = $driver->getWebDriverSession()->screenshot();
file_put_contents('/tmp/test.png', base64_decode($screenshot));
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment