Skip to content

Commit dc986a0

Browse files
authored
Merge pull request #14 from ITArray/1.4.2-update-error-messages
1.4.2 update error messages
2 parents 167c3b8 + 771fac4 commit dc986a0

File tree

7 files changed

+299
-165
lines changed

7 files changed

+299
-165
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ public interface ChunkValidator {
2424

2525
ResponsiveUIChunkValidator sameBottomOffset();
2626

27+
ResponsiveUIChunkValidator equalLeftRightOffset();
28+
29+
ResponsiveUIChunkValidator equalTopBottomOffset();
30+
2731
}

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55

66
import java.util.List;
77

8+
import static environment.EnvironmentFactory.isChrome;
9+
import static util.general.SystemHelper.isRetinaDisplay;
10+
811
public class ResponsiveUIChunkValidator extends ResponsiveUIValidator implements ChunkValidator {
912

1013
ResponsiveUIChunkValidator(WebDriver driver, List<WebElement> elements) {
1114
super(driver);
1215
rootElements = elements;
13-
pageWidth = driver.manage().window().getSize().getWidth();
14-
pageHeight = driver.manage().window().getSize().getHeight();
16+
pageWidth = (int) getPageWidth();
17+
pageHeight = (int) getPageHeight();
1518
rootElement = rootElements.get(0);
1619
startTime = System.currentTimeMillis();
1720
}
@@ -81,4 +84,16 @@ public ResponsiveUIChunkValidator sameBottomOffset() {
8184
validateBottomOffsetForChunk(rootElements);
8285
return this;
8386
}
87+
88+
@Override
89+
public ResponsiveUIChunkValidator equalLeftRightOffset() {
90+
validateEqualLeftRightOffset(rootElements);
91+
return this;
92+
}
93+
94+
@Override
95+
public ResponsiveUIChunkValidator equalTopBottomOffset() {
96+
validateEqualTopBottomOffset(rootElements);
97+
return this;
98+
}
8499
}

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

Lines changed: 204 additions & 134 deletions
Large diffs are not rendered by default.

src/main/java/util/validator/UIValidator.java

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@ public class UIValidator extends ResponsiveUIValidator implements Validator {
1717
yRoot = rootElement.getLocation().getY();
1818
widthRoot = rootElement.getSize().getWidth();
1919
heightRoot = rootElement.getSize().getHeight();
20-
pageWidth = driver.manage().window().getSize().getWidth();
21-
pageHeight = driver.manage().window().getSize().getHeight();
22-
rootElementRightOffset = pageWidth - xRoot + widthRoot;
23-
rootElementBottomOffset = pageHeight - yRoot + heightRoot;
20+
pageWidth = (int) getPageWidth();
21+
pageHeight = (int) getPageHeight();
22+
pageHeight = getRetinaValue(driver.manage().window().getSize().getHeight());
2423
startTime = System.currentTimeMillis();
2524
}
2625

