Skip to content

Commit

Permalink
#158 Added screen and viewport elements to page dump
Browse files Browse the repository at this point in the history
  • Loading branch information
ishubin committed Nov 15, 2015
1 parent eb6fb05 commit 49ad249
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 11 deletions.
Expand Up @@ -81,7 +81,6 @@ public void dumpPage(Browser browser, PageSpec pageSpec, String reportFolderPath
} }
} }



Set<String> objectNames = pageSpec.getObjects().keySet(); Set<String> objectNames = pageSpec.getObjects().keySet();
PageValidation pageValidation = new PageValidation(browser, browser.getPage(), pageSpec, null, null); PageValidation pageValidation = new PageValidation(browser, browser.getPage(), pageSpec, null, null);


Expand All @@ -90,7 +89,12 @@ public void dumpPage(Browser browser, PageSpec pageSpec, String reportFolderPath


List<Pattern> patterns = convertPatterns(excludedObjects); List<Pattern> patterns = convertPatterns(excludedObjects);


for (String objectName : objectNames) { Set<String> finalObjectNames = new HashSet<>();
finalObjectNames.addAll(objectNames);
finalObjectNames.add("screen");
finalObjectNames.add("viewport");

for (String objectName : finalObjectNames) {
if (!matchesExcludedPatterns(objectName, patterns)) { if (!matchesExcludedPatterns(objectName, patterns)) {
PageElement pageElement = pageValidation.findPageElement(objectName); PageElement pageElement = pageValidation.findPageElement(objectName);


Expand Down
Expand Up @@ -29,6 +29,7 @@
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;


public class MockedDriver implements WebDriver, TakesScreenshot, JavascriptExecutor { public class MockedDriver implements WebDriver, TakesScreenshot, JavascriptExecutor {
private MockedDriverPage page; private MockedDriverPage page;
Expand All @@ -37,6 +38,8 @@ public class MockedDriver implements WebDriver, TakesScreenshot, JavascriptExecu
private Dimension screenSize = new Dimension(1024, 768); private Dimension screenSize = new Dimension(1024, 768);
private List<String> allExecutedJavascript = new LinkedList<String>(); private List<String> allExecutedJavascript = new LinkedList<String>();


private List<Object> expectedJavaScriptReturnValues;

public MockedDriver() { public MockedDriver() {
} }


Expand Down Expand Up @@ -224,23 +227,41 @@ else if (xOutputType.equals(OutputType.BYTES)) {
else throw new RuntimeException("Cannot make screenshot"); else throw new RuntimeException("Cannot make screenshot");
} }


private final AtomicInteger jsExecutionSteps = new AtomicInteger(0);

@Override @Override
public Object executeScript(String s, Object... objects) { public Object executeScript(String s, Object... objects) {
allExecutedJavascript.add(s); allExecutedJavascript.add(s);


if (s.equals(GalenUtils.JS_RETRIEVE_DEVICE_PIXEL_RATIO)) { if (expectedJavaScriptReturnValues != null) {
return 1L; int step = jsExecutionSteps.getAndIncrement();
return expectedJavaScriptReturnValues.get(step);
} else {
if (s.equals(GalenUtils.JS_RETRIEVE_DEVICE_PIXEL_RATIO)) {
return 1L;
} else return null;
} }
else return null;
} }


@Override @Override
public Object executeAsyncScript(String s, Object... objects) { public Object executeAsyncScript(String s, Object... objects) {
allExecutedJavascript.add(s); allExecutedJavascript.add(s);
return null; if (expectedJavaScriptReturnValues != null) {
return expectedJavaScriptReturnValues.get(jsExecutionSteps.getAndIncrement());
} else {
return null;
}
} }


public List<String> getAllExecutedJavascript() { public List<String> getAllExecutedJavascript() {
return allExecutedJavascript; return allExecutedJavascript;
} }

public List<Object> getExpectedJavaScriptReturnValues() {
return expectedJavaScriptReturnValues;
}

public void setExpectedJavaScriptReturnValues(List<Object> expectedJavaScriptReturnValues) {
this.expectedJavaScriptReturnValues = expectedJavaScriptReturnValues;
}
} }
Expand Up @@ -27,6 +27,7 @@


import java.io.File; import java.io.File;


import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;


Expand All @@ -37,8 +38,12 @@ public void shouldCreate_pageDump() throws Exception {


String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump"; String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump";


WebDriver driver = new MockedDriver(); MockedDriver driver = new MockedDriver();
driver.get("/mocks/pages/galen4j-pagedump.json"); driver.get("/mocks/pages/galen4j-pagedump.json");
driver.setExpectedJavaScriptReturnValues(asList(
(Object) asList(0L, 0L, 300L, 1000L),
(Object) asList(0L, 0L, 300L, 500L)
));


GalenPageAction pageAction = new GalenPageActionDumpPage("Test page", "/specs/galen4j/pagedump.spec", pageDumpPath); GalenPageAction pageAction = new GalenPageActionDumpPage("Test page", "/specs/galen4j/pagedump.spec", pageDumpPath);


Expand Down
Expand Up @@ -67,8 +67,14 @@ public void checkLayout_shouldTestLayout_andReturnLayoutReport() throws IOExcept
public void dumpPage_shouldGenereate_htmlJsonReport_andStorePicturesOfElements() throws IOException { public void dumpPage_shouldGenereate_htmlJsonReport_andStorePicturesOfElements() throws IOException {
String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump"; String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump";


WebDriver driver = new MockedDriver(); MockedDriver driver = new MockedDriver();
driver.get("/mocks/pages/galen4j-pagedump.json"); driver.get("/mocks/pages/galen4j-pagedump.json");
driver.setExpectedJavaScriptReturnValues(asList(
asList(300L, 500L),
asList(300L, 1000L),
1L
));

new GalenPageDump("test page").dumpPage(driver, "/specs/galen4j/pagedump.spec", pageDumpPath); new GalenPageDump("test page").dumpPage(driver, "/specs/galen4j/pagedump.spec", pageDumpPath);


assertFileExists(pageDumpPath + "/page.json"); assertFileExists(pageDumpPath + "/page.json");
Expand All @@ -93,8 +99,13 @@ public void dumpPage_shouldGenereate_htmlJsonReport_andStorePicturesOfElements()
public void dumpPage_shouldOnlyStoreScreenshots_thatAreLessThan_theMaxAllowed() throws IOException { public void dumpPage_shouldOnlyStoreScreenshots_thatAreLessThan_theMaxAllowed() throws IOException {
String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump"; String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump";


WebDriver driver = new MockedDriver(); MockedDriver driver = new MockedDriver();
driver.get("/mocks/pages/galen4j-pagedump.json"); driver.get("/mocks/pages/galen4j-pagedump.json");
driver.setExpectedJavaScriptReturnValues(asList(
(Object) asList(0L, 0L, 300L, 1000L),
(Object) asList(0L, 0L, 300L, 500L)
));

new GalenPageDump("test page") new GalenPageDump("test page")
.setMaxWidth(80) .setMaxWidth(80)
.setMaxHeight(80) .setMaxHeight(80)
Expand All @@ -119,8 +130,13 @@ public void dumpPage_shouldOnlyStoreScreenshots_thatAreLessThan_theMaxAllowed()
public void dumpPage_shouldOnlyStoreScreenshots_withoutHtmlReport() throws IOException { public void dumpPage_shouldOnlyStoreScreenshots_withoutHtmlReport() throws IOException {
String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump"; String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump";


WebDriver driver = new MockedDriver(); MockedDriver driver = new MockedDriver();
driver.get("/mocks/pages/galen4j-pagedump.json"); driver.get("/mocks/pages/galen4j-pagedump.json");
driver.setExpectedJavaScriptReturnValues(asList(
(Object) asList(0L, 0L, 300L, 1000L),
(Object) asList(0L, 0L, 300L, 500L)
));

new GalenPageDump("test page") new GalenPageDump("test page")
.setMaxWidth(80) .setMaxWidth(80)
.setMaxHeight(80) .setMaxHeight(80)
Expand All @@ -145,8 +161,14 @@ public void dumpPage_shouldOnlyStoreScreenshots_withoutHtmlReport() throws IOExc
public void dumpPage_shouldExcludeObjects_thatMatch_givenRegex() throws IOException { public void dumpPage_shouldExcludeObjects_thatMatch_givenRegex() throws IOException {
String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump"; String pageDumpPath = Files.createTempDir().getAbsolutePath() + "/pagedump";


WebDriver driver = new MockedDriver(); MockedDriver driver = new MockedDriver();
driver.get("/mocks/pages/galen4j-pagedump.json"); driver.get("/mocks/pages/galen4j-pagedump.json");
driver.setExpectedJavaScriptReturnValues(asList(
(Object) asList(300L, 500L),
(Object) asList(300L, 1000L),
(Object) 1L
));

new GalenPageDump("test page") new GalenPageDump("test page")
.setExcludedObjects(asList( .setExcludedObjects(asList(
"big-container", "big-container",
Expand Down
Expand Up @@ -9,6 +9,14 @@
"button-save": { "button-save": {
"area": [10, 10, 100, 50], "area": [10, 10, 100, 50],
"hasImage":true "hasImage":true
},
"screen": {
"area": [0, 0, 300, 1000],
"hasImage": true
},
"viewport": {
"area": [0, 0, 300, 500],
"hasImage": true
} }
} }
} }
8 changes: 8 additions & 0 deletions galen-core/src/test/resources/pagedump/expected.json
Expand Up @@ -25,6 +25,14 @@
"menu-item-3": { "menu-item-3": {
"area": [70, 10, 20, 10], "area": [70, 10, 20, 10],
"hasImage":true "hasImage":true
},
"screen": {
"area": [0, 0, 300, 1000],
"hasImage": true
},
"viewport": {
"area": [0, 0, 300, 500],
"hasImage": true
} }
} }
} }

0 comments on commit 49ad249

Please sign in to comment.