/**
  * @param StepEvent $stepEvent
  */
 public function stepAfter(StepEvent $stepEvent)
 {
     if ($stepEvent->getStep()->hasFailed() && $stepEvent->getStep()->getAction('seeNoDifferenceToReferenceImage')) {
         /** @var WebDriver $stepWebDriver */
         $stepWebDriver = $stepEvent->getTest()->getScenario()->current('modules')['WebDriver'];
         $identifier = $stepEvent->getStep()->getArguments()[0];
         $windowSize = $this->fileSystemUtil->getCurrentWindowSizeString($stepWebDriver);
         $this->failedIdentifiers[] = array('identifier' => $identifier, 'windowSize' => $windowSize, 'failImage' => base64_encode(file_get_contents($this->fileSystemUtil->getFailImagePath($identifier, $windowSize, 'fail'))), 'diffImage' => base64_encode(file_get_contents($this->fileSystemUtil->getFailImagePath($identifier, $windowSize, 'diff'))), 'referenceImage' => base64_encode(file_get_contents($this->fileSystemUtil->getReferenceImagePath($identifier, $windowSize))));
     }
 }
 /**
  * Create screenshot for an element
  *
  * @param string $referenceImageName
  * @param RemoteWebElement $element
  * @return \Imagick
  */
 protected function _createScreenshot($referenceImageName, RemoteWebElement $element)
 {
     // Try scrolling the element into the view port
     $element->getLocationOnScreenOnceScrolledIntoView();
     $tempImagePath = $this->moduleFileSystemUtil->getTempImagePath($referenceImageName);
     $this->webDriver->webDriver->takeScreenshot($tempImagePath);
     $image = new \Imagick($tempImagePath);
     $image->cropImage($element->getSize()->getWidth(), $element->getSize()->getHeight(), $element->getCoordinates()->onPage()->getX(), $element->getCoordinates()->onPage()->getY());
     $image->setImageFormat('png');
     $image->writeImage($tempImagePath);
     return $image;
 }