Skip to content

Commit 1915224

Browse files
committed
[1.4.2-fix-page-size] - fixed validation for zoomed pages
1 parent 253968f commit 1915224

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

src/main/java/util/validator/ResponsiveUIValidator.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class ResponsiveUIValidator {
4141
private static Color rootColor = new Color(255, 0, 0, 255);
4242
private static Color highlightedElementsColor = new Color(255, 0, 255, 255);
4343
private static Color linesColor = Color.ORANGE;
44+
private static String currentZoom = "100%";
4445
private static File screenshot;
4546
private static BufferedImage img;
4647
private static Graphics2D g;
@@ -697,6 +698,10 @@ String getFormattedMessage(WebElement element) {
697698
}
698699

699700
int getRetinaValue(int value) {
701+
int zoom = Integer.valueOf(currentZoom.replace("%", ""));
702+
if (zoom != 100){
703+
value = (int) (value - (value * Math.abs(zoom - 100f) / 100f));
704+
}
700705
if (isRetinaDisplay() && isChrome()) {
701706
return 2 * value;
702707
} else {
@@ -707,7 +712,13 @@ int getRetinaValue(int value) {
707712
long getPageWidth() {
708713
if (!isMobile()) {
709714
JavascriptExecutor executor = (JavascriptExecutor) driver;
710-
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;}");
715+
currentZoom = (String) executor.executeScript("return document.body.style.zoom;");
716+
if (currentZoom.equals("100%") || currentZoom.equals("")) {
717+
currentZoom = "100%";
718+
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;}");
719+
} else {
720+
return (long) executor.executeScript("return document.getElementsByTagName('body')[0].offsetWidth");
721+
}
711722
} else {
712723
return driver.manage().window().getSize().width;
713724
}
@@ -716,7 +727,13 @@ long getPageWidth() {
716727
long getPageHeight() {
717728
if (!isMobile()) {
718729
JavascriptExecutor executor = (JavascriptExecutor) driver;
719-
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;}");
730+
currentZoom = (String) executor.executeScript("return document.body.style.zoom;");
731+
if (currentZoom.equals("100%") || currentZoom.equals("")) {
732+
currentZoom = "100%";
733+
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;}");
734+
} else {
735+
return (long) executor.executeScript("return document.getElementsByTagName('body')[0].offsetHeight");
736+
}
720737
} else {
721738
return driver.manage().window().getSize().height;
722739
}

src/test/java/ResponsiveValidatorTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.openqa.selenium.By;
77
import org.openqa.selenium.WebDriver;
88
import org.openqa.selenium.WebElement;
9+
import util.driver.DriverHelper;
910
import util.driver.WebDriverFactory;
1011
import util.validator.ResponsiveUIValidator;
1112

@@ -100,6 +101,19 @@ public void testThatResponsiveValidatorWorks() {
100101
softly.assertThat(success).isEqualTo(true).overridingErrorMessage("Failed validation of Grid in a list");
101102
}
102103

104+
int[] zoomRange = {50, 70, 100, 120, 150};
105+
106+
for (int val : zoomRange) {
107+
DriverHelper.zoomInOutPage(driver, val);
108+
boolean success = uiValidator.init("Validate on page zoom " + val + "%")
109+
.findElement(page.mainContainer(), "Main container")
110+
.equalLeftRightOffset()
111+
.drawMap()
112+
.validate();
113+
114+
softly.assertThat(success).isEqualTo(true).overridingErrorMessage("Failed validation of Container");
115+
}
116+
103117
uiValidator.generateReport("Home Page");
104118

105119
softly.assertAll();

0 commit comments

Comments
 (0)