/** * @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; }