From ac53f487d6cf32ef1e75caf3893f0811e6b9b01e Mon Sep 17 00:00:00 2001 From: dzaiats Date: Mon, 12 Dec 2016 19:55:35 +0100 Subject: [PATCH] [1.4.2-issue-18] - adapted methods. Added fix for drawing screenshots --- .../java/util/validator/ChunkValidator.java | 4 ++++ .../validator/ResponsiveUIChunkValidator.java | 15 ++++++++++++++- .../util/validator/ResponsiveUIValidator.java | 17 +++++++++-------- src/main/java/util/validator/UIValidator.java | 13 +++++++++++++ src/main/java/util/validator/Validator.java | 2 ++ src/test/java/ResponsiveValidatorTest.java | 13 +++++++++---- 6 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/main/java/util/validator/ChunkValidator.java b/src/main/java/util/validator/ChunkValidator.java index 889a744..0b90041 100644 --- a/src/main/java/util/validator/ChunkValidator.java +++ b/src/main/java/util/validator/ChunkValidator.java @@ -1,5 +1,7 @@ package util.validator; +import org.openqa.selenium.WebElement; + public interface ChunkValidator { ResponsiveUIChunkValidator changeMetricsUnitsTo(ResponsiveUIValidator.Units units); @@ -28,4 +30,6 @@ public interface ChunkValidator { ResponsiveUIChunkValidator equalTopBottomOffset(); + ResponsiveUIChunkValidator insideOf(WebElement containerElement, String readableContainerName); + } diff --git a/src/main/java/util/validator/ResponsiveUIChunkValidator.java b/src/main/java/util/validator/ResponsiveUIChunkValidator.java index c35c3f2..8c0eb7e 100644 --- a/src/main/java/util/validator/ResponsiveUIChunkValidator.java +++ b/src/main/java/util/validator/ResponsiveUIChunkValidator.java @@ -162,4 +162,17 @@ public ResponsiveUIChunkValidator equalTopBottomOffset() { validateEqualTopBottomOffset(rootElements); return this; } -} + + /** + * Verify that element(s) is(are) located inside of specified element + * + * @param containerElement + * @param readableContainerName + * @return ResponsiveUIValidator + */ + @Override + public ResponsiveUIChunkValidator insideOf(WebElement containerElement, String readableContainerName) { + validateInsideOfContainer(containerElement, readableContainerName); + return this; + } +} \ No newline at end of file diff --git a/src/main/java/util/validator/ResponsiveUIValidator.java b/src/main/java/util/validator/ResponsiveUIValidator.java index de58b86..71cc803 100644 --- a/src/main/java/util/validator/ResponsiveUIValidator.java +++ b/src/main/java/util/validator/ResponsiveUIValidator.java @@ -133,14 +133,13 @@ public ResponsiveUIChunkValidator findElements(java.util.List elemen } /** - * Verify that element(s) is(are) located inside of specified element + * Change units to Pixels or % (Units.PX, Units.PERCENT) * - * @param containerElement - * @param readableContainerName - * @return ResponsiveUIValidator + * @param units + * @return UIValidator */ - public ResponsiveUIValidator insideOf(WebElement containerElement, String readableContainerName) { - validateInsideOfContainer(containerElement, readableContainerName); + public ResponsiveUIValidator changeMetricsUnitsTo(Units units) { + this.units = units; return this; } @@ -699,7 +698,9 @@ String getFormattedMessage(WebElement element) { int getRetinaValue(int value) { if (!isMobile()) { int zoom = Integer.valueOf(currentZoom.replace("%", "")); - if (zoom != 100) { + if (zoom > 100) { + value = (int) (value + (value * Math.abs(zoom - 100f) / 100f)); + } else if (zoom < 100) { value = (int) (value - (value * Math.abs(zoom - 100f) / 100f)); } if (isRetinaDisplay() && isChrome()) { @@ -750,7 +751,7 @@ long getPageHeight() { } } - private void validateInsideOfContainer(WebElement element, String readableContainerName) { + void validateInsideOfContainer(WebElement element, String readableContainerName) { float xContainer = element.getLocation().x; float yContainer = element.getLocation().y; float widthContainer = element.getSize().width; diff --git a/src/main/java/util/validator/UIValidator.java b/src/main/java/util/validator/UIValidator.java index 68027ee..a0ae3d9 100644 --- a/src/main/java/util/validator/UIValidator.java +++ b/src/main/java/util/validator/UIValidator.java @@ -557,4 +557,17 @@ public UIValidator equalTopBottomOffset() { validateEqualTopBottomOffset(rootElement, rootElementReadableName); return this; } + + /** + * Verify that element(s) is(are) located inside of specified element + * + * @param containerElement + * @param readableContainerName + * @return ResponsiveUIValidator + */ + @Override + public UIValidator insideOf(WebElement containerElement, String readableContainerName) { + validateInsideOfContainer(containerElement, readableContainerName); + return this; + } } \ No newline at end of file diff --git a/src/main/java/util/validator/Validator.java b/src/main/java/util/validator/Validator.java index 94c1c2d..82e741f 100644 --- a/src/main/java/util/validator/Validator.java +++ b/src/main/java/util/validator/Validator.java @@ -82,4 +82,6 @@ interface Validator { UIValidator equalTopBottomOffset(); + UIValidator insideOf(WebElement containerElement, String readableContainerName); + } diff --git a/src/test/java/ResponsiveValidatorTest.java b/src/test/java/ResponsiveValidatorTest.java index 856c54a..1f22d61 100644 --- a/src/test/java/ResponsiveValidatorTest.java +++ b/src/test/java/ResponsiveValidatorTest.java @@ -6,6 +6,7 @@ import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.phantomjs.PhantomJSDriverService; import util.driver.DriverHelper; import util.driver.WebDriverFactory; import util.validator.ResponsiveUIValidator; @@ -22,18 +23,21 @@ public class ResponsiveValidatorTest { @Test public void testThatResponsiveValidatorWorks() { Map sysProp = new HashMap<>(); - sysProp.put("BROWSER", "Chrome"); + //sysProp.put("BROWSER", "phantomjs"); + //sysProp.put("IS_HEADLESS", "true"); sysProp.put("IS_LOCAL", "true"); - //sysProp.put(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/ZayCo/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs"); + sysProp.put("BROWSER", "Firefox"); + sysProp.put(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/ZayCo/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs"); EnvironmentHelper.setEnv(sysProp); WebDriverFactory driverFactory = new WebDriverFactory(); driver = driverFactory.getDriver(); - driver.get("http:/visual.itarray.net"); + driver.get("http://visual.itarray.net"); driver.manage().window().maximize(); TestPage page = new TestPage(driver); ResponsiveUIValidator uiValidator = new ResponsiveUIValidator(driver); + uiValidator.setLinesColor(Color.BLACK); SoftAssertions softly = new SoftAssertions(); @@ -109,6 +113,7 @@ public void testThatResponsiveValidatorWorks() { boolean success = uiValidator.init("Validate on page zoom " + val + "%") .findElement(page.mainContainer(), "Main container") .equalLeftRightOffset() + .sameWidthAs(page.gridContainer(), "Grid Container") .drawMap() .validate(); @@ -127,4 +132,4 @@ public void tearDown() { } } -} +} \ No newline at end of file