From 224e2b0b41f8e8f86e45c4e36a8f068881b6ed65 Mon Sep 17 00:00:00 2001 From: "Neubert, Sebastian" Date: Wed, 7 May 2014 16:21:10 +0200 Subject: [PATCH 1/4] #4 Allow comparisson of images that do not have the same size --- module/VisualCeption.php | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/module/VisualCeption.php b/module/VisualCeption.php index 23b5a30..3ea0a8b 100755 --- a/module/VisualCeption.php +++ b/module/VisualCeption.php @@ -46,6 +46,10 @@ public function _before (\Codeception\TestCase $test) $this->webDriverModule = $this->getModule("WebDriver"); $this->webDriver = $this->webDriverModule->webDriver; + $jQueryString = file_get_contents(__DIR__ . "/jquery.js"); + $this->webDriver->executeScript($jQueryString); + $this->webDriver->executeScript('jQuery.noConflict();'); + $this->test = $test; } @@ -95,6 +99,16 @@ public function dontSeeVisualChanges ($identifier, $elementID = null, $excludeEl } } + /** + * Inject jQuery.js to the actual site + */ + public function wantToUseJQuery() + { + $jQueryString = file_get_contents(__DIR__ . "/jquery.js"); + $this->webDriver->executeScript($jQueryString); + $this->webDriver->executeScript('jQuery.noConflict();'); + } + /** * Hide an element to set the visibility to hidden * @@ -351,9 +365,20 @@ private function compareImages ($image1, $image2) $imagick1 = new \Imagick($image1); $imagick2 = new \Imagick($image2); - $result = $imagick1->compareImages($imagick2, \Imagick::METRIC_MEANSQUAREERROR); - $result[0]->setImageFormat("png"); + $maxWidth = max($imagick1->getImageGeometry()['width'], $imagick2->getImageGeometry()['width']); + $maxHeight = max($imagick1->getImageGeometry()['height'], $imagick2->getImageGeometry()['height']); + + $imagick1->extentImage($maxWidth, $maxHeight, 0, 0); + $imagick2->extentImage($maxWidth, $maxHeight, 0, 0); + try { + $result = $imagick1->compareImages($imagick2, \Imagick::METRIC_MEANSQUAREERROR); + $result[0]->setImageFormat("png"); + } catch (\ImagickException $e) { + $this->debug("ImageMagickException! could not campare image1 ($image1) and image2 ($image2).\nExceptionMessage: " . $e->getMessage()); + $this->fail($e->getMessage() . ", image1 $image1 and image2 $image2."); + } + \PHPUnit_Framework_Assert::assertTrue(true); return $result; } } From e2d930d557ff28b774c99133c4652780640a47bd Mon Sep 17 00:00:00 2001 From: "Neubert, Sebastian" Date: Wed, 7 May 2014 17:20:12 +0200 Subject: [PATCH 2/4] PHP5.3 improvements #4, #30 --- module/VisualCeption.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/module/VisualCeption.php b/module/VisualCeption.php index 3ea0a8b..3c49dbb 100755 --- a/module/VisualCeption.php +++ b/module/VisualCeption.php @@ -365,12 +365,16 @@ private function compareImages ($image1, $image2) $imagick1 = new \Imagick($image1); $imagick2 = new \Imagick($image2); - $maxWidth = max($imagick1->getImageGeometry()['width'], $imagick2->getImageGeometry()['width']); - $maxHeight = max($imagick1->getImageGeometry()['height'], $imagick2->getImageGeometry()['height']); + $imagick1Size = $imagick1->getImageGeometry(); + $imagick2Size = $imagick2->getImageGeometry(); + + $maxWidth = max($imagick1Size['width'], $imagick2->getImageGeometry()['width']); + $maxHeight = max($imagick2Size['height'], $imagick2->getImageGeometry()['height']); $imagick1->extentImage($maxWidth, $maxHeight, 0, 0); $imagick2->extentImage($maxWidth, $maxHeight, 0, 0); + try { $result = $imagick1->compareImages($imagick2, \Imagick::METRIC_MEANSQUAREERROR); $result[0]->setImageFormat("png"); From da7d1325ae8087147e61ca55bedc9d3c0a61fc6d Mon Sep 17 00:00:00 2001 From: "Neubert, Sebastian" Date: Thu, 8 May 2014 12:23:59 +0200 Subject: [PATCH 3/4] PHP5.3 improvements #4, #30 --- module/VisualCeption.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/module/VisualCeption.php b/module/VisualCeption.php index 3c49dbb..885345d 100755 --- a/module/VisualCeption.php +++ b/module/VisualCeption.php @@ -368,18 +368,17 @@ private function compareImages ($image1, $image2) $imagick1Size = $imagick1->getImageGeometry(); $imagick2Size = $imagick2->getImageGeometry(); - $maxWidth = max($imagick1Size['width'], $imagick2->getImageGeometry()['width']); - $maxHeight = max($imagick2Size['height'], $imagick2->getImageGeometry()['height']); + $maxWidth = max($imagick1Size['width'], $imagick2Size['width']); + $maxHeight = max($imagick1Size['height'], $imagick2Size['height']); $imagick1->extentImage($maxWidth, $maxHeight, 0, 0); $imagick2->extentImage($maxWidth, $maxHeight, 0, 0); - try { $result = $imagick1->compareImages($imagick2, \Imagick::METRIC_MEANSQUAREERROR); $result[0]->setImageFormat("png"); } catch (\ImagickException $e) { - $this->debug("ImageMagickException! could not campare image1 ($image1) and image2 ($image2).\nExceptionMessage: " . $e->getMessage()); + $this->debug("IMagickException! could not campare image1 ($image1) and image2 ($image2).\nExceptionMessage: " . $e->getMessage()); $this->fail($e->getMessage() . ", image1 $image1 and image2 $image2."); } \PHPUnit_Framework_Assert::assertTrue(true); From 28d40570d0211f6be5004c521e095f1a742ff3c1 Mon Sep 17 00:00:00 2001 From: "Neubert, Sebastian" Date: Thu, 22 May 2014 10:43:19 +0200 Subject: [PATCH 4/4] add test for comparing image with different sizes, fix typo in comment #30 --- .../tests/acceptance/NotSameSizeCest.php | 20 +++++++++++++++++++ .../tests/acceptance/TimeComparisonCest.php | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100755 test/integration/tests/acceptance/NotSameSizeCest.php diff --git a/test/integration/tests/acceptance/NotSameSizeCest.php b/test/integration/tests/acceptance/NotSameSizeCest.php new file mode 100755 index 0000000..baf0e61 --- /dev/null +++ b/test/integration/tests/acceptance/NotSameSizeCest.php @@ -0,0 +1,20 @@ +amOnPage("/VisualCeption/notSameSize.php"); + $I->seeVisualChanges("getRedDiv", "div"); + + $I->wait(1); + + // the test has to be called twice for comparison on the travis server + $I->amOnPage("/VisualCeption/notSameSize.php"); + $I->seeVisualChanges("getRedDiv", "div"); + } +} \ No newline at end of file diff --git a/test/integration/tests/acceptance/TimeComparisonCest.php b/test/integration/tests/acceptance/TimeComparisonCest.php index d648f00..5ddb9e3 100755 --- a/test/integration/tests/acceptance/TimeComparisonCest.php +++ b/test/integration/tests/acceptance/TimeComparisonCest.php @@ -4,7 +4,7 @@ class TimeComparisonCest { /** - * Coparing a div that renders the current time + * Comparing a div that renders the current time */ public function seeVisualChanges (WebGuy $I, $scenario) {