Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/main/java/util/driver/DriverHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,11 @@ public static void scrollUpMobileElement(AppiumDriver driver, MobileElement elem
public static void zoomInOutPage(WebDriver driver, int zoomPercent) {
if (zoomPercent > 0) {
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.body.style.zoom = '" + zoomPercent + "%'");
if (isFirefox()) {
jse.executeScript("document.body.style.MozTransform = 'scale(" + (zoomPercent / 100f) + ")';");
} else {
jse.executeScript("document.body.style.zoom = '" + zoomPercent + "%'");
}
}
}

Expand Down
40 changes: 34 additions & 6 deletions src/main/java/util/validator/ResponsiveUIValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;

import static environment.EnvironmentFactory.isChrome;
import static environment.EnvironmentFactory.isMobile;
import static environment.EnvironmentFactory.*;
import static util.general.SystemHelper.isAutomotionFolderExists;
import static util.general.SystemHelper.isRetinaDisplay;
import static util.validator.Constants.*;
Expand All @@ -41,6 +40,7 @@ public class ResponsiveUIValidator {
private static Color rootColor = new Color(255, 0, 0, 255);
private static Color highlightedElementsColor = new Color(255, 0, 255, 255);
private static Color linesColor = Color.ORANGE;
private static String currentZoom = "100%";
private static File screenshot;
private static BufferedImage img;
private static Graphics2D g;
Expand Down Expand Up @@ -697,8 +697,16 @@ String getFormattedMessage(WebElement element) {
}

int getRetinaValue(int value) {
if (isRetinaDisplay() && isChrome()) {
return 2 * value;
if (!isMobile()) {
int zoom = Integer.valueOf(currentZoom.replace("%", ""));
if (zoom != 100) {
value = (int) (value - (value * Math.abs(zoom - 100f) / 100f));
}
if (isRetinaDisplay() && isChrome()) {
return 2 * value;
} else {
return value;
}
} else {
return value;
}
Expand All @@ -707,7 +715,17 @@ int getRetinaValue(int value) {
long getPageWidth() {
if (!isMobile()) {
JavascriptExecutor executor = (JavascriptExecutor) driver;
return (long) executor.executeScript("if (self.innerWidth) {return self.innerWidth;} if (document.documentElement && document.documentElement.clientWidth) {return document.documentElement.clientWidth;}if (document.body) {return document.body.clientWidth;}");
if (isFirefox()) {
currentZoom = (String) executor.executeScript("document.body.style.MozTransform");
} else {
currentZoom = (String) executor.executeScript("return document.body.style.zoom;");
}
if (currentZoom == null || currentZoom.equals("100%") || currentZoom.equals("")) {
currentZoom = "100%";
return (long) executor.executeScript("if (self.innerWidth) {return self.innerWidth;} if (document.documentElement && document.documentElement.clientWidth) {return document.documentElement.clientWidth;}if (document.body) {return document.body.clientWidth;}");
} else {
return (long) executor.executeScript("return document.getElementsByTagName('body')[0].offsetWidth");
}
} else {
return driver.manage().window().getSize().width;
}
Expand All @@ -716,7 +734,17 @@ long getPageWidth() {
long getPageHeight() {
if (!isMobile()) {
JavascriptExecutor executor = (JavascriptExecutor) driver;
return (long) executor.executeScript("if (self.innerHeight) {return self.innerHeight;} if (document.documentElement && document.documentElement.clientHeight) {return document.documentElement.clientHeight;}if (document.body) {return document.body.clientHeight;}");
if (isFirefox()) {
currentZoom = (String) executor.executeScript("document.body.style.MozTransform");
} else {
currentZoom = (String) executor.executeScript("return document.body.style.zoom;");
}
if (currentZoom == null || currentZoom.equals("100%") || currentZoom.equals("")) {
currentZoom = "100%";
return (long) executor.executeScript("if (self.innerHeight) {return self.innerHeight;} if (document.documentElement && document.documentElement.clientHeight) {return document.documentElement.clientHeight;}if (document.body) {return document.body.clientHeight;}");
} else {
return (long) executor.executeScript("return document.getElementsByTagName('body')[0].offsetHeight");
}
} else {
return driver.manage().window().getSize().height;
}
Expand Down
15 changes: 15 additions & 0 deletions src/test/java/ResponsiveValidatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import util.driver.DriverHelper;
import util.driver.WebDriverFactory;
import util.validator.ResponsiveUIValidator;

Expand All @@ -28,6 +29,7 @@ public void testThatResponsiveValidatorWorks() {
WebDriverFactory driverFactory = new WebDriverFactory();
driver = driverFactory.getDriver();
driver.get("http:/visual.itarray.net");
driver.manage().window().maximize();

TestPage page = new TestPage(driver);

Expand Down Expand Up @@ -100,6 +102,19 @@ public void testThatResponsiveValidatorWorks() {
softly.assertThat(success).isEqualTo(true).overridingErrorMessage("Failed validation of Grid in a list");
}

int[] zoomRange = {50, 70, 100, 120, 150};

for (int val : zoomRange) {
DriverHelper.zoomInOutPage(driver, val);
boolean success = uiValidator.init("Validate on page zoom " + val + "%")
.findElement(page.mainContainer(), "Main container")
.equalLeftRightOffset()
.drawMap()
.validate();

softly.assertThat(success).isEqualTo(true).overridingErrorMessage("Failed validation of Container");
}

uiValidator.generateReport("Home Page");

softly.assertAll();
Expand Down