Skip to content

Commit 8d43a0c

Browse files
authored
Merge pull request #17 from ITArray/1.4.2-fix-page-size
1.4.2 fix page size
2 parents 253968f + 602ef23 commit 8d43a0c

File tree

3 files changed

+54
-7
lines changed

3 files changed

+54
-7
lines changed

src/main/java/util/driver/DriverHelper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,11 @@ public static void scrollUpMobileElement(AppiumDriver driver, MobileElement elem
156156
public static void zoomInOutPage(WebDriver driver, int zoomPercent) {
157157
if (zoomPercent > 0) {
158158
JavascriptExecutor jse = (JavascriptExecutor) driver;
159-
jse.executeScript("document.body.style.zoom = '" + zoomPercent + "%'");
159+
if (isFirefox()) {
160+
jse.executeScript("document.body.style.MozTransform = 'scale(" + (zoomPercent / 100f) + ")';");
161+
} else {
162+
jse.executeScript("document.body.style.zoom = '" + zoomPercent + "%'");
163+
}
160164
}
161165
}
162166

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

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
import java.util.concurrent.ConcurrentHashMap;
2323
import java.util.concurrent.atomic.AtomicLong;
2424

25-
import static environment.EnvironmentFactory.isChrome;
26-
import static environment.EnvironmentFactory.isMobile;
25+
import static environment.EnvironmentFactory.*;
2726
import static util.general.SystemHelper.isAutomotionFolderExists;
2827
import static util.general.SystemHelper.isRetinaDisplay;
2928
import static util.validator.Constants.*;
@@ -41,6 +40,7 @@ public class ResponsiveUIValidator {
4140
private static Color rootColor = new Color(255, 0, 0, 255);
4241
private static Color highlightedElementsColor = new Color(255, 0, 255, 255);
4342
private static Color linesColor = Color.ORANGE;
43+
private static String currentZoom = "100%";
4444
private static File screenshot;
4545
private static BufferedImage img;
4646
private static Graphics2D g;
@@ -697,8 +697,16 @@ String getFormattedMessage(WebElement element) {
697697
}
698698

699699
int getRetinaValue(int value) {
700-
if (isRetinaDisplay() && isChrome()) {
701-
return 2 * value;
700+
if (!isMobile()) {
701+
int zoom = Integer.valueOf(currentZoom.replace("%", ""));
702+
if (zoom != 100) {
703+
value = (int) (value - (value * Math.abs(zoom - 100f) / 100f));
704+
}
705+
if (isRetinaDisplay() && isChrome()) {
706+
return 2 * value;
707+
} else {
708+
return value;
709+
}
702710
} else {
703711
return value;
704712
}
@@ -707,7 +715,17 @@ int getRetinaValue(int value) {
707715
long getPageWidth() {
708716
if (!isMobile()) {
709717
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;}");
718+
if (isFirefox()) {
719+
currentZoom = (String) executor.executeScript("document.body.style.MozTransform");
720+
} else {
721+
currentZoom = (String) executor.executeScript("return document.body.style.zoom;");
722+
}
723+
if (currentZoom == null || currentZoom.equals("100%") || currentZoom.equals("")) {
724+
currentZoom = "100%";
725+
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;}");
726+
} else {
727+
return (long) executor.executeScript("return document.getElementsByTagName('body')[0].offsetWidth");
728+
}
711729
} else {
712730
return driver.manage().window().getSize().width;
713731
}
@@ -716,7 +734,17 @@ long getPageWidth() {
716734
long getPageHeight() {
717735
if (!isMobile()) {
718736
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;}");
737+
if (isFirefox()) {
738+
currentZoom = (String) executor.executeScript("document.body.style.MozTransform");
739+
} else {
740+
currentZoom = (String) executor.executeScript("return document.body.style.zoom;");
741+
}
742+
if (currentZoom == null || currentZoom.equals("100%") || currentZoom.equals("")) {
743+
currentZoom = "100%";
744+
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;}");
745+
} else {
746+
return (long) executor.executeScript("return document.getElementsByTagName('body')[0].offsetHeight");
747+
}
720748
} else {
721749
return driver.manage().window().getSize().height;
722750
}

src/test/java/ResponsiveValidatorTest.java

Lines changed: 15 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

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

3234
TestPage page = new TestPage(driver);
3335

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

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

105120
softly.assertAll();

0 commit comments

Comments
 (0)