You are here

public function FeatureContext::takeScreenshotAfterFailedStep in Acquia Lift Connector 7

Same name and namespace in other branches
  1. 7.2 behat-tests/features/bootstrap/FeatureContext.php \FeatureContext::takeScreenshotAfterFailedStep()

Take screenshot when step fails. Works only with Selenium2Driver.

@AfterStep

File

behat-tests/features/bootstrap/FeatureContext.php, line 149

Class

FeatureContext
Defines application features from the specific context.

Code

public function takeScreenshotAfterFailedStep(AfterStepScope $scope) {
  if (!$scope
    ->getTestResult()
    ->isPassed()) {
    $driver = $this
      ->getSession()
      ->getDriver();
    if (!$driver instanceof Selenium2Driver) {

      //throw new UnsupportedDriverActionException('Taking screenshots is not supported by %s, use Selenium2Driver instead.', $driver);
      return;
    }
    $step = $scope
      ->getStep();
    $step_line = $step
      ->getLine();
    $temp_path = $this
      ->getContextParameter('temp_path');
    $filename = $temp_path . '/stepAtLine' . $step_line . '.png';
    $screenshot = $driver
      ->getWebDriverSession()
      ->screenshot();
    file_put_contents($filename, base64_decode($screenshot));
    echo "Saved Screenshot To {$filename} \n";
    $filename = $temp_path . '/stepAtLine' . $step_line . '.html';
    $source = $driver
      ->getWebDriverSession()
      ->source();
    file_put_contents($filename, $source);
    echo "Saved Source To {$filename}\n";
  }
}