Skip to content

Commit 167c3b8

Browse files
authored
Merge pull request #13 from ITArray/1.4.2-update
1.4.2 update
2 parents 072cd20 + 3916efa commit 167c3b8

File tree

9 files changed

+226
-92
lines changed

9 files changed

+226
-92
lines changed

.travis.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
language: java
2+
sudo: false
3+
script: mvn clean verify
4+
jdk: oraclejdk8
5+
notifications:
6+
email:
7+
recipients:
8+
- denys.zaiats@gmail.com
9+
on_success: change
10+
on_failure: change

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,11 @@
193193
<artifactId>wffweb</artifactId>
194194
<version>2.1.2</version>
195195
</dependency>
196+
<dependency>
197+
<groupId>org.assertj</groupId>
198+
<artifactId>assertj-core</artifactId>
199+
<version>3.2.0</version>
200+
<scope>test</scope>
201+
</dependency>
196202
</dependencies>
197203
</project>

readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
[![Build Status](https://travis-ci.org/ITArray/Automotion.svg?branch=1.4.2-update)](https://travis-ci.org/ITArray/Automotion)
12
# Automotion #
23
This is JAVA library for the running of mobile, web or API automated tests.
34

src/main/java/util/validator/ChunkValidator.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
public interface ChunkValidator {
44

5+
ResponsiveUIChunkValidator changeMetricsUnitsTo(ResponsiveUIValidator.Units units);
6+
57
ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize);
68

79
ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize, int verticalGridSize);
@@ -10,4 +12,16 @@ public interface ChunkValidator {
1012

1113
ResponsiveUIChunkValidator withSameSize();
1214

15+
ResponsiveUIChunkValidator withSameWidth();
16+
17+
ResponsiveUIChunkValidator withSameHeight();
18+
19+
ResponsiveUIChunkValidator sameRightOffset();
20+
21+
ResponsiveUIChunkValidator sameLeftOffset();
22+
23+
ResponsiveUIChunkValidator sameTopOffset();
24+
25+
ResponsiveUIChunkValidator sameBottomOffset();
26+
1327
}

src/main/java/util/validator/ResponsiveUIChunkValidator.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ public class ResponsiveUIChunkValidator extends ResponsiveUIValidator implements
1616
startTime = System.currentTimeMillis();
1717
}
1818

19+
@Override
20+
public ResponsiveUIChunkValidator changeMetricsUnitsTo(Units units) {
21+
this.units = units;
22+
return this;
23+
}
24+
1925
@Override
2026
public ResponsiveUIChunkValidator alignedAsGrid(int horizontalGridSize) {
2127
validateGridAlignment(horizontalGridSize, 0);
@@ -36,7 +42,43 @@ public ResponsiveUIChunkValidator areNotOverlappedWithEachOther() {
3642

3743
@Override
3844
public ResponsiveUIChunkValidator withSameSize() {
39-
validateSameSize(rootElements);
45+
validateSameSize(rootElements, 0);
46+
return this;
47+
}
48+
49+
@Override
50+
public ResponsiveUIChunkValidator withSameWidth() {
51+
validateSameSize(rootElements, 1);
52+
return this;
53+
}
54+
55+
@Override
56+
public ResponsiveUIChunkValidator withSameHeight() {
57+
validateSameSize(rootElements, 2);
58+
return this;
59+
}
60+
61+
@Override
62+
public ResponsiveUIChunkValidator sameRightOffset() {
63+
validateRightOffsetForChunk(rootElements);
64+
return this;
65+
}
66+
67+
@Override
68+
public ResponsiveUIChunkValidator sameLeftOffset() {
69+
validateLeftOffsetForChunk(rootElements);
70+
return this;
71+
}
72+
73+
@Override
74+
public ResponsiveUIChunkValidator sameTopOffset() {
75+
validateTopOffsetForChunk(rootElements);
76+
return this;
77+
}
78+
79+
@Override
80+
public ResponsiveUIChunkValidator sameBottomOffset() {
81+
validateBottomOffsetForChunk(rootElements);
4082
return this;
4183
}
4284
}

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

Lines changed: 91 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
import org.json.simple.JSONArray;
66
import org.json.simple.JSONObject;
77
import org.json.simple.parser.ParseException;
8-
import org.openqa.selenium.OutputType;
9-
import org.openqa.selenium.TakesScreenshot;
10-
import org.openqa.selenium.WebDriver;
11-
import org.openqa.selenium.WebElement;
8+
import org.openqa.selenium.Dimension;
9+
import org.openqa.selenium.*;
10+
import org.openqa.selenium.Point;
1211
import util.driver.PageValidator;
1312
import util.general.HtmlReportBuilder;
1413
import util.general.SystemHelper;
@@ -268,6 +267,38 @@ void validateGridAlignment(int columns, int rows) {
268267
}
269268
}
270269

270+
void validateRightOffsetForChunk(List<WebElement> elements) {
271+
for (int i = 0; i < elements.size() - 1; i++) {
272+
if (!elementsHasEqualLeftRightOffset(false, elements.get(i), elements.get(i + 1))) {
273+
putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same right offset as element #" + (i + 2) + "", elements.get(i + 1));
274+
}
275+
}
276+
}
277+
278+
void validateLeftOffsetForChunk(List<WebElement> elements) {
279+
for (int i = 0; i < elements.size() - 1; i++) {
280+
if (!elementsHasEqualLeftRightOffset(true, elements.get(i), elements.get(i + 1))) {
281+
putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same left offset as element #" + (i + 2) + "", elements.get(i + 1));
282+
}
283+
}
284+
}
285+
286+
void validateTopOffsetForChunk(List<WebElement> elements) {
287+
for (int i = 0; i < elements.size() - 1; i++) {
288+
if (!elementsHasEqualTopBottomOffset(true, elements.get(i), elements.get(i + 1))) {
289+
putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same top offset as element #" + (i + 2) + "", elements.get(i + 1));
290+
}
291+
}
292+
}
293+
294+
void validateBottomOffsetForChunk(List<WebElement> elements) {
295+
for (int i = 0; i < elements.size() - 1; i++) {
296+
if (!elementsHasEqualTopBottomOffset(false, elements.get(i), elements.get(i + 1))) {
297+
putJsonDetailsWithElement("Element #" + (i + 1) + " has not the same bottom offset as element #" + (i + 2) + "", elements.get(i + 1));
298+
}
299+
}
300+
}
301+
271302
void validateRightOffsetForElements(WebElement element, String readableName) {
272303
if (!element.equals(rootElement)) {
273304
if (!elementsHasEqualLeftRightOffset(false, element)) {
@@ -398,15 +429,30 @@ void validateSameSize(WebElement element, String readableName) {
398429
}
399430
}
400431

401-
void validateSameSize(List<WebElement> elements) {
432+
void validateSameSize(List<WebElement> elements, int type) {
402433
for (int i = 0; i < elements.size() - 1; i++) {
403434
int h1 = elements.get(i).getSize().getHeight();
404435
int w1 = elements.get(i).getSize().getWidth();
405436
int h2 = elements.get(i + 1).getSize().getHeight();
406437
int w2 = elements.get(i + 1).getSize().getWidth();
407-
if (h1 != h2 || w1 != w2) {
408-
putJsonDetailsWithElement("Element #" + i + " has different size.", elements.get(i));
409-
putJsonDetailsWithElement("Element #" + (i + 1) + " has different size.", elements.get(i + 1));
438+
switch (type) {
439+
case 0:
440+
if (h1 != h2 || w1 != w2) {
441+
putJsonDetailsWithElement("Element #" + (i + 1) + " has different size.", elements.get(i));
442+
putJsonDetailsWithElement("Element #" + (i + 2) + " has different size.", elements.get(i + 1));
443+
}
444+
break;
445+
case 1:
446+
if (w1 != w2) {
447+
putJsonDetailsWithElement("Element #" + (i + 1) + " has different width.", elements.get(i));
448+
putJsonDetailsWithElement("Element #" + (i + 2) + " has different width.", elements.get(i + 1));
449+
}
450+
break;
451+
case 2:
452+
if (h1 != h2) {
453+
putJsonDetailsWithElement("Element #" + (i + 1) + " has different height.", elements.get(i));
454+
putJsonDetailsWithElement("Element #" + (i + 2) + " has different height.", elements.get(i + 1));
455+
}
410456
}
411457
}
412458
}
@@ -508,8 +554,8 @@ void validateLeftElement(WebElement leftElement) {
508554
}
509555

510556
boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement elementOverlapWith) {
511-
org.openqa.selenium.Point elLoc = elementOverlapWith.getLocation();
512-
org.openqa.selenium.Dimension elSize = elementOverlapWith.getSize();
557+
Point elLoc = elementOverlapWith.getLocation();
558+
Dimension elSize = elementOverlapWith.getSize();
513559
int xRoot = rootElement.getLocation().x;
514560
int yRoot = rootElement.getLocation().y;
515561
int widthRoot = rootElement.getSize().width;
@@ -529,8 +575,8 @@ boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement element
529575
}
530576

531577
boolean elementsAreOverlapped(WebElement elementOverlapWith) {
532-
org.openqa.selenium.Point elLoc = elementOverlapWith.getLocation();
533-
org.openqa.selenium.Dimension elSize = elementOverlapWith.getSize();
578+
Point elLoc = elementOverlapWith.getLocation();
579+
Dimension elSize = elementOverlapWith.getSize();
534580
return ((xRoot >= elLoc.x && yRoot > elLoc.y && xRoot < elLoc.x + elSize.width && yRoot < elLoc.y + elSize.height)
535581
|| (xRoot + widthRoot > elLoc.x && yRoot > elLoc.y && xRoot + widthRoot < elLoc.x + elSize.width && yRoot < elLoc.y + elSize.height)
536582
|| (xRoot > elLoc.x && yRoot + heightRoot > elLoc.y && xRoot < elLoc.x + elSize.width && yRoot + heightRoot < elLoc.y + elSize.height)
@@ -545,8 +591,8 @@ boolean elementsAreOverlapped(WebElement elementOverlapWith) {
545591
}
546592

547593
boolean elementsAreOverlapped(WebElement rootElement, WebElement elementOverlapWith) {
548-
org.openqa.selenium.Point elLoc = elementOverlapWith.getLocation();
549-
org.openqa.selenium.Dimension elSize = elementOverlapWith.getSize();
594+
Point elLoc = elementOverlapWith.getLocation();
595+
Dimension elSize = elementOverlapWith.getSize();
550596
int xRoot = rootElement.getLocation().x;
551597
int yRoot = rootElement.getLocation().y;
552598
int widthRoot = rootElement.getSize().width;
@@ -566,8 +612,21 @@ boolean elementsAreOverlapped(WebElement rootElement, WebElement elementOverlapW
566612
}
567613

568614
boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement elementToCompare) {
569-
org.openqa.selenium.Point elLoc = elementToCompare.getLocation();
570-
org.openqa.selenium.Dimension elSize = elementToCompare.getSize();
615+
Point elLoc = elementToCompare.getLocation();
616+
Dimension elSize = elementToCompare.getSize();
617+
618+
if (isLeft) {
619+
return xRoot == elLoc.getX();
620+
} else {
621+
return (pageWidth - xRoot + widthRoot) == (pageWidth - elLoc.getX() + elSize.getWidth());
622+
}
623+
}
624+
625+
boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement element, WebElement elementToCompare) {
626+
Point elLoc = elementToCompare.getLocation();
627+
Dimension elSize = elementToCompare.getSize();
628+
int xRoot = element.getLocation().x;
629+
int widthRoot = element.getSize().width;
571630

572631
if (isLeft) {
573632
return xRoot == elLoc.getX();
@@ -576,9 +635,23 @@ boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement elementToComp
576635
}
577636
}
578637

638+
579639
boolean elementsHasEqualTopBottomOffset(boolean isTop, WebElement elementToCompare) {
580-
org.openqa.selenium.Point elLoc = elementToCompare.getLocation();
581-
org.openqa.selenium.Dimension elSize = elementToCompare.getSize();
640+
Point elLoc = elementToCompare.getLocation();
641+
Dimension elSize = elementToCompare.getSize();
642+
643+
if (isTop) {
644+
return yRoot == elLoc.getY();
645+
} else {
646+
return (pageHeight - yRoot + heightRoot) == (pageHeight - elLoc.getY() + elSize.getHeight());
647+
}
648+
}
649+
650+
boolean elementsHasEqualTopBottomOffset(boolean isTop, WebElement element, WebElement elementToCompare) {
651+
Point elLoc = elementToCompare.getLocation();
652+
Dimension elSize = elementToCompare.getSize();
653+
int yRoot = element.getLocation().y;
654+
int heightRoot = element.getSize().height;
582655

583656
if (isTop) {
584657
return yRoot == elLoc.getY();

src/main/java/util/validator/Validator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
interface Validator {
88

9-
UIValidator changeMetricsUnitsTo(UIValidator.Units units);
9+
UIValidator changeMetricsUnitsTo(ResponsiveUIValidator.Units units);
1010

1111
UIValidator withLeftElement(WebElement element);
1212

0 commit comments

Comments
 (0)