/**
  * Take screenshot when step fails. Works only with Selenium2Driver.
  *
  * Screenshot is saved at [Date]/[Feature]/[Scenario]/[Step].jpg and emailed.
  *
  * @AfterStep @javascript
  */
 public function takeScreenshotAfterFailedStep(Behat\Behat\Event\StepEvent $event)
 {
     if ($event->getResult() === Behat\Behat\Event\StepEvent::FAILED) {
         $html = $this->getSession()->getDriver()->getHtml('html');
         echo $html . PHP_EOL . PHP_EOL;
         $driver = $this->getSession()->getDriver();
         if ($driver instanceof Behat\Mink\Driver\Selenium2Driver) {
             $step = $event->getStep();
             $path = array('date' => date("Ymd-Hi"), 'feature' => $step->getParent()->getFeature()->getTitle(), 'scenario' => $step->getParent()->getTitle(), 'step' => $step->getType() . ' ' . $step->getText());
             $path = preg_replace('/[^\\-\\.\\w]/', '_', $path);
             $filename = '/tmp/behat/' . implode('/', $path) . '.jpg';
             $dir = dirname($filename);
             // Create directories if needed.
             if (!@is_dir($dir)) {
                 @mkdir($dir, 0775, TRUE);
             }
             file_put_contents($filename, $driver->getScreenshot());
         }
     }
 }