Skip to content

Commit 1acc464

Browse files
committed
README added
1 parent eeaab11 commit 1acc464

File tree

7 files changed

+97
-4
lines changed

7 files changed

+97
-4
lines changed

README.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Java implementation for [Visual Knight](https://github.com/visual-knight/platform-community-edition) API
2+
Port from JavaScript implementation [link](https://github.com/visual-knight/libraries/tree/master/packages/core)
3+
4+
## Gradle
5+
```
6+
repositories {
7+
maven { url 'https://jitpack.io' }
8+
}
9+
```
10+
```
11+
dependencies {
12+
implementation 'com.github.pashidlos:visualknight_agent_java_core:${VERSION}'
13+
}
14+
```
15+
## Maven
16+
```
17+
<repositories>
18+
<repository>
19+
<id>jitpack.io</id>
20+
<url>https://jitpack.io</url>
21+
</repository>
22+
</repositories>
23+
```
24+
```
25+
<dependency>
26+
<groupId>com.github.pashidlos</groupId>
27+
<artifactId>visualknight_agent_java_core</artifactId>
28+
<version>${VERSION}</version>
29+
</dependency>
30+
```
31+
[Available versions](https://github.com/pashidlos/visualknight_agent_java_core/releases)
32+
33+
More info about https://jitpack.io/
34+
35+
## Usage
36+
* Setup options object
37+
```
38+
VisualKnightOptions visualKnightOptions = VisualKnightOptions.builder()
39+
// URL to Visual Knight backend
40+
// Required
41+
.apiEndpoint("http://localhost:3333/graphql")
42+
43+
// Your Visual Knight API key
44+
// Required
45+
.apiKey("API_KEY")
46+
47+
// Your project name or ID
48+
// Required
49+
.project("PROJECT_KEY_OR_NAME")
50+
51+
// The mismatch tolerance for the comparison, 0.01 is 1%
52+
// Optional
53+
// Default: 0.01
54+
.misMatchTolerance(0.01)
55+
56+
// Accept first testsession for a variation as baseline
57+
// Optional
58+
// Default: false
59+
.autoBaseline(false)
60+
.build();
61+
```
62+
* Create instance of `VisualKnightCore`
63+
```
64+
VisualKnightCore visualKnightCore = new VisualKnightCore(visualKnightOptions);
65+
```
66+
* Take a screenshot as String in Base64 format
67+
```
68+
// Selenium example
69+
String screenshotBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);
70+
```
71+
* Create instance of `VisualKnightCapabilities`
72+
```
73+
VisualKnightCapabilities visualKnightCapabilities = VisualKnightCapabilities.builder()
74+
// Available: 'Windows', 'Mac OS', `Puppeteer`
75+
.os("Windows")
76+
77+
// Available: 'Internet Explorer', 'Firefox', 'Safari', 'Chrome', 'Opera'
78+
.browserName("Chrome")
79+
.build()
80+
```
81+
* Process image
82+
```
83+
visualKnightCore.processScreenshot(
84+
"Name for test",
85+
screenshotBase64,
86+
visualKnightCapabilities
87+
);
88+
```

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ sourceCompatibility = 1.8
3030
dependencies {
3131
implementation 'io.aexp.nodes.graphql:nodes:0.5.0'
3232
testImplementation group: 'junit', name: 'junit', version: '4.12'
33+
testImplementation 'commons-io:commons-io:2.6'
3334
}

src/main/java/agent_java_core/VisualKnightCore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void processScreenshot(String testName, String base64Image, VisualKnightC
3232
}
3333

3434
private void processTestSessionResult(UploadScreenshotMutation uploadResult) {
35-
if (uploadResult.misMatchPercentage == null && uploadResult.isSameDimensions != false) {
35+
if (uploadResult.misMatchPercentage == null) {
3636
throw new Error("For this image is no baseline defined! -> " + uploadResult.link);
3737
}
3838

src/main/java/agent_java_core/VisualKnightOptions.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ public class VisualKnightOptions {
77
String apiEndpoint;
88
String apiKey;
99
String project;
10-
Boolean liveResult;
1110
@Builder.Default
1211
Double misMatchTolerance = 0.01;
1312
@Builder.Default

src/test/java/Example.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import agent_java_core.VisualKnightCapabilities;
22
import agent_java_core.VisualKnightOptions;
33
import agent_java_core.VisualKnightCore;
4+
import org.apache.commons.io.FileUtils;
45
import org.junit.Test;
56

7+
import java.io.File;
8+
import java.io.IOException;
69
import java.net.MalformedURLException;
10+
import java.util.Base64;
711

812
public class Example {
913

@@ -25,7 +29,7 @@ public void asd() throws MalformedURLException {
2529
}
2630

2731
@Test
28-
public void uploadScreenshot() throws MalformedURLException {
32+
public void uploadScreenshot() throws IOException {
2933
VisualKnightCapabilities visualKnightCapabilities = VisualKnightCapabilities.builder().browserName("Chrome").os("Windows").build();
3034
VisualKnightOptions visualKnightOptions = VisualKnightOptions.builder()
3135
.apiEndpoint("http://localhost:3333/graphql")
@@ -36,7 +40,8 @@ public void uploadScreenshot() throws MalformedURLException {
3640

3741
VisualKnightCore core = new VisualKnightCore(visualKnightOptions);
3842

39-
// core.uploadScreenshot("ck8spt0hc00001cn12rjlu2vl", "aasd");
43+
byte[] fileContent = FileUtils.readFileToByteArray(new File(getClass().getResource("large.png").getFile()));
44+
// core.uploadScreenshot("ck8t908ie000111pjg8z2x58o", Base64.getEncoder().encodeToString(fileContent));
4045

4146
System.out.println("END");
4247
}

src/test/resources/home_page.png

52.6 KB
Loading

src/test/resources/large.png

91.9 KB
Loading

0 commit comments

Comments
 (0)