From 25f57ca7b92deb9a51ce0f2bf3213a4adfc8db45 Mon Sep 17 00:00:00 2001 From: Denys Zaiats Date: Fri, 23 Dec 2016 10:48:07 +0100 Subject: [PATCH 1/4] [1.4.2-updated-unique-json-names] - fix for collecting results --- src/main/java/util/validator/ResponsiveUIValidator.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/util/validator/ResponsiveUIValidator.java b/src/main/java/util/validator/ResponsiveUIValidator.java index 787e977..cfb31bd 100644 --- a/src/main/java/util/validator/ResponsiveUIValidator.java +++ b/src/main/java/util/validator/ResponsiveUIValidator.java @@ -1,5 +1,6 @@ package util.validator; +import http.helpers.Helper; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; import org.json.simple.JSONArray; @@ -23,7 +24,6 @@ import java.util.concurrent.atomic.AtomicLong; import static environment.EnvironmentFactory.*; -import static util.general.SystemHelper.isAutomotionFolderExists; import static util.general.SystemHelper.isRetinaDisplay; import static util.validator.Constants.*; import static util.validator.ResponsiveUIValidator.Units.PX; @@ -202,7 +202,8 @@ public boolean validate() { } long ms = System.currentTimeMillis(); - String jsonFileName = rootElementReadableName.replace(" ", "") + "-automotion" + ms + ".json"; + String uuid = Helper.getGeneratedStringWithLength(7); + String jsonFileName = rootElementReadableName.replace(" ", "") + "-automotion" + ms + uuid + ".json"; try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(TARGET_AUTOMOTION_JSON + jsonFileName), StandardCharsets.UTF_8))) { writer.write(jsonResults.toJSONString()); } catch (IOException ex) { @@ -210,7 +211,7 @@ public boolean validate() { } jsonFiles.add(jsonFileName); try { - File file = new File(TARGET_AUTOMOTION_JSON + rootElementReadableName.replace(" ", "") + "-automotion" + ms + ".json"); + File file = new File(TARGET_AUTOMOTION_JSON + rootElementReadableName.replace(" ", "") + "-automotion" + ms + uuid + ".json"); if (file.getParentFile().mkdirs()) { if (file.createNewFile()) { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); From f4df5c9ef18b43b682426834d9aca8ac7bd3a779 Mon Sep 17 00:00:00 2001 From: dzaiats Date: Mon, 26 Dec 2016 10:41:06 +0100 Subject: [PATCH 2/4] [1.4.2-minor fixes] - common fixes --- .../util/validator/ResponsiveUIValidator.java | 31 +++---------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/src/main/java/util/validator/ResponsiveUIValidator.java b/src/main/java/util/validator/ResponsiveUIValidator.java index cfb31bd..e8b4854 100644 --- a/src/main/java/util/validator/ResponsiveUIValidator.java +++ b/src/main/java/util/validator/ResponsiveUIValidator.java @@ -373,7 +373,7 @@ void validateBottomOffsetForChunk(List elements) { void validateRightOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { - if (!elementsHaveEqualLeftRightOffset(false, element)) { + if (!elementsHaveEqualLeftRightOffset(false, rootElement, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same right offset as element '%s'", rootElementReadableName, readableName), element); } } @@ -381,7 +381,7 @@ void validateRightOffsetForElements(WebElement element, String readableName) { void validateLeftOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { - if (!elementsHaveEqualLeftRightOffset(true, element)) { + if (!elementsHaveEqualLeftRightOffset(true, rootElement, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same left offset as element '%s'", rootElementReadableName, readableName), element); } } @@ -389,7 +389,7 @@ void validateLeftOffsetForElements(WebElement element, String readableName) { void validateTopOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { - if (!elementsHaveEqualTopBottomOffset(true, element)) { + if (!elementsHaveEqualTopBottomOffset(true, rootElement, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same top offset as element '%s'", rootElementReadableName, readableName), element); } } @@ -397,7 +397,7 @@ void validateTopOffsetForElements(WebElement element, String readableName) { void validateBottomOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { - if (!elementsHaveEqualTopBottomOffset(false, element)) { + if (!elementsHaveEqualTopBottomOffset(false, rootElement, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same bottom offset as element '%s'", rootElementReadableName, readableName), element); } } @@ -893,17 +893,6 @@ private boolean elementsAreOverlapped(WebElement rootElement, WebElement element || elementsAreOverlappedOnBorder(rootElement, elementOverlapWith); } - private boolean elementsHaveEqualLeftRightOffset(boolean isLeft, WebElement elementToCompare) { - Point elLoc = elementToCompare.getLocation(); - Dimension elSize = elementToCompare.getSize(); - - if (isLeft) { - return xRoot == elLoc.getX(); - } else { - return (pageWidth - xRoot + widthRoot) == (pageWidth - elLoc.getX() + elSize.getWidth()); - } - } - private boolean elementsHaveEqualLeftRightOffset(boolean isLeft, WebElement element, WebElement elementToCompare) { Point elLoc = elementToCompare.getLocation(); Dimension elSize = elementToCompare.getSize(); @@ -917,18 +906,6 @@ private boolean elementsHaveEqualLeftRightOffset(boolean isLeft, WebElement elem } } - - private boolean elementsHaveEqualTopBottomOffset(boolean isTop, WebElement elementToCompare) { - Point elLoc = elementToCompare.getLocation(); - Dimension elSize = elementToCompare.getSize(); - - if (isTop) { - return yRoot == elLoc.getY(); - } else { - return (pageHeight - yRoot + heightRoot) == (pageHeight - elLoc.getY() + elSize.getHeight()); - } - } - private boolean elementsHaveEqualTopBottomOffset(boolean isTop, WebElement element, WebElement elementToCompare) { Point elLoc = elementToCompare.getLocation(); Dimension elSize = elementToCompare.getSize(); From 6a5edb2a36489017edbcfb6f59e9bb43804be1f4 Mon Sep 17 00:00:00 2001 From: dzaiats Date: Mon, 26 Dec 2016 10:42:18 +0100 Subject: [PATCH 3/4] [1.4.2-minor fixes] - common fixes --- .../util/validator/ResponsiveUIValidator.java | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/src/main/java/util/validator/ResponsiveUIValidator.java b/src/main/java/util/validator/ResponsiveUIValidator.java index e8b4854..1d3b893 100644 --- a/src/main/java/util/validator/ResponsiveUIValidator.java +++ b/src/main/java/util/validator/ResponsiveUIValidator.java @@ -405,7 +405,7 @@ void validateBottomOffsetForElements(WebElement element, String readableName) { void validateNotOverlappingWithElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { - if (elementsAreOverlapped(element)) { + if (elementsAreOverlapped(rootElement, element)) { putJsonDetailsWithElement(String.format("Element '%s' is overlapped with element '%s' but should not", rootElementReadableName, readableName), element); } } @@ -413,7 +413,7 @@ void validateNotOverlappingWithElements(WebElement element, String readableName) void validateOverlappingWithElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { - if (!elementsAreOverlapped(element)) { + if (!elementsAreOverlapped(rootElement, element)) { putJsonDetailsWithElement(String.format("Element '%s' is not overlapped with element '%s' but should be", rootElementReadableName, readableName), element); } } @@ -840,7 +840,7 @@ private boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement int sqRootElement = widthRoot * heightRoot; int sqElement = elSize.width * elSize.height; - int sqCommon = 0; + int sqCommon; if (xRoot < elLoc.x && yRoot == elLoc.y) { sqCommon = (widthRoot + (elLoc.x - (xRoot + widthRoot) + elSize.width)) * (heightRoot); } else if (yRoot < elLoc.y && xRoot == elLoc.x) { @@ -856,22 +856,6 @@ private boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement return sqCommon < sqRootElement + sqElement; } - private boolean elementsAreOverlapped(WebElement elementOverlapWith) { - Point elLoc = elementOverlapWith.getLocation(); - Dimension elSize = elementOverlapWith.getSize(); - return ((xRoot >= elLoc.x && yRoot > elLoc.y && xRoot < elLoc.x + elSize.width && yRoot < elLoc.y + elSize.height) - || (xRoot + widthRoot > elLoc.x && yRoot > elLoc.y && xRoot + widthRoot < elLoc.x + elSize.width && yRoot < elLoc.y + elSize.height) - || (xRoot > elLoc.x && yRoot + heightRoot > elLoc.y && xRoot < elLoc.x + elSize.width && yRoot + heightRoot < elLoc.y + elSize.height) - || (xRoot + widthRoot > elLoc.x && yRoot + heightRoot > elLoc.y && xRoot + widthRoot < elLoc.x + elSize.width && yRoot + heightRoot < elLoc.y + elSize.height)) - - || ((elLoc.x > xRoot && elLoc.y > yRoot && elLoc.x + elSize.width < xRoot && elLoc.y + elSize.height < yRoot) - || (elLoc.x > xRoot + widthRoot && elLoc.y > yRoot && elLoc.x + elSize.width < xRoot + widthRoot && elLoc.y + elSize.height < yRoot) - || (elLoc.x > xRoot && elLoc.y > yRoot + heightRoot && elLoc.x + elSize.width < xRoot && elLoc.y + elSize.height < yRoot + heightRoot) - || (elLoc.x > xRoot + widthRoot && elLoc.y > yRoot + heightRoot && elLoc.x + elSize.width < xRoot + widthRoot && elLoc.y + elSize.height < yRoot + heightRoot)) - - || elementsAreOverlappedOnBorder(rootElement, elementOverlapWith); - } - private boolean elementsAreOverlapped(WebElement rootElement, WebElement elementOverlapWith) { Point elLoc = elementOverlapWith.getLocation(); Dimension elSize = elementOverlapWith.getSize(); From ddbb180c7d22636bc715f0aa484418fa33c2630f Mon Sep 17 00:00:00 2001 From: dzaiats Date: Mon, 26 Dec 2016 18:33:39 +0100 Subject: [PATCH 4/4] [1.4.2-minor fixes] - common fixes --- .../util/validator/ResponsiveUIValidator.java | 72 +++++++++---------- src/main/java/util/validator/UIValidator.java | 2 +- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/src/main/java/util/validator/ResponsiveUIValidator.java b/src/main/java/util/validator/ResponsiveUIValidator.java index 1d3b893..8fd50e9 100644 --- a/src/main/java/util/validator/ResponsiveUIValidator.java +++ b/src/main/java/util/validator/ResponsiveUIValidator.java @@ -177,17 +177,15 @@ public boolean validate() { if (!errorMessage.isEmpty()) { jsonResults.put(ERROR_KEY, true); jsonResults.put(DETAILS, errorMessage); - } - if (withReport && !errorMessage.isEmpty()) { - try { - screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); - img = ImageIO.read(screenshot); - } catch (Exception e) { - LOG.error("Failed to create screenshot file: " + e.getMessage()); - } + if (withReport) { + try { + screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); + img = ImageIO.read(screenshot); + } catch (Exception e) { + LOG.error("Failed to create screenshot file: " + e.getMessage()); + } - if (!errorMessage.isEmpty()) { JSONObject rootDetails = new JSONObject(); rootDetails.put(X, xRoot); rootDetails.put(Y, yRoot); @@ -199,32 +197,32 @@ public boolean validate() { jsonResults.put(TIME_EXECUTION, String.valueOf(System.currentTimeMillis() - startTime) + " milliseconds"); jsonResults.put(ELEMENT_NAME, rootElementReadableName); jsonResults.put(SCREENSHOT, rootElementReadableName.replace(" ", "") + "-" + screenshot.getName()); - } - long ms = System.currentTimeMillis(); - String uuid = Helper.getGeneratedStringWithLength(7); - String jsonFileName = rootElementReadableName.replace(" ", "") + "-automotion" + ms + uuid + ".json"; - try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(TARGET_AUTOMOTION_JSON + jsonFileName), StandardCharsets.UTF_8))) { - writer.write(jsonResults.toJSONString()); - } catch (IOException ex) { - LOG.error("Cannot create json report: " + ex.getMessage()); - } - jsonFiles.add(jsonFileName); - try { - File file = new File(TARGET_AUTOMOTION_JSON + rootElementReadableName.replace(" ", "") + "-automotion" + ms + uuid + ".json"); - if (file.getParentFile().mkdirs()) { - if (file.createNewFile()) { - BufferedWriter writer = new BufferedWriter(new FileWriter(file)); - writer.write(jsonResults.toJSONString()); - writer.close(); + long ms = System.currentTimeMillis(); + String uuid = Helper.getGeneratedStringWithLength(7); + String jsonFileName = rootElementReadableName.replace(" ", "") + "-automotion" + ms + uuid + ".json"; + try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(TARGET_AUTOMOTION_JSON + jsonFileName), StandardCharsets.UTF_8))) { + writer.write(jsonResults.toJSONString()); + } catch (IOException ex) { + LOG.error("Cannot create json report: " + ex.getMessage()); + } + jsonFiles.add(jsonFileName); + try { + File file = new File(TARGET_AUTOMOTION_JSON + rootElementReadableName.replace(" ", "") + "-automotion" + ms + uuid + ".json"); + if (file.getParentFile().mkdirs()) { + if (file.createNewFile()) { + BufferedWriter writer = new BufferedWriter(new FileWriter(file)); + writer.write(jsonResults.toJSONString()); + writer.close(); + } } + } catch (IOException e) { + e.printStackTrace(); } - } catch (IOException e) { - e.printStackTrace(); - } - if ((boolean) jsonResults.get(ERROR_KEY)) { - drawScreenshot(); + if ((boolean) jsonResults.get(ERROR_KEY)) { + drawScreenshot(); + } } } } else { @@ -320,7 +318,7 @@ void validateGridAlignment(int columns, int rows) { int mapSize = map.size(); if (rows > 0) { if (mapSize != rows) { - putJsonDetailsWithoutElement("Elements in a grid are not aligned properly. Looks like grid has wrong amount of rows. Expected is " + rows + ". Actual is " + mapSize + ""); + putJsonDetailsWithoutElement(String.format("Elements in a grid are not aligned properly. Looks like grid has wrong amount of rows. Expected is %d. Actual is %d", rows, mapSize)); } } @@ -330,7 +328,7 @@ void validateGridAlignment(int columns, int rows) { if (rowCount <= mapSize) { int actualInARow = entry.getValue().intValue(); if (actualInARow != columns) { - putJsonDetailsWithoutElement("Elements in a grid are not aligned properly in row #" + rowCount + ". Expected " + columns + " elements in a row. Actually it's " + actualInARow + ""); + putJsonDetailsWithoutElement(String.format("Elements in a grid are not aligned properly in row #%d. Expected %d elements in a row. Actually it's %d", rowCount, columns, actualInARow)); } rowCount++; } @@ -342,7 +340,7 @@ void validateGridAlignment(int columns, int rows) { void validateRightOffsetForChunk(List elements) { for (int i = 0; i < elements.size() - 1; i++) { if (!elementsHaveEqualLeftRightOffset(false, elements.get(i), elements.get(i + 1))) { - putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same right offset as element #" + (i + 2) + "", elements.get(i + 1)); + putJsonDetailsWithElement(String.format("Element #%d has not the same right offset as element #%d", i + 1, i + 2), elements.get(i + 1)); } } } @@ -350,7 +348,7 @@ void validateRightOffsetForChunk(List elements) { void validateLeftOffsetForChunk(List elements) { for (int i = 0; i < elements.size() - 1; i++) { if (!elementsHaveEqualLeftRightOffset(true, elements.get(i), elements.get(i + 1))) { - putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same left offset as element #" + (i + 2) + "", elements.get(i + 1)); + putJsonDetailsWithElement(String.format("Element #%d has not the same left offset as element #%d", i + 1, i + 2), elements.get(i + 1)); } } } @@ -358,7 +356,7 @@ void validateLeftOffsetForChunk(List elements) { void validateTopOffsetForChunk(List elements) { for (int i = 0; i < elements.size() - 1; i++) { if (!elementsHaveEqualTopBottomOffset(true, elements.get(i), elements.get(i + 1))) { - putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same top offset as element #" + (i + 2) + "", elements.get(i + 1)); + putJsonDetailsWithElement(String.format("Element #%d has not the same top offset as element #%d", i + 1, i + 2), elements.get(i + 1)); } } } @@ -366,7 +364,7 @@ void validateTopOffsetForChunk(List elements) { void validateBottomOffsetForChunk(List elements) { for (int i = 0; i < elements.size() - 1; i++) { if (!elementsHaveEqualTopBottomOffset(false, elements.get(i), elements.get(i + 1))) { - putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same bottom offset as element #" + (i + 2) + "", elements.get(i + 1)); + putJsonDetailsWithElement(String.format("Element #%d has not the same bottom offset as element #%d", i + 1, i + 2), elements.get(i + 1)); } } } diff --git a/src/main/java/util/validator/UIValidator.java b/src/main/java/util/validator/UIValidator.java index c3d0294..70fd516 100644 --- a/src/main/java/util/validator/UIValidator.java +++ b/src/main/java/util/validator/UIValidator.java @@ -48,7 +48,7 @@ public UIValidator withLeftElement(WebElement element) { } /** - * // Verify that element which located left to is correct with specified margins + * Verify that element which located left to is correct with specified margins * * @param element * @param minMargin