From e6252dff17a3d0a8d4404c2d48569b53b5e7d452 Mon Sep 17 00:00:00 2001 From: dzaiats Date: Wed, 7 Dec 2016 22:36:31 +0100 Subject: [PATCH] [1.4.2] - refactoring and re-sctructure of UIValidator classes. Incapsulation internal methods --- pom.xml | 2 +- src/main/java/util/driver/MobileHelper.java | 6 +- .../java/util/general/HtmlReportBuilder.java | 2 +- src/main/java/util/general/SystemHelper.java | 4 +- .../java/util/validator/ChunkValidator.java | 13 + .../java/util/validator/LanguageChecker.java | 18 +- .../validator/ResponsiveUIChunkValidator.java | 42 ++ .../util/validator/ResponsiveUIValidator.java | 485 +++--------------- src/main/java/util/validator/UIValidator.java | 298 +++++++++++ src/main/java/util/validator/Validator.java | 97 ++-- src/main/java/web/BaseWebMobileElement.java | 8 +- 11 files changed, 490 insertions(+), 485 deletions(-) create mode 100644 src/main/java/util/validator/ChunkValidator.java create mode 100644 src/main/java/util/validator/ResponsiveUIChunkValidator.java create mode 100644 src/main/java/util/validator/UIValidator.java diff --git a/pom.xml b/pom.xml index fa6ebea..aa25e13 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ net.itarray automotion - 1.4.1 + 1.4.2 Automotion Library for automation testing https://www.itarray.net diff --git a/src/main/java/util/driver/MobileHelper.java b/src/main/java/util/driver/MobileHelper.java index 7bbb402..8108593 100644 --- a/src/main/java/util/driver/MobileHelper.java +++ b/src/main/java/util/driver/MobileHelper.java @@ -86,11 +86,11 @@ private void getAdbPath(){ private static OSType getOperatingSystemType() { if (detectedOS == null) { String OS = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH); - if ((OS.indexOf("mac") >= 0) || (OS.indexOf("darwin") >= 0)) { + if ((OS.contains("mac")) || (OS.contains("darwin"))) { detectedOS = OSType.MacOS; - } else if (OS.indexOf("win") >= 0) { + } else if (OS.contains("win")) { detectedOS = OSType.Windows; - } else if (OS.indexOf("nux") >= 0) { + } else if (OS.contains("nux")) { detectedOS = OSType.Linux; } else { detectedOS = OSType.Other; diff --git a/src/main/java/util/general/HtmlReportBuilder.java b/src/main/java/util/general/HtmlReportBuilder.java index 60e595e..c3f9dad 100644 --- a/src/main/java/util/general/HtmlReportBuilder.java +++ b/src/main/java/util/general/HtmlReportBuilder.java @@ -109,7 +109,7 @@ private Html buildHtml() throws IOException, ParseException { String numE = (String) reason.get(MESSAGE); new Li(this) {{ - new NoTag(this, numE.toString()); + new NoTag(this, numE); }}; } }}; diff --git a/src/main/java/util/general/SystemHelper.java b/src/main/java/util/general/SystemHelper.java index 457a631..3049e5e 100644 --- a/src/main/java/util/general/SystemHelper.java +++ b/src/main/java/util/general/SystemHelper.java @@ -17,7 +17,7 @@ public static boolean isRetinaDisplay() { if (field != null) { field.setAccessible(true); Object scale = field.get(graphicsDevice); - if (scale instanceof Integer && ((Integer) scale).intValue() == 2) { + if (scale instanceof Integer && (Integer) scale == 2) { isRetina = true; } } @@ -60,6 +60,6 @@ public static String hexStringToARGB(String hexARGB) throws IllegalArgumentExcep public static boolean isAutomotionFolderExists(){ File file = new File(TARGET_AUTOMOTION_JSON); - return file != null && file.exists() && file.isDirectory() && file.list().length > 0; + return file.exists() && file.isDirectory() && file.list() != null && file.list().length > 0; } } diff --git a/src/main/java/util/validator/ChunkValidator.java b/src/main/java/util/validator/ChunkValidator.java new file mode 100644 index 0000000..a3aacd7 --- /dev/null +++ b/src/main/java/util/validator/ChunkValidator.java @@ -0,0 +1,13 @@ +package util.validator; + +public interface ChunkValidator { + + ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize); + + ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize, int verticalGridSize); + + ResponsiveUIChunkValidator areNotOverlappedWithEachOther(); + + ResponsiveUIChunkValidator withSameSize(); + +} diff --git a/src/main/java/util/validator/LanguageChecker.java b/src/main/java/util/validator/LanguageChecker.java index 50e136f..91192f8 100644 --- a/src/main/java/util/validator/LanguageChecker.java +++ b/src/main/java/util/validator/LanguageChecker.java @@ -66,14 +66,16 @@ public static boolean isCorrectLanguageOnThePage(WebDriver driver, String lang) if (bodyTextLength >= (i + textBlockLength)) { tempString = bodyText.substring(i, i + textBlockLength); try { - String detectedLanguage = getRecognisedLanguage(tempString).get().getLanguage(); - - if (!detectedLanguage.toLowerCase().equals(lang.toLowerCase())) { - LOG.info("\n!!! - Piece of text without translation: \n" + tempString + "\nExpected language is \"" + lang + "\"\n"); - LOG.info("\n!!! Current URL is " + driver.getCurrentUrl() + "\n- !!!"); - LOG.info(String.format("\n!!! Characters are between %s and %s from %s full amount of characters \n", i, i + textBlockLength, bodyTextLength)); - isCorrectLang = false; - break; + if (getRecognisedLanguage(tempString).isPresent()) { + String detectedLanguage = getRecognisedLanguage(tempString).get().getLanguage(); + + if (!detectedLanguage.toLowerCase().equals(lang.toLowerCase())) { + LOG.info("\n!!! - Piece of text without translation: \n" + tempString + "\nExpected language is \"" + lang + "\"\n"); + LOG.info("\n!!! Current URL is " + driver.getCurrentUrl() + "\n- !!!"); + LOG.info(String.format("\n!!! Characters are between %s and %s from %s full amount of characters \n", i, i + textBlockLength, bodyTextLength)); + isCorrectLang = false; + break; + } } } catch (Exception e) { LOG.info("\n!!! - Impossible to recognise the language of this piece of text: \n" + tempString + "\nExpected language is \"" + lang + "\"\n"); diff --git a/src/main/java/util/validator/ResponsiveUIChunkValidator.java b/src/main/java/util/validator/ResponsiveUIChunkValidator.java new file mode 100644 index 0000000..453b678 --- /dev/null +++ b/src/main/java/util/validator/ResponsiveUIChunkValidator.java @@ -0,0 +1,42 @@ +package util.validator; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +import java.util.List; + +public class ResponsiveUIChunkValidator extends ResponsiveUIValidator implements ChunkValidator { + + ResponsiveUIChunkValidator(WebDriver driver, List elements) { + super(driver); + rootElements = elements; + pageWidth = driver.manage().window().getSize().getWidth(); + pageHeight = driver.manage().window().getSize().getHeight(); + rootElement = rootElements.get(0); + startTime = System.currentTimeMillis(); + } + + @Override + public ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize) { + validateGridAlignment(horizontalGridSize, 0); + return this; + } + + @Override + public ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize, int verticalGridSize) { + validateGridAlignment(horizontalGridSize, verticalGridSize); + return this; + } + + @Override + public ResponsiveUIChunkValidator areNotOverlappedWithEachOther() { + validateElementsAreNotOverlapped(rootElements); + return this; + } + + @Override + public ResponsiveUIChunkValidator withSameSize() { + validateSameSize(rootElements); + return this; + } +} diff --git a/src/main/java/util/validator/ResponsiveUIValidator.java b/src/main/java/util/validator/ResponsiveUIValidator.java index 7f962b8..022bae0 100644 --- a/src/main/java/util/validator/ResponsiveUIValidator.java +++ b/src/main/java/util/validator/ResponsiveUIValidator.java @@ -1,14 +1,14 @@ package util.validator; -import http.helpers.TextFinder; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; -import org.openqa.selenium.Dimension; -import org.openqa.selenium.*; -import org.openqa.selenium.Point; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; import util.driver.PageValidator; import util.general.HtmlReportBuilder; import util.general.SystemHelper; @@ -29,40 +29,40 @@ import static util.validator.Constants.*; import static util.validator.ResponsiveUIValidator.Units.PX; -public class ResponsiveUIValidator implements Validator { +public class ResponsiveUIValidator { + static final int MIN_OFFSET = -10000; private final static Logger LOG = Logger.getLogger(ResponsiveUIValidator.class); - private static final int MIN_OFFSET = -10000; + protected static WebDriver driver; + static WebElement rootElement; + static long startTime; private static boolean withReport = false; - private static long startTime; private static String scenarioName = "Default"; private static Color rootColor = Color.RED; private static Color highlightedElementsColor = Color.MAGENTA; private static Color linesColor = Color.ORANGE; - private WebDriver driver; - private String rootElementReadableName = "Root Element"; - private WebElement rootElement; - private List rootElements; - private File screenshot; - private BufferedImage img; - private Graphics2D g; + private static File screenshot; + private static BufferedImage img; + private static Graphics2D g; + String rootElementReadableName = "Root Element"; + List rootElements; + boolean drawLeftOffsetLine = false; + boolean drawRightOffsetLine = false; + boolean drawTopOffsetLine = false; + boolean drawBottomOffsetLine = false; + ResponsiveUIValidator.Units units = PX; + int xRoot; + int yRoot; + int widthRoot; + int heightRoot; + int pageWidth; + int pageHeight; + int rootElementRightOffset; + int rootElementBottomOffset; private JSONArray errorMessage; - private int xRoot; - private int yRoot; - private int widthRoot; - private int heightRoot; - private int pageWidth; - private int pageHeight; - private int rootElementRightOffset; - private int rootElementBottomOffset; - private boolean drawLeftOffsetLine = false; - private boolean drawRightOffsetLine = false; - private boolean drawTopOffsetLine = false; - private boolean drawBottomOffsetLine = false; - private Units units = PX; public ResponsiveUIValidator(WebDriver driver) { - this.driver = driver; + ResponsiveUIValidator.driver = driver; errorMessage = new JSONArray(); } @@ -78,351 +78,33 @@ public void setLinesColor(Color color) { linesColor = color; } - @Override public ResponsiveUIValidator init() { return new ResponsiveUIValidator(driver); } - @Override public ResponsiveUIValidator init(String scenarioName) { ResponsiveUIValidator.scenarioName = scenarioName; return new ResponsiveUIValidator(driver); } - @Override - public ResponsiveUIValidator findElement(WebElement element, String readableNameOfElement) { - rootElement = element; - rootElementReadableName = readableNameOfElement; - xRoot = rootElement.getLocation().getX(); - yRoot = rootElement.getLocation().getY(); - widthRoot = rootElement.getSize().getWidth(); - heightRoot = rootElement.getSize().getHeight(); - pageWidth = driver.manage().window().getSize().getWidth(); - pageHeight = driver.manage().window().getSize().getHeight(); - rootElementRightOffset = pageWidth - xRoot + widthRoot; - rootElementBottomOffset = pageHeight - yRoot + heightRoot; - startTime = System.currentTimeMillis(); - return this; - } - - @Override - public ResponsiveUIValidator findElements(List elements) { - rootElements = elements; - pageWidth = driver.manage().window().getSize().getWidth(); - pageHeight = driver.manage().window().getSize().getHeight(); - rootElement = rootElements.get(0); - startTime = System.currentTimeMillis(); - return this; - } - - @Override - public ResponsiveUIValidator changeMetricsUnitsTo(Units units) { - this.units = units; - return this; + public UIValidator findElement(WebElement element, String readableNameOfElement) { + return new UIValidator(driver, element, readableNameOfElement); } - @Override - public ResponsiveUIValidator withLeftElement(WebElement element) { - validateLeftElement(element); - - return this; - } - - @Override - public ResponsiveUIValidator withLeftElement(WebElement element, int minMargin, int maxMargin) { - validateLeftElement(element, getInt(minMargin, true), getInt(maxMargin, true)); - - return this; - } - - @Override - public ResponsiveUIValidator withRightElement(WebElement element) { - validateRightElement(element); - return this; - } - - @Override - public ResponsiveUIValidator withRightElement(WebElement element, int minMargin, int maxMargin) { - validateRightElement(element, getInt(minMargin, true), getInt(maxMargin, true)); - return this; + public ResponsiveUIChunkValidator findElements(java.util.List elements) { + return new ResponsiveUIChunkValidator(driver, elements); } - @Override - public ResponsiveUIValidator withTopElement(WebElement element) { - validateAboveElement(element); - return this; - } - - @Override - public ResponsiveUIValidator withTopElement(WebElement element, int minMargin, int maxMargin) { - validateAboveElement(element, getInt(minMargin, false), getInt(maxMargin, false)); - return this; - } - - @Override - public ResponsiveUIValidator withBottomElement(WebElement element) { - validateBelowElement(element); - return this; - } - - @Override - public ResponsiveUIValidator withBottomElement(WebElement element, int minMargin, int maxMargin) { - validateBelowElement(element, getInt(minMargin, false), getInt(maxMargin, false)); - return this; - } - - @Override public ResponsiveUIValidator insideOf(WebElement element, String readableContainerName) { validateInsideOfContainer(element, readableContainerName); return this; } - @Override - public ResponsiveUIValidator notOverlapWith(WebElement element, String readableName) { - validateNotOverlappingWithElements(element, readableName); - return this; - } - - @Override - public ResponsiveUIValidator overlapWith(WebElement element, String readableName) { - validateOverlappingWithElements(element, readableName); - return this; - } - - @Override - public ResponsiveUIValidator notOverlapWith(List elements) { - for (WebElement element : elements) { - validateNotOverlappingWithElements(element, "Element with class name: " + element.getAttribute("class")); - } - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetLeftAs(WebElement element, String readableName) { - validateLeftOffsetForElements(element, readableName); - drawLeftOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetLeftAs(List elements) { - for (WebElement element : elements) { - validateLeftOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); - } - drawLeftOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetRightAs(WebElement element, String readableName) { - validateRightOffsetForElements(element, readableName); - drawRightOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetRightAs(List elements) { - for (WebElement element : elements) { - validateRightOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); - } - drawRightOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetTopAs(WebElement element, String readableName) { - validateTopOffsetForElements(element, readableName); - drawTopOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetTopAs(List elements) { - for (WebElement element : elements) { - validateTopOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); - } - drawTopOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetBottomAs(WebElement element, String readableName) { - validateBottomOffsetForElements(element, readableName); - drawBottomOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameOffsetBottomAs(List elements) { - for (WebElement element : elements) { - validateBottomOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); - } - drawBottomOffsetLine = true; - return this; - } - - @Override - public ResponsiveUIValidator sameWidthAs(WebElement element, String readableName) { - validateSameWidth(element, readableName); - return this; - } - - @Override - public ResponsiveUIValidator sameWidthAs(List elements) { - for (WebElement element : elements) { - validateSameWidth(element, "Element with class name: " + element.getAttribute("class")); - } - return this; - } - - @Override - public ResponsiveUIValidator minWidth(int width) { - validateMinWidth(getInt(width, true)); - return this; - } - - @Override - public ResponsiveUIValidator maxWidth(int width) { - validateMaxWidth(getInt(width, true)); - return this; - } - - @Override - public ResponsiveUIValidator widthBetween(int min, int max) { - validateMinWidth(getInt(min, true)); - validateMaxWidth(getInt(max, true)); - return this; - } - - @Override - public ResponsiveUIValidator sameHeightAs(WebElement element, String readableName) { - validateSameHeight(element, readableName); - return this; - } - - @Override - public ResponsiveUIValidator sameHeightAs(List elements) { - for (WebElement element : elements) { - validateSameHeight(element, "Element with class name: " + element.getAttribute("class")); - } - return this; - } - - @Override - public ResponsiveUIValidator minHeight(int height) { - validateMinHeight(getInt(height, false)); - return this; - } - - @Override - public ResponsiveUIValidator maxHeight(int height) { - validateMaxHeight(getInt(height, false)); - return this; - } - - @Override - public ResponsiveUIValidator sameSizeAs(WebElement element, String readableName) { - validateSameSize(element, readableName); - return this; - } - - @Override - public ResponsiveUIValidator sameSizeAs(List elements) { - for (WebElement element : elements) { - validateSameSize(element, "Element with class name: " + element.getAttribute("class")); - } - return this; - } - - @Override - public ResponsiveUIValidator heightBetween(int min, int max) { - validateMinHeight(getInt(min, false)); - validateMaxHeight(getInt(max, false)); - return this; - } - - @Override - public ResponsiveUIValidator minOffset(int top, int right, int bottom, int left) { - if (getInt(top, false) > MIN_OFFSET && getInt(right, true) > MIN_OFFSET && getInt(bottom, false) > MIN_OFFSET && getInt(left, true) > MIN_OFFSET) { - validateMinOffset(getInt(top, false), getInt(right, true), getInt(bottom, false), getInt(left, true)); - } - return this; - } - - @Override - public ResponsiveUIValidator maxOffset(int top, int right, int bottom, int left) { - if (getInt(top, false) > MIN_OFFSET && getInt(right, true) > MIN_OFFSET && getInt(bottom, false) > MIN_OFFSET && getInt(left, true) > MIN_OFFSET) { - validateMaxOffset(getInt(top, false), getInt(right, true), getInt(bottom, false), getInt(left, true)); - } - return this; - } - - @Override - public ResponsiveUIValidator withCssValue(String cssProperty, String... args) { - String cssValue = rootElement.getCssValue(cssProperty); - - if (!cssValue.equals("")) { - for (String val : args) { - val = !val.startsWith("#") ? val : SystemHelper.hexStringToARGB(val); - if (!TextFinder.textIsFound(val, cssValue)) { - putJsonDetailsWithoutElement(String.format("Expected value of '%s' is '%s'. Actual value is '%s'", cssProperty, val, cssValue)); - } - } - } else { - putJsonDetailsWithoutElement(String.format("Element '%s' does not have css property '%s'", rootElementReadableName, cssProperty)); - } - return this; - } - - @Override - public ResponsiveUIValidator withoutCssValue(String cssProperty, String... args) { - String cssValue = rootElement.getCssValue(cssProperty); - - if (!cssValue.equals("")) { - for (String val : args) { - val = !val.startsWith("#") ? val : SystemHelper.hexStringToARGB(val); - if (TextFinder.textIsFound(val, cssValue)) { - putJsonDetailsWithoutElement(String.format("CSS property '%s' should not contain value '%s'. Actual value is '%s'", cssProperty, val, cssValue)); - } - } - } else { - putJsonDetailsWithoutElement(String.format("Element '%s' does not have css property '%s'", rootElementReadableName, cssProperty)); - } - return this; - } - - @Override - public ResponsiveUIValidator alignedAsGrid(int horizontalGridSize) { - validateGridAlignment(horizontalGridSize, 0); - return this; - } - - @Override - public ResponsiveUIValidator alignedAsGrid(int horizontalGridSize, int verticalGridSize) { - validateGridAlignment(horizontalGridSize, verticalGridSize); - return this; - } - - @Override - public ResponsiveUIValidator areNotOverlappedWithEachOther() { - validateElementsAreNotOverlapped(rootElements); - return this; - } - - @Override - public ResponsiveUIValidator withSameSize() { - validateSameSize(rootElements); - return this; - } - - - @Override public ResponsiveUIValidator drawMap() { withReport = true; return this; } - @Override public boolean validate() { JSONObject jsonResults = new JSONObject(); jsonResults.put(ERROR_KEY, false); @@ -486,7 +168,6 @@ public boolean validate() { return !((boolean) jsonResults.get(ERROR_KEY)); } - @Override public void generateReport() { if (withReport && isAutomotionFolderExists()) { try { @@ -497,7 +178,6 @@ public void generateReport() { } } - @Override public void generateReport(String name) { if (withReport && isAutomotionFolderExists()) { try { @@ -508,7 +188,7 @@ public void generateReport(String name) { } } - private void drawScreenshot() { + void drawScreenshot() { g = img.createGraphics(); drawRoot(rootColor); @@ -543,7 +223,7 @@ private void drawScreenshot() { } } - private void validateElementsAreNotOverlapped(List rootElements) { + void validateElementsAreNotOverlapped(List rootElements) { for (WebElement el1 : rootElements) { for (WebElement el2 : rootElements) { if (!el1.equals(el2)) { @@ -556,7 +236,7 @@ private void validateElementsAreNotOverlapped(List rootElements) { } } - private void validateGridAlignment(int columns, int rows) { + void validateGridAlignment(int columns, int rows) { if (rootElements != null) { ConcurrentHashMap map = new ConcurrentHashMap<>(); for (WebElement el : rootElements) { @@ -588,7 +268,7 @@ private void validateGridAlignment(int columns, int rows) { } } - private void validateRightOffsetForElements(WebElement element, String readableName) { + void validateRightOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { if (!elementsHasEqualLeftRightOffset(false, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same right offset as element '%s'", rootElementReadableName, readableName), element); @@ -596,7 +276,7 @@ private void validateRightOffsetForElements(WebElement element, String readableN } } - private void validateLeftOffsetForElements(WebElement element, String readableName) { + void validateLeftOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { if (!elementsHasEqualLeftRightOffset(true, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same left offset as element '%s'", rootElementReadableName, readableName), element); @@ -604,7 +284,7 @@ private void validateLeftOffsetForElements(WebElement element, String readableNa } } - private void validateTopOffsetForElements(WebElement element, String readableName) { + void validateTopOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { if (!elementsHasEqualTopBottomOffset(true, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same top offset as element '%s'", rootElementReadableName, readableName), element); @@ -612,7 +292,7 @@ private void validateTopOffsetForElements(WebElement element, String readableNam } } - private void validateBottomOffsetForElements(WebElement element, String readableName) { + void validateBottomOffsetForElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { if (!elementsHasEqualTopBottomOffset(false, element)) { putJsonDetailsWithElement(String.format("Element '%s' has not the same bottom offset as element '%s'", rootElementReadableName, readableName), element); @@ -620,7 +300,7 @@ private void validateBottomOffsetForElements(WebElement element, String readable } } - private void validateNotOverlappingWithElements(WebElement element, String readableName) { + void validateNotOverlappingWithElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { if (elementsAreOverlapped(element)) { putJsonDetailsWithElement(String.format("Element '%s' is overlapped with element '%s' but should not", rootElementReadableName, readableName), element); @@ -628,7 +308,7 @@ private void validateNotOverlappingWithElements(WebElement element, String reada } } - private void validateOverlappingWithElements(WebElement element, String readableName) { + void validateOverlappingWithElements(WebElement element, String readableName) { if (!element.equals(rootElement)) { if (!elementsAreOverlapped(element)) { putJsonDetailsWithElement(String.format("Element '%s' is not overlapped with element '%s' but should be", rootElementReadableName, readableName), element); @@ -636,7 +316,7 @@ private void validateOverlappingWithElements(WebElement element, String readable } } - private void validateMaxOffset(int top, int right, int bottom, int left) { + void validateMaxOffset(int top, int right, int bottom, int left) { if (xRoot > left) { putJsonDetailsWithoutElement(String.format("Expected max left offset of element '%s' is: %spx. Actual left offset is: %spx", rootElementReadableName, left, xRoot)); } @@ -651,7 +331,7 @@ private void validateMaxOffset(int top, int right, int bottom, int left) { } } - private void validateMinOffset(int top, int right, int bottom, int left) { + void validateMinOffset(int top, int right, int bottom, int left) { if (xRoot < left) { putJsonDetailsWithoutElement(String.format("Expected min left offset of element '%s' is: %spx. Actual left offset is: %spx", rootElementReadableName, left, xRoot)); } @@ -666,19 +346,19 @@ private void validateMinOffset(int top, int right, int bottom, int left) { } } - private void validateMaxHeight(int height) { + void validateMaxHeight(int height) { if (heightRoot > height) { putJsonDetailsWithoutElement(String.format("Expected max height of element '%s' is: %spx. Actual height is: %spx", rootElementReadableName, height, heightRoot)); } } - private void validateMinHeight(int height) { + void validateMinHeight(int height) { if (heightRoot < height) { putJsonDetailsWithoutElement(String.format("Expected min height of element '%s' is: %spx. Actual height is: %spx", rootElementReadableName, height, heightRoot)); } } - private void validateSameHeight(WebElement element, String readableName) { + void validateSameHeight(WebElement element, String readableName) { if (!element.equals(rootElement)) { int h = element.getSize().getHeight(); if (h != heightRoot) { @@ -687,19 +367,19 @@ private void validateSameHeight(WebElement element, String readableName) { } } - private void validateMaxWidth(int width) { + void validateMaxWidth(int width) { if (widthRoot > width) { putJsonDetailsWithoutElement(String.format("Expected max width of element '%s' is: %spx. Actual width is: %spx", rootElementReadableName, width, widthRoot)); } } - private void validateMinWidth(int width) { + void validateMinWidth(int width) { if (widthRoot < width) { putJsonDetailsWithoutElement(String.format("Expected min width of element '%s' is: %spx. Actual width is: %spx", rootElementReadableName, width, widthRoot)); } } - private void validateSameWidth(WebElement element, String readableName) { + void validateSameWidth(WebElement element, String readableName) { if (!element.equals(rootElement)) { int w = element.getSize().getWidth(); if (w != widthRoot) { @@ -708,7 +388,7 @@ private void validateSameWidth(WebElement element, String readableName) { } } - private void validateSameSize(WebElement element, String readableName) { + void validateSameSize(WebElement element, String readableName) { if (!element.equals(rootElement)) { int h = element.getSize().getHeight(); int w = element.getSize().getWidth(); @@ -718,20 +398,20 @@ private void validateSameSize(WebElement element, String readableName) { } } - private void validateSameSize(List elements) { + void validateSameSize(List elements) { for (int i = 0; i < elements.size() - 1; i++) { int h1 = elements.get(i).getSize().getHeight(); int w1 = elements.get(i).getSize().getWidth(); int h2 = elements.get(i + 1).getSize().getHeight(); int w2 = elements.get(i + 1).getSize().getWidth(); if (h1 != h2 || w1 != w2) { - putJsonDetailsWithElement("Element #" + i + " has different size in a grid.", elements.get(i)); - putJsonDetailsWithElement("Element #" + (i + 1) + " has different size in a grid.", elements.get(i + 1)); + putJsonDetailsWithElement("Element #" + i + " has different size.", elements.get(i)); + putJsonDetailsWithElement("Element #" + (i + 1) + " has different size.", elements.get(i + 1)); } } } - 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; @@ -753,7 +433,7 @@ private void validateInsideOfContainer(WebElement element, String readableContai } } - private void validateBelowElement(WebElement element, int minMargin, int maxMargin) { + void validateBelowElement(WebElement element, int minMargin, int maxMargin) { int yBelowElement = element.getLocation().getY(); int marginBetweenRoot = yBelowElement - yRoot + heightRoot; if (marginBetweenRoot < minMargin || marginBetweenRoot > maxMargin) { @@ -761,7 +441,7 @@ private void validateBelowElement(WebElement element, int minMargin, int maxMarg } } - private void validateBelowElement(WebElement element) { + void validateBelowElement(WebElement element) { List elements = new ArrayList<>(); elements.add(rootElement); elements.add(element); @@ -771,7 +451,7 @@ private void validateBelowElement(WebElement element) { } } - private void validateAboveElement(WebElement element, int minMargin, int maxMargin) { + void validateAboveElement(WebElement element, int minMargin, int maxMargin) { int yAboveElement = element.getLocation().getY(); int heightAboveElement = element.getSize().getHeight(); int marginBetweenRoot = yRoot - yAboveElement + heightAboveElement; @@ -780,7 +460,7 @@ private void validateAboveElement(WebElement element, int minMargin, int maxMarg } } - private void validateAboveElement(WebElement element) { + void validateAboveElement(WebElement element) { List elements = new ArrayList<>(); elements.add(element); elements.add(rootElement); @@ -790,7 +470,7 @@ private void validateAboveElement(WebElement element) { } } - private void validateRightElement(WebElement element, int minMargin, int maxMargin) { + void validateRightElement(WebElement element, int minMargin, int maxMargin) { int xRightElement = element.getLocation().getX(); int marginBetweenRoot = xRightElement - xRoot + widthRoot; if (marginBetweenRoot < minMargin || marginBetweenRoot > maxMargin) { @@ -798,7 +478,7 @@ private void validateRightElement(WebElement element, int minMargin, int maxMarg } } - private void validateRightElement(WebElement element) { + void validateRightElement(WebElement element) { List elements = new ArrayList<>(); elements.add(rootElement); elements.add(element); @@ -808,7 +488,7 @@ private void validateRightElement(WebElement element) { } } - private void validateLeftElement(WebElement leftElement, int minMargin, int maxMargin) { + void validateLeftElement(WebElement leftElement, int minMargin, int maxMargin) { int xLeftElement = leftElement.getLocation().getX(); int widthLeftElement = leftElement.getSize().getWidth(); int marginBetweenRoot = xRoot - xLeftElement + widthLeftElement; @@ -817,7 +497,7 @@ private void validateLeftElement(WebElement leftElement, int minMargin, int maxM } } - private void validateLeftElement(WebElement leftElement) { + void validateLeftElement(WebElement leftElement) { List elements = new ArrayList<>(); elements.add(leftElement); elements.add(rootElement); @@ -827,9 +507,9 @@ private void validateLeftElement(WebElement leftElement) { } } - private boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement elementOverlapWith) { - Point elLoc = elementOverlapWith.getLocation(); - Dimension elSize = elementOverlapWith.getSize(); + boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement elementOverlapWith) { + org.openqa.selenium.Point elLoc = elementOverlapWith.getLocation(); + org.openqa.selenium.Dimension elSize = elementOverlapWith.getSize(); int xRoot = rootElement.getLocation().x; int yRoot = rootElement.getLocation().y; int widthRoot = rootElement.getSize().width; @@ -848,9 +528,9 @@ private boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement return sqCommon - sqElement >= sqRootElement; } - private boolean elementsAreOverlapped(WebElement elementOverlapWith) { - Point elLoc = elementOverlapWith.getLocation(); - Dimension elSize = elementOverlapWith.getSize(); + boolean elementsAreOverlapped(WebElement elementOverlapWith) { + org.openqa.selenium.Point elLoc = elementOverlapWith.getLocation(); + org.openqa.selenium.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) @@ -864,9 +544,9 @@ private boolean elementsAreOverlapped(WebElement elementOverlapWith) { || elementsAreOverlappedOnBorder(rootElement, elementOverlapWith); } - private boolean elementsAreOverlapped(WebElement rootElement, WebElement elementOverlapWith) { - Point elLoc = elementOverlapWith.getLocation(); - Dimension elSize = elementOverlapWith.getSize(); + boolean elementsAreOverlapped(WebElement rootElement, WebElement elementOverlapWith) { + org.openqa.selenium.Point elLoc = elementOverlapWith.getLocation(); + org.openqa.selenium.Dimension elSize = elementOverlapWith.getSize(); int xRoot = rootElement.getLocation().x; int yRoot = rootElement.getLocation().y; int widthRoot = rootElement.getSize().width; @@ -885,9 +565,9 @@ private boolean elementsAreOverlapped(WebElement rootElement, WebElement element || elementsAreOverlappedOnBorder(rootElement, elementOverlapWith); } - private boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement elementToCompare) { - Point elLoc = elementToCompare.getLocation(); - Dimension elSize = elementToCompare.getSize(); + boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement elementToCompare) { + org.openqa.selenium.Point elLoc = elementToCompare.getLocation(); + org.openqa.selenium.Dimension elSize = elementToCompare.getSize(); if (isLeft) { return xRoot == elLoc.getX(); @@ -896,9 +576,9 @@ private boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement eleme } } - private boolean elementsHasEqualTopBottomOffset(boolean isTop, WebElement elementToCompare) { - Point elLoc = elementToCompare.getLocation(); - Dimension elSize = elementToCompare.getSize(); + boolean elementsHasEqualTopBottomOffset(boolean isTop, WebElement elementToCompare) { + org.openqa.selenium.Point elLoc = elementToCompare.getLocation(); + org.openqa.selenium.Dimension elSize = elementToCompare.getSize(); if (isTop) { return yRoot == elLoc.getY(); @@ -907,7 +587,7 @@ private boolean elementsHasEqualTopBottomOffset(boolean isTop, WebElement elemen } } - private void drawRoot(Color color) { + void drawRoot(Color color) { g.setColor(color); g.setStroke(new BasicStroke(2)); if (SystemHelper.isRetinaDisplay() && isChrome()) { @@ -949,7 +629,7 @@ private void drawRoot(Color color) { } } - private void putJsonDetailsWithoutElement(String message) { + void putJsonDetailsWithoutElement(String message) { JSONObject details = new JSONObject(); JSONObject mes = new JSONObject(); mes.put(MESSAGE, message); @@ -957,7 +637,7 @@ private void putJsonDetailsWithoutElement(String message) { errorMessage.add(details); } - private void putJsonDetailsWithElement(String message, WebElement element) { + void putJsonDetailsWithElement(String message, WebElement element) { float xContainer = element.getLocation().getX(); float yContainer = element.getLocation().getY(); float widthContainer = element.getSize().getWidth(); @@ -976,7 +656,7 @@ private void putJsonDetailsWithElement(String message, WebElement element) { errorMessage.add(details); } - private int getInt(int i, boolean horizontal) { + int getInt(int i, boolean horizontal) { if (units.equals(PX)) { return i; } else { @@ -992,6 +672,5 @@ public enum Units { PX, PERCENT } -} - +} diff --git a/src/main/java/util/validator/UIValidator.java b/src/main/java/util/validator/UIValidator.java new file mode 100644 index 0000000..ec45ea0 --- /dev/null +++ b/src/main/java/util/validator/UIValidator.java @@ -0,0 +1,298 @@ +package util.validator; + +import http.helpers.TextFinder; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import util.general.SystemHelper; + +import java.util.List; + +public class UIValidator extends ResponsiveUIValidator implements Validator { + + UIValidator(WebDriver driver, WebElement element, String readableNameOfElement) { + super(driver); + rootElement = element; + rootElementReadableName = readableNameOfElement; + xRoot = rootElement.getLocation().getX(); + yRoot = rootElement.getLocation().getY(); + widthRoot = rootElement.getSize().getWidth(); + heightRoot = rootElement.getSize().getHeight(); + pageWidth = driver.manage().window().getSize().getWidth(); + pageHeight = driver.manage().window().getSize().getHeight(); + rootElementRightOffset = pageWidth - xRoot + widthRoot; + rootElementBottomOffset = pageHeight - yRoot + heightRoot; + startTime = System.currentTimeMillis(); + } + + @Override + public UIValidator changeMetricsUnitsTo(Units units) { + this.units = units; + return this; + } + + @Override + public UIValidator withLeftElement(WebElement element) { + validateLeftElement(element); + + return this; + } + + @Override + public UIValidator withLeftElement(WebElement element, int minMargin, int maxMargin) { + validateLeftElement(element, getInt(minMargin, true), getInt(maxMargin, true)); + + return this; + } + + @Override + public UIValidator withRightElement(WebElement element) { + validateRightElement(element); + return this; + } + + @Override + public UIValidator withRightElement(WebElement element, int minMargin, int maxMargin) { + validateRightElement(element, getInt(minMargin, true), getInt(maxMargin, true)); + return this; + } + + @Override + public UIValidator withTopElement(WebElement element) { + validateAboveElement(element); + return this; + } + + @Override + public UIValidator withTopElement(WebElement element, int minMargin, int maxMargin) { + validateAboveElement(element, getInt(minMargin, false), getInt(maxMargin, false)); + return this; + } + + @Override + public UIValidator withBottomElement(WebElement element) { + validateBelowElement(element); + return this; + } + + @Override + public UIValidator withBottomElement(WebElement element, int minMargin, int maxMargin) { + validateBelowElement(element, getInt(minMargin, false), getInt(maxMargin, false)); + return this; + } + + @Override + public UIValidator notOverlapWith(WebElement element, String readableName) { + validateNotOverlappingWithElements(element, readableName); + return this; + } + + @Override + public UIValidator overlapWith(WebElement element, String readableName) { + validateOverlappingWithElements(element, readableName); + return this; + } + + @Override + public UIValidator notOverlapWith(List elements) { + for (WebElement element : elements) { + validateNotOverlappingWithElements(element, "Element with class name: " + element.getAttribute("class")); + } + return this; + } + + @Override + public UIValidator sameOffsetLeftAs(WebElement element, String readableName) { + validateLeftOffsetForElements(element, readableName); + drawLeftOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetLeftAs(List elements) { + for (WebElement element : elements) { + validateLeftOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); + } + drawLeftOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetRightAs(WebElement element, String readableName) { + validateRightOffsetForElements(element, readableName); + drawRightOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetRightAs(List elements) { + for (WebElement element : elements) { + validateRightOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); + } + drawRightOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetTopAs(WebElement element, String readableName) { + validateTopOffsetForElements(element, readableName); + drawTopOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetTopAs(List elements) { + for (WebElement element : elements) { + validateTopOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); + } + drawTopOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetBottomAs(WebElement element, String readableName) { + validateBottomOffsetForElements(element, readableName); + drawBottomOffsetLine = true; + return this; + } + + @Override + public UIValidator sameOffsetBottomAs(List elements) { + for (WebElement element : elements) { + validateBottomOffsetForElements(element, "Element with class name: " + element.getAttribute("class")); + } + drawBottomOffsetLine = true; + return this; + } + + @Override + public UIValidator sameWidthAs(WebElement element, String readableName) { + validateSameWidth(element, readableName); + return this; + } + + @Override + public UIValidator sameWidthAs(List elements) { + for (WebElement element : elements) { + validateSameWidth(element, "Element with class name: " + element.getAttribute("class")); + } + return this; + } + + @Override + public UIValidator minWidth(int width) { + validateMinWidth(getInt(width, true)); + return this; + } + + @Override + public UIValidator maxWidth(int width) { + validateMaxWidth(getInt(width, true)); + return this; + } + + @Override + public UIValidator widthBetween(int min, int max) { + validateMinWidth(getInt(min, true)); + validateMaxWidth(getInt(max, true)); + return this; + } + + @Override + public UIValidator sameHeightAs(WebElement element, String readableName) { + validateSameHeight(element, readableName); + return this; + } + + @Override + public UIValidator sameHeightAs(List elements) { + for (WebElement element : elements) { + validateSameHeight(element, "Element with class name: " + element.getAttribute("class")); + } + return this; + } + + @Override + public UIValidator minHeight(int height) { + validateMinHeight(getInt(height, false)); + return this; + } + + @Override + public UIValidator maxHeight(int height) { + validateMaxHeight(getInt(height, false)); + return this; + } + + @Override + public UIValidator sameSizeAs(WebElement element, String readableName) { + validateSameSize(element, readableName); + return this; + } + + @Override + public UIValidator sameSizeAs(List elements) { + for (WebElement element : elements) { + validateSameSize(element, "Element with class name: " + element.getAttribute("class")); + } + return this; + } + + @Override + public UIValidator heightBetween(int min, int max) { + validateMinHeight(getInt(min, false)); + validateMaxHeight(getInt(max, false)); + return this; + } + + @Override + public UIValidator minOffset(int top, int right, int bottom, int left) { + if (getInt(top, false) > MIN_OFFSET && getInt(right, true) > MIN_OFFSET && getInt(bottom, false) > MIN_OFFSET && getInt(left, true) > MIN_OFFSET) { + validateMinOffset(getInt(top, false), getInt(right, true), getInt(bottom, false), getInt(left, true)); + } + return this; + } + + @Override + public UIValidator maxOffset(int top, int right, int bottom, int left) { + if (getInt(top, false) > MIN_OFFSET && getInt(right, true) > MIN_OFFSET && getInt(bottom, false) > MIN_OFFSET && getInt(left, true) > MIN_OFFSET) { + validateMaxOffset(getInt(top, false), getInt(right, true), getInt(bottom, false), getInt(left, true)); + } + return this; + } + + @Override + public UIValidator withCssValue(String cssProperty, String... args) { + String cssValue = rootElement.getCssValue(cssProperty); + + if (!cssValue.equals("")) { + for (String val : args) { + val = !val.startsWith("#") ? val : SystemHelper.hexStringToARGB(val); + if (!TextFinder.textIsFound(val, cssValue)) { + putJsonDetailsWithoutElement(String.format("Expected value of '%s' is '%s'. Actual value is '%s'", cssProperty, val, cssValue)); + } + } + } else { + putJsonDetailsWithoutElement(String.format("Element '%s' does not have css property '%s'", rootElementReadableName, cssProperty)); + } + return this; + } + + @Override + public UIValidator withoutCssValue(String cssProperty, String... args) { + String cssValue = rootElement.getCssValue(cssProperty); + + if (!cssValue.equals("")) { + for (String val : args) { + val = !val.startsWith("#") ? val : SystemHelper.hexStringToARGB(val); + if (TextFinder.textIsFound(val, cssValue)) { + putJsonDetailsWithoutElement(String.format("CSS property '%s' should not contain value '%s'. Actual value is '%s'", cssProperty, val, cssValue)); + } + } + } else { + putJsonDetailsWithoutElement(String.format("Element '%s' does not have css property '%s'", rootElementReadableName, cssProperty)); + } + return this; + } +} + + diff --git a/src/main/java/util/validator/Validator.java b/src/main/java/util/validator/Validator.java index 864aaba..78e7040 100644 --- a/src/main/java/util/validator/Validator.java +++ b/src/main/java/util/validator/Validator.java @@ -5,102 +5,77 @@ import java.util.List; interface Validator { - ResponsiveUIValidator init(); - ResponsiveUIValidator init(String scenarioName); + UIValidator changeMetricsUnitsTo(UIValidator.Units units); - ResponsiveUIValidator findElement(WebElement element, String readableNameOfElement); + UIValidator withLeftElement(WebElement element); - ResponsiveUIValidator findElements(List elements); + UIValidator withLeftElement(WebElement element, int minMargin, int maxMargin); - ResponsiveUIValidator changeMetricsUnitsTo(ResponsiveUIValidator.Units units); + UIValidator withRightElement(WebElement element); - ResponsiveUIValidator withLeftElement(WebElement element); + UIValidator withRightElement(WebElement element, int minMargin, int maxMargin); - ResponsiveUIValidator withLeftElement(WebElement element, int minMargin, int maxMargin); + UIValidator withTopElement(WebElement element); - ResponsiveUIValidator withRightElement(WebElement element); + UIValidator withTopElement(WebElement element, int minMargin, int maxMargin); - ResponsiveUIValidator withRightElement(WebElement element, int minMargin, int maxMargin); + UIValidator withBottomElement(WebElement element); - ResponsiveUIValidator withTopElement(WebElement element); + UIValidator withBottomElement(WebElement element, int minMargin, int maxMargin); - ResponsiveUIValidator withTopElement(WebElement element, int minMargin, int maxMargin); + UIValidator notOverlapWith(WebElement element, String readableName); - ResponsiveUIValidator withBottomElement(WebElement element); + UIValidator overlapWith(WebElement element, String readableName); - ResponsiveUIValidator withBottomElement(WebElement element, int minMargin, int maxMargin); + UIValidator notOverlapWith(List elements); - ResponsiveUIValidator insideOf(WebElement element, String readableContainerName); + UIValidator sameOffsetLeftAs(WebElement element, String readableName); - ResponsiveUIValidator notOverlapWith(WebElement element, String readableName); + UIValidator sameOffsetLeftAs(List elements); - ResponsiveUIValidator overlapWith(WebElement element, String readableName); + UIValidator sameOffsetRightAs(WebElement element, String readableName); - ResponsiveUIValidator notOverlapWith(List elements); + UIValidator sameOffsetRightAs(List elements); - ResponsiveUIValidator sameOffsetLeftAs(WebElement element, String readableName); + UIValidator sameOffsetTopAs(WebElement element, String readableName); - ResponsiveUIValidator sameOffsetLeftAs(List elements); + UIValidator sameOffsetTopAs(List elements); - ResponsiveUIValidator sameOffsetRightAs(WebElement element, String readableName); + UIValidator sameOffsetBottomAs(WebElement element, String readableName); - ResponsiveUIValidator sameOffsetRightAs(List elements); + UIValidator sameOffsetBottomAs(List elements); - ResponsiveUIValidator sameOffsetTopAs(WebElement element, String readableName); + UIValidator sameWidthAs(WebElement element, String readableName); - ResponsiveUIValidator sameOffsetTopAs(List elements); + UIValidator sameWidthAs(List elements); - ResponsiveUIValidator sameOffsetBottomAs(WebElement element, String readableName); + UIValidator minWidth(int width); - ResponsiveUIValidator sameOffsetBottomAs(List elements); + UIValidator maxWidth(int width); - ResponsiveUIValidator sameWidthAs(WebElement element, String readableName); + UIValidator widthBetween(int min, int max); - ResponsiveUIValidator sameWidthAs(List elements); + UIValidator sameHeightAs(WebElement element, String readableName); - ResponsiveUIValidator minWidth(int width); + UIValidator sameHeightAs(List elements); - ResponsiveUIValidator maxWidth(int width); + UIValidator minHeight(int height); - ResponsiveUIValidator widthBetween(int min, int max); + UIValidator maxHeight(int height); - ResponsiveUIValidator sameHeightAs(WebElement element, String readableName); + UIValidator sameSizeAs(WebElement element, String readableName); - ResponsiveUIValidator sameHeightAs(List elements); + UIValidator sameSizeAs(List elements); - ResponsiveUIValidator minHeight(int height); + UIValidator heightBetween(int min, int max); - ResponsiveUIValidator maxHeight(int height); + UIValidator minOffset(int top, int right, int bottom, int left); - ResponsiveUIValidator sameSizeAs(WebElement element, String readableName); + UIValidator maxOffset(int top, int right, int bottom, int left); - ResponsiveUIValidator sameSizeAs(List elements); + UIValidator withCssValue(String cssProperty, String... args); - ResponsiveUIValidator heightBetween(int min, int max); - - ResponsiveUIValidator minOffset(int top, int right, int bottom, int left); - - ResponsiveUIValidator maxOffset(int top, int right, int bottom, int left); - - ResponsiveUIValidator withCssValue(String cssProperty, String... args); - - ResponsiveUIValidator withoutCssValue(String cssProperty, String... args); - - ResponsiveUIValidator alignedAsGrid(int horizontalGridSize); - - ResponsiveUIValidator alignedAsGrid(int horizontalGridSize, int verticalGridSize); - - ResponsiveUIValidator areNotOverlappedWithEachOther(); - - ResponsiveUIValidator withSameSize(); - - ResponsiveUIValidator drawMap(); - - boolean validate(); - - void generateReport(); - - void generateReport(String name); + UIValidator withoutCssValue(String cssProperty, String... args); } diff --git a/src/main/java/web/BaseWebMobileElement.java b/src/main/java/web/BaseWebMobileElement.java index 77e1fa0..f239749 100644 --- a/src/main/java/web/BaseWebMobileElement.java +++ b/src/main/java/web/BaseWebMobileElement.java @@ -4,21 +4,17 @@ import io.appium.java_client.MobileElement; import org.openqa.selenium.*; import org.openqa.selenium.support.ui.ExpectedCondition; -import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.FluentWait; -import org.openqa.selenium.support.ui.WebDriverWait; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -public abstract class BaseWebMobileElement{ - - private WebDriver driver; +public abstract class BaseWebMobileElement { protected int timeOfWaiting = 600; - protected FluentWait wait; + private WebDriver driver; public BaseWebMobileElement(WebDriver driver) { this.driver = driver;