@@ -39,7 +38,7 @@ public UIValidator withLeftElement(WebElement element) {
3938

4039
@Override
4140
public UIValidator withLeftElement(WebElement element, int minMargin, int maxMargin) {
42-
validateLeftElement(element, getInt(minMargin, true), getInt(maxMargin, true));
41+
validateLeftElement(element, getConvertedInt(minMargin, true), getConvertedInt(maxMargin, true));
4342

4443
return this;
4544
}
@@ -52,7 +51,7 @@ public UIValidator withRightElement(WebElement element) {
5251

5352
@Override
5453
public UIValidator withRightElement(WebElement element, int minMargin, int maxMargin) {
55-
validateRightElement(element, getInt(minMargin, true), getInt(maxMargin, true));
54+
validateRightElement(element, getConvertedInt(minMargin, true), getConvertedInt(maxMargin, true));
5655
return this;
5756
}
5857

@@ -64,7 +63,7 @@ public UIValidator withTopElement(WebElement element) {
6463

6564
@Override
6665
public UIValidator withTopElement(WebElement element, int minMargin, int maxMargin) {
67-
validateAboveElement(element, getInt(minMargin, false), getInt(maxMargin, false));
66+
validateAboveElement(element, getConvertedInt(minMargin, false), getConvertedInt(maxMargin, false));
6867
return this;
6968
}
7069

@@ -76,7 +75,7 @@ public UIValidator withBottomElement(WebElement element) {
7675

7776
@Override
7877
public UIValidator withBottomElement(WebElement element, int minMargin, int maxMargin) {
79-
validateBelowElement(element, getInt(minMargin, false), getInt(maxMargin, false));
78+
validateBelowElement(element, getConvertedInt(minMargin, false), getConvertedInt(maxMargin, false));
8079
return this;
8180
}
8281

@@ -95,7 +94,7 @@ public UIValidator overlapWith(WebElement element, String readableName) {
9594
@Override
9695
public UIValidator notOverlapWith(List<WebElement> elements) {
9796
for (WebElement element : elements) {
98-
validateNotOverlappingWithElements(element, "Element with class name: " + element.getAttribute("class"));
97+
validateNotOverlappingWithElements(element, getFormattedMessage(element));
9998
}
10099
return this;
101100
}
@@ -110,7 +109,7 @@ public UIValidator sameOffsetLeftAs(WebElement element, String readableName) {
110109
@Override
111110
public UIValidator sameOffsetLeftAs(List<WebElement> elements) {
112111
for (WebElement element : elements) {
113-
validateLeftOffsetForElements(element, "Element with class name: " + element.getAttribute("class"));
112+
validateLeftOffsetForElements(element, getFormattedMessage(element));
114113
}
115114
drawLeftOffsetLine = true;
116115
return this;
@@ -126,7 +125,7 @@ public UIValidator sameOffsetRightAs(WebElement element, String readableName) {
126125
@Override
127126
public UIValidator sameOffsetRightAs(List<WebElement> elements) {
128127
for (WebElement element : elements) {
129-
validateRightOffsetForElements(element, "Element with class name: " + element.getAttribute("class"));
128+
validateRightOffsetForElements(element, getFormattedMessage(element));
130129
}
131130
drawRightOffsetLine = true;
132131
return this;
@@ -142,7 +141,7 @@ public UIValidator sameOffsetTopAs(WebElement element, String readableName) {
142141
@Override
143142
public UIValidator sameOffsetTopAs(List<WebElement> elements) {
144143
for (WebElement element : elements) {
145-
validateTopOffsetForElements(element, "Element with class name: " + element.getAttribute("class"));
144+
validateTopOffsetForElements(element, getFormattedMessage(element));
146145
}
147146
drawTopOffsetLine = true;
148147
return this;
@@ -158,7 +157,7 @@ public UIValidator sameOffsetBottomAs(WebElement element, String readableName) {
158157
@Override
159158
public UIValidator sameOffsetBottomAs(List<WebElement> elements) {
160159
for (WebElement element : elements) {
161-
validateBottomOffsetForElements(element, "Element with class name: " + element.getAttribute("class"));
160+
validateBottomOffsetForElements(element, getFormattedMessage(element));
162161
}
163162
drawBottomOffsetLine = true;
164163
return this;
@@ -173,27 +172,27 @@ public UIValidator sameWidthAs(WebElement element, String readableName) {
173172
@Override
174173
public UIValidator sameWidthAs(List<WebElement> elements) {
175174
for (WebElement element : elements) {
176-
validateSameWidth(element, "Element with class name: " + element.getAttribute("class"));
175+
validateSameWidth(element, getFormattedMessage(element));
177176
}
178177
return this;
179178
}
180179

181180
@Override
182181
public UIValidator minWidth(int width) {
183-
validateMinWidth(getInt(width, true));
182+
validateMinWidth(getConvertedInt(width, true));
184183
return this;
185184
}
186185

187186
@Override
188187
public UIValidator maxWidth(int width) {
189-
validateMaxWidth(getInt(width, true));
188+
validateMaxWidth(getConvertedInt(width, true));
190189
return this;
191190
}
192191

193192
@Override
194193
public UIValidator widthBetween(int min, int max) {
195-
validateMinWidth(getInt(min, true));
196-
validateMaxWidth(getInt(max, true));
194+
validateMinWidth(getConvertedInt(min, true));
195+
validateMaxWidth(getConvertedInt(max, true));
197196
return this;
198197
}
199198

@@ -206,20 +205,20 @@ public UIValidator sameHeightAs(WebElement element, String readableName) {
206205
@Override
207206
public UIValidator sameHeightAs(List<WebElement> elements) {
208207
for (WebElement element : elements) {
209-
validateSameHeight(element, "Element with class name: " + element.getAttribute("class"));
208+
validateSameHeight(element, getFormattedMessage(element));
210209
}
211210
return this;
212211
}
213212

214213
@Override
215214
public UIValidator minHeight(int height) {
216-
validateMinHeight(getInt(height, false));
215+
validateMinHeight(getConvertedInt(height, false));
217216
return this;
218217
}
219218

220219
@Override
221220
public UIValidator maxHeight(int height) {
222-
validateMaxHeight(getInt(height, false));
221+
validateMaxHeight(getConvertedInt(height, false));
223222
return this;
224223
}
225224

@@ -232,30 +231,30 @@ public UIValidator sameSizeAs(WebElement element, String readableName) {
232231
@Override
233232
public UIValidator sameSizeAs(List<WebElement> elements) {
234233
for (WebElement element : elements) {
235-
validateSameSize(element, "Element with class name: " + element.getAttribute("class"));
234+
validateSameSize(element, getFormattedMessage(element));
236235
}
237236
return this;
238237
}
239238

240239
@Override
241240
public UIValidator heightBetween(int min, int max) {
242-
validateMinHeight(getInt(min, false));
243-
validateMaxHeight(getInt(max, false));
241+
validateMinHeight(getConvertedInt(min, false));
242+
validateMaxHeight(getConvertedInt(max, false));
244243
return this;
245244
}
246245

247246
@Override
248247
public UIValidator minOffset(int top, int right, int bottom, int left) {
249-
if (getInt(top, false) > MIN_OFFSET && getInt(right, true) > MIN_OFFSET && getInt(bottom, false) > MIN_OFFSET && getInt(left, true) > MIN_OFFSET) {
250-
validateMinOffset(getInt(top, false), getInt(right, true), getInt(bottom, false), getInt(left, true));
248+
if (getConvertedInt(top, false) > MIN_OFFSET && getConvertedInt(right, true) > MIN_OFFSET && getConvertedInt(bottom, false) > MIN_OFFSET && getConvertedInt(left, true) > MIN_OFFSET) {
249+
validateMinOffset(getConvertedInt(top, false), getConvertedInt(right, true), getConvertedInt(bottom, false), getConvertedInt(left, true));
251250
}
252251
return this;
253252
}
254253

255254
@Override
256255
public UIValidator maxOffset(int top, int right, int bottom, int left) {
257-
if (getInt(top, false) > MIN_OFFSET && getInt(right, true) > MIN_OFFSET && getInt(bottom, false) > MIN_OFFSET && getInt(left, true) > MIN_OFFSET) {
258-
validateMaxOffset(getInt(top, false), getInt(right, true), getInt(bottom, false), getInt(left, true));
256+
if (getConvertedInt(top, false) > MIN_OFFSET && getConvertedInt(right, true) > MIN_OFFSET && getConvertedInt(bottom, false) > MIN_OFFSET && getConvertedInt(left, true) > MIN_OFFSET) {
257+
validateMaxOffset(getConvertedInt(top, false), getConvertedInt(right, true), getConvertedInt(bottom, false), getConvertedInt(left, true));
259258
}
260259
return this;
261260
}
@@ -293,6 +292,18 @@ public UIValidator withoutCssValue(String cssProperty, String... args) {
293292
}
294293
return this;
295294
}
295+
296+
@Override
297+
public UIValidator equalLeftRightOffset() {
298+
validateEqualLeftRightOffset(rootElement, rootElementReadableName);
299+
return this;
300+
}
301+
302+
@Override
303+
public UIValidator equalTopBottomOffset() {
304+
validateEqualTopBottomOffset(rootElement, rootElementReadableName);
305+
return this;
306+
}
296307
}
297308

298309

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,8 @@ interface Validator {
7878

7979
UIValidator withoutCssValue(String cssProperty, String... args);
8080

81+
UIValidator equalLeftRightOffset();
82+
83+
UIValidator equalTopBottomOffset();
84+
8185
}

src/test/java/ResponsiveValidatorTest.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import org.openqa.selenium.By;
77
import org.openqa.selenium.WebDriver;
88
import org.openqa.selenium.WebElement;
9+
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
910
import util.driver.WebDriverFactory;
1011
import util.validator.ResponsiveUIValidator;
1112

13+
import java.awt.*;
1214
import java.util.HashMap;
1315
import java.util.Map;
1416

@@ -19,9 +21,10 @@ public class ResponsiveValidatorTest {
1921

2022
@Test
2123
public void testThatResponsiveValidatorWorks() {
22-
Map<String, String> sysProp = new HashMap<String, String>();
24+
Map<String, String> sysProp = new HashMap<>();
2325
sysProp.put("BROWSER", "Chrome");
2426
sysProp.put("IS_LOCAL", "true");
27+
//sysProp.put(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/ZayCo/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs");
2528
EnvironmentHelper.setEnv(sysProp);
2629
WebDriverFactory driverFactory = new WebDriverFactory();
2730
driver = driverFactory.getDriver();
@@ -30,6 +33,7 @@ public void testThatResponsiveValidatorWorks() {
3033
TestPage page = new TestPage(driver);
3134

3235
ResponsiveUIValidator uiValidator = new ResponsiveUIValidator(driver);
36+
uiValidator.setLinesColor(Color.BLACK);
3337
SoftAssertions softly = new SoftAssertions();
3438

3539
boolean success1 = uiValidator.init("Validation of Top Slider Element")
@@ -38,11 +42,31 @@ public void testThatResponsiveValidatorWorks() {
3842
.sameOffsetBottomAs(page.topTextBlock(), "Text Block")
3943
.changeMetricsUnitsTo(ResponsiveUIValidator.Units.PX)
4044
.widthBetween(300, 500)
45+
.sameSizeAs(page.gridElements())
46+
.equalLeftRightOffset()
47+
.equalTopBottomOffset()
4148
.drawMap()
4249
.validate();
4350

4451
softly.assertThat(success1).isEqualTo(true).overridingErrorMessage("Failed validation of Top Slider element");
4552

53+
boolean success0 = uiValidator.init("Validation of Grid view")
54+
.findElement(page.gridContainer(), "Grid Container")
55+
.equalLeftRightOffset()
56+
.drawMap()
57+
.validate();
58+
59+
softly.assertThat(success0).isEqualTo(true).overridingErrorMessage("Failed validation of Grid Container");
60+
61+
boolean success01 = uiValidator.init("Validation of Main container")
62+
.findElement(page.mainContainer(), "Main Container")
63+
.equalLeftRightOffset()
64+
.drawMap()
65+
.validate();
66+
67+
softly.assertThat(success01).isEqualTo(true).overridingErrorMessage("Failed validation of Main Container");
68+
69+
4670
boolean success2 = uiValidator.init("Validation of Top Text block")
4771
.findElement(page.topTextBlock(), "Top Text block")
4872
.sameOffsetRightAs(page.gridContainer(), "Grid Container")
@@ -58,6 +82,8 @@ public void testThatResponsiveValidatorWorks() {
5882
.withSameSize()
5983
.areNotOverlappedWithEachOther()
6084
.sameTopOffset()
85+
.equalLeftRightOffset()
86+
.equalTopBottomOffset()
6187
.drawMap()
6288
.validate();
6389

src/test/java/TestPage.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ public TestPage(WebDriver driver) {
1515
super(driver, 10);
1616
}
1717

18+
public WebElement mainContainer() {
19+
return getWebElement(By.className("container"));
20+
}
21+
1822
public WebElement topSlider() {
1923
return getWebElement(By.className("flexslider"));
2024
}

0 commit comments

Comments
 (0)