Skip to content

Commit 47b092a

Browse files
authored
Merge pull request #89 from ITArray/improve-html-report
Improve html report
2 parents 8b148b2 + 3986f63 commit 47b092a

File tree

8 files changed

+542
-102
lines changed

8 files changed

+542
-102
lines changed

pom.xml

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>net.itarray</groupId>
88
<artifactId>automotion</artifactId>
9-
<version>2.0.7-rc1</version>
9+
<version>2.1.0-rc1</version>
1010
<name>Automotion</name>
1111
<description>Library for smart visual automation testing</description>
1212
<url>https://automotion.itarray.net</url>
@@ -82,7 +82,20 @@
8282
</execution>
8383
</executions>
8484
</plugin>
85-
85+
<plugin>
86+
<groupId>net.itarray</groupId>
87+
<artifactId>automotion-maven-plugin</artifactId>
88+
<version>1.0.5</version>
89+
<!--<executions>-->
90+
<!--<execution>-->
91+
<!--<id>automotion</id>-->
92+
<!--<phase>install</phase>-->
93+
<!--<goals>-->
94+
<!--<goal>automotion-report</goal>-->
95+
<!--</goals>-->
96+
<!--</execution>-->
97+
<!--</executions>-->
98+
</plugin>
8699
<plugin>
87100
<groupId>org.apache.maven.plugins</groupId>
88101
<artifactId>maven-javadoc-plugin</artifactId>
@@ -98,7 +111,8 @@
98111
<additionalparam>-Xdoclint:none</additionalparam>
99112
<javadocDirectory>${project.basedir}/target/generated-sources/apidocs</javadocDirectory>
100113
<failOnError>false</failOnError>
101-
<excludePackageNames>net.itarray.automotion.internal:net.itarray.automotion.internal.*</excludePackageNames>
114+
<excludePackageNames>net.itarray.automotion.internal:net.itarray.automotion.internal.*
115+
</excludePackageNames>
102116
</configuration>
103117
</plugin>
104118
<plugin>
@@ -126,7 +140,11 @@
126140
</execution>
127141
</executions>
128142
</plugin>
129-
143+
<plugin>
144+
<groupId>net.itarray</groupId>
145+
<artifactId>automotion-maven-plugin</artifactId>
146+
<version>1.0.5</version>
147+
</plugin>
130148
</plugins>
131149
</build>
132150

@@ -145,17 +163,17 @@
145163
<dependency>
146164
<groupId>org.seleniumhq.selenium</groupId>
147165
<artifactId>selenium-java</artifactId>
148-
<version>3.7.1</version>
166+
<version>3.9.1</version>
149167
</dependency>
150168
<dependency>
151169
<groupId>org.seleniumhq.selenium</groupId>
152170
<artifactId>selenium-server</artifactId>
153-
<version>3.7.1</version>
171+
<version>3.9.1</version>
154172
</dependency>
155173
<dependency>
156174
<groupId>org.seleniumhq.selenium</groupId>
157175
<artifactId>selenium-remote-driver</artifactId>
158-
<version>3.7.1</version>
176+
<version>3.9.1</version>
159177
</dependency>
160178
<dependency>
161179
<groupId>io.appium</groupId>
@@ -165,17 +183,17 @@
165183
<dependency>
166184
<groupId>com.google.guava</groupId>
167185
<artifactId>guava</artifactId>
168-
<version>23.5-jre</version>
186+
<version>24.0-jre</version>
169187
</dependency>
170188
<dependency>
171189
<groupId>org.apache.httpcomponents</groupId>
172190
<artifactId>httpclient</artifactId>
173-
<version>4.5.3</version>
191+
<version>4.5.5</version>
174192
</dependency>
175193
<dependency>
176194
<groupId>org.apache.httpcomponents</groupId>
177195
<artifactId>httpmime</artifactId>
178-
<version>4.5.3</version>
196+
<version>4.5.5</version>
179197
</dependency>
180198
<dependency>
181199
<groupId>org.apache.commons</groupId>
@@ -195,7 +213,7 @@
195213
<dependency>
196214
<groupId>javax.mail</groupId>
197215
<artifactId>javax.mail-api</artifactId>
198-
<version>1.6.0</version>
216+
<version>1.6.1</version>
199217
</dependency>
200218
<dependency>
201219
<groupId>com.optimaize.languagedetector</groupId>
@@ -205,7 +223,7 @@
205223
<dependency>
206224
<groupId>com.codeborne</groupId>
207225
<artifactId>phantomjsdriver</artifactId>
208-
<version>1.4.3</version>
226+
<version>1.4.4</version>
209227
<exclusions>
210228
<exclusion>
211229
<groupId>org.seleniumhq.selenium</groupId>
@@ -224,18 +242,18 @@
224242
<dependency>
225243
<groupId>com.webfirmframework</groupId>
226244
<artifactId>wffweb</artifactId>
227-
<version>2.1.13</version>
245+
<version>3.0.0</version>
228246
</dependency>
229247
<dependency>
230248
<groupId>org.assertj</groupId>
231249
<artifactId>assertj-core</artifactId>
232-
<version>3.2.0</version>
250+
<version>3.9.1</version>
233251
<scope>test</scope>
234252
</dependency>
235253
<dependency>
236254
<groupId>org.mockito</groupId>
237255
<artifactId>mockito-core</artifactId>
238-
<version>2.8.47</version>
256+
<version>2.15.0</version>
239257
<scope>test</scope>
240258
</dependency>
241259
<dependency>

src/main/java/net/itarray/automotion/internal/DrawableScreenshot.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,29 @@
1010
import java.io.File;
1111
import java.io.IOException;
1212

13-
import static net.itarray.automotion.validation.Constants.*;
13+
import static net.itarray.automotion.validation.Constants.TARGET_AUTOMOTION_IMG;
1414

1515
public class DrawableScreenshot {
1616

1717
private final DrawingConfiguration drawingConfiguration;
18+
private final Vector extend;
1819
private TransformedGraphics graphics;
1920
private File screenshotName;
2021
private File drawingsOutput;
2122
private BufferedImage drawings;
22-
private final Vector extend;
2323

2424
public DrawableScreenshot(Vector extend, SimpleTransform transform, DrawingConfiguration drawingConfiguration, String rootElementReadableName, File screenshotName) {
2525
this.drawingConfiguration = drawingConfiguration;
2626
this.screenshotName = screenshotName;
27-
drawingsOutput = new File(TARGET_AUTOMOTION_IMG + rootElementReadableName.replace(" ", "") + "-draw-" + System.currentTimeMillis() + Helper.getGeneratedStringWithLength(7) + ".png");
27+
File imgFolder = new File(TARGET_AUTOMOTION_IMG);
28+
if (!imgFolder.exists()) {
29+
imgFolder.mkdir();
30+
}
31+
drawingsOutput = new File(TARGET_AUTOMOTION_IMG + rootElementReadableName.replaceAll("[\\W]|_", "") + "-draw-" + System.currentTimeMillis() + Helper.getGeneratedStringWithLength(7) + ".png");
2832

2933
try {
3034
this.extend = extend;
31-
drawings = new BufferedImage(extend.getX().intValue(), extend.getY().intValue(),
32-
BufferedImage.TYPE_INT_ARGB);
35+
drawings = new BufferedImage(extend.getX().intValue(), extend.getY().intValue(), BufferedImage.TYPE_INT_ARGB);
3336

3437
Graphics2D g2d = drawings.createGraphics();
3538

@@ -41,7 +44,7 @@ public DrawableScreenshot(Vector extend, SimpleTransform transform, DrawingConfi
4144
}
4245

4346
public static File takeScreenshot(DriverFacade driver, String rootElementReadableName) {
44-
File screenshotName = new File(TARGET_AUTOMOTION_IMG + rootElementReadableName.replace(" ", "") + "-" + System.currentTimeMillis() + Helper.getGeneratedStringWithLength(7) + ".png");
47+
File screenshotName = new File(TARGET_AUTOMOTION_IMG + rootElementReadableName.replaceAll("[\\W]|_", "") + "-" + System.currentTimeMillis() + Helper.getGeneratedStringWithLength(7) + ".png");
4548
driver.takeScreenshot(screenshotName);
4649
return screenshotName;
4750
}
@@ -66,12 +69,14 @@ public void drawHorizontalLine(Scalar y) {
6669

6770
public void saveDrawing() {
6871
try {
69-
ImageIO.write(drawings, "png", drawingsOutput);
70-
} catch (IOException e) {
71-
throw new RuntimeException("Writing file failed for " + drawingsOutput , e);
72-
}
72+
if (drawings != null && drawingsOutput != null) {
73+
ImageIO.write(drawings, "png", drawingsOutput);
74+
}
75+
} catch (NullPointerException | IOException ignored) {}
7376

74-
drawings.getGraphics().dispose();
77+
if (drawings != null) {
78+
drawings.getGraphics().dispose();
79+
}
7580
}
7681

7782
public void drawRoot(UIElement rootElement) {
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package net.itarray.automotion.internal;
2+
3+
import com.webfirmframework.wffweb.tag.html.Body;
4+
import com.webfirmframework.wffweb.tag.html.Html;
5+
import com.webfirmframework.wffweb.tag.html.TitleTag;
6+
import com.webfirmframework.wffweb.tag.html.attribute.Href;
7+
import com.webfirmframework.wffweb.tag.html.attribute.global.Style;
8+
import com.webfirmframework.wffweb.tag.html.links.A;
9+
import com.webfirmframework.wffweb.tag.html.lists.Li;
10+
import com.webfirmframework.wffweb.tag.html.lists.Ol;
11+
import com.webfirmframework.wffweb.tag.html.metainfo.Head;
12+
import com.webfirmframework.wffweb.tag.htmlwff.NoTag;
13+
14+
import java.io.BufferedOutputStream;
15+
import java.io.File;
16+
import java.io.FileOutputStream;
17+
import java.io.IOException;
18+
import java.util.ArrayList;
19+
import java.util.List;
20+
21+
import static net.itarray.automotion.validation.Constants.TARGET_AUTOMOTION;
22+
import static net.itarray.automotion.validation.Constants.TARGET_AUTOMOTION_HTML;
23+
24+
public class FinalReportBuilder {
25+
26+
public void execute() {
27+
File folder = new File(TARGET_AUTOMOTION_HTML);
28+
File[] listOfFiles = folder.listFiles();
29+
List<String> files = new ArrayList<>();
30+
if (listOfFiles != null) {
31+
for (File file : listOfFiles) {
32+
files.add(file.getName());
33+
}
34+
}
35+
36+
Html html = buildHtml(files);
37+
38+
File report = new File(TARGET_AUTOMOTION + "index.html");
39+
report.getParentFile().mkdirs();
40+
try (FileOutputStream fos = new FileOutputStream(report);
41+
BufferedOutputStream bos = new BufferedOutputStream(fos);) {
42+
43+
html.toOutputStream(bos);
44+
bos.flush();
45+
} catch (IOException e) {
46+
e.printStackTrace();
47+
}
48+
}
49+
50+
private Html buildHtml(List<String> files) {
51+
return new Html(null,
52+
new Style("background-color: #fff")) {{
53+
super.setPrependDocType(true);
54+
new Head(this) {{
55+
new TitleTag(this) {{
56+
new NoTag(this, "Automotion report");
57+
}};
58+
new NoTag(this, "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
59+
new NoTag(this, "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\">");
60+
61+
new NoTag(this, "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js\"></script>");
62+
new NoTag(this, "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" integrity=\"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u\" crossorigin=\"anonymous\">");
63+
new NoTag(this, "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css\" integrity=\"sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp\" crossorigin=\"anonymous\">");
64+
new NoTag(this, "<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\" integrity=\"sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa\" crossorigin=\"anonymous\"></script>");
65+
}};
66+
67+
new Body(this) {{
68+
new Ol(this) {{
69+
for (String s : files) {
70+
71+
new Li(this) {{
72+
73+
new A(this,
74+
new Href("html/" + s)) {{
75+
new NoTag(this, s);
76+
}};
77+
}};
78+
}
79+
}};
80+
}};
81+
}};
82+
}
83+
}

0 commit comments

Comments
 (0)