Skip to content

Commit dccaaa9

Browse files
authored
Merge pull request #37 from vania-pooh/master
Moon 2 style capabilities support (fixes #36)
2 parents 048e82e + 717431c commit dccaaa9

File tree

6 files changed

+57
-47
lines changed

6 files changed

+57
-47
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<maven.compiler.target>11</maven.compiler.target>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1919
<swagger.version>1.6.4</swagger.version>
20-
<openapi-spec.version>1.0.15</openapi-spec.version>
20+
<openapi-spec.version>1.1.1</openapi-spec.version>
2121
<openapi-plugin.version>5.1.0</openapi-plugin.version>
2222
<jackson.version>2.13.1</jackson.version>
2323
<junit-jupiter.version>5.8.2</junit-jupiter.version>

src/main/java/com/aerokube/lightning/extensions/MobileDevice.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import javax.annotation.Nonnull;
66

7-
interface MobileDevice extends Capabilities {
7+
public interface MobileDevice extends Capabilities {
88

99
@Nonnull
1010
MobileDevice deviceName(@Nonnull String name);

src/main/java/com/aerokube/lightning/extensions/Moon.java renamed to src/main/java/com/aerokube/lightning/extensions/MoonCapabilities.java

+29-26
Original file line numberDiff line numberDiff line change
@@ -6,87 +6,96 @@
66
import com.aerokube.lightning.model.MoonOptions;
77

88
import javax.annotation.Nonnull;
9-
import java.nio.file.Path;
109
import java.time.Duration;
1110

12-
import static com.aerokube.lightning.extensions.Selenoid.rootCAEnv;
1311
import static com.aerokube.lightning.model.Capabilities.JSON_PROPERTY_MOON_COLON_OPTIONS;
1412
import static com.aerokube.lightning.model.MoonMobileDevice.OrientationEnum.LANDSCAPE;
1513

16-
public class Moon extends ExtensionCapabilities implements MobileDevice {
14+
public class MoonCapabilities extends ExtensionCapabilities implements MobileDevice {
1715

1816
private final MoonOptions moonOptions;
1917
private final MoonMobileDevice moonMobileDevice;
2018

21-
public Moon(@Nonnull Capabilities capabilities) {
19+
public MoonCapabilities(@Nonnull Capabilities capabilities) {
2220
super(capabilities);
2321
this.moonOptions = new MoonOptions();
2422
this.moonMobileDevice = new MoonMobileDevice();
2523
capabilities.capability(JSON_PROPERTY_MOON_COLON_OPTIONS, moonOptions);
2624
}
2725

2826
@Nonnull
29-
public Moon enableVNC() {
30-
moonOptions.setEnableVNC(true);
27+
public MoonCapabilities enableVideo() {
28+
moonOptions.enableVideo(true);
3129
return this;
3230
}
3331

3432
@Nonnull
35-
public Moon environmentVariable(@Nonnull String key, @Nonnull String value) {
33+
public MoonCapabilities environmentVariable(@Nonnull String key, @Nonnull String value) {
3634
moonOptions.addEnvItem(String.format("%s=%s", key, value));
3735
return this;
3836
}
3937

4038
@Nonnull
41-
public Moon logName(@Nonnull String name) {
42-
moonOptions.setLogName(name);
39+
public MoonCapabilities label(@Nonnull String key, @Nonnull String value) {
40+
moonOptions.putLabelsItem(key, value);
4341
return this;
4442
}
4543

4644
@Nonnull
47-
public Moon name(@Nonnull String name) {
45+
public MoonCapabilities name(@Nonnull String name) {
4846
moonOptions.setName(name);
4947
return this;
5048
}
5149

5250
@Nonnull
53-
public Moon screenResolution(@Nonnull String screenResolution) {
51+
public MoonCapabilities nameserver(@Nonnull String nameserver) {
52+
moonOptions.addNameserversItem(nameserver);
53+
return this;
54+
}
55+
56+
@Nonnull
57+
public MoonCapabilities host(@Nonnull String domainName, @Nonnull String ipAddress) {
58+
moonOptions.addHostsItem(String.format("%s:%s", domainName, ipAddress));
59+
return this;
60+
}
61+
62+
@Nonnull
63+
public MoonCapabilities screenResolution(@Nonnull String screenResolution) {
5464
moonOptions.setScreenResolution(screenResolution);
5565
return this;
5666
}
5767

5868
@Nonnull
59-
public Moon sessionTimeout(@Nonnull Duration duration) {
69+
public MoonCapabilities sessionTimeout(@Nonnull Duration duration) {
6070
moonOptions.setSessionTimeout(ExtensionCapabilities.golangDuration(duration));
6171
return this;
6272
}
6373

6474
@Nonnull
65-
public Moon s3KeyPattern(@Nonnull String pattern) {
66-
moonOptions.setS3KeyPattern(pattern);
75+
public MoonCapabilities pattern(@Nonnull String pattern) {
76+
moonOptions.setPattern(pattern);
6777
return this;
6878
}
6979

7080
@Nonnull
71-
public Moon timeZone(@Nonnull String timeZone) {
72-
moonOptions.setTimeZone(timeZone);
73-
return this;
81+
public MoonCapabilities timeZone(@Nonnull String timeZone) {
82+
return environmentVariable("TZ", timeZone);
7483
}
7584

7685
@Nonnull
77-
public Moon videoFrameRate(int frameRate) {
86+
public MoonCapabilities videoFrameRate(int frameRate) {
7887
moonOptions.setVideoFrameRate((long) frameRate);
7988
return this;
8089
}
8190

8291
@Nonnull
83-
public Moon videoName(@Nonnull String videoName) {
92+
public MoonCapabilities videoName(@Nonnull String videoName) {
8493
moonOptions.setVideoName(videoName);
8594
return this;
8695
}
8796

8897
@Nonnull
89-
public Moon videoScreenSize(@Nonnull String videoScreenSize) {
98+
public MoonCapabilities videoScreenSize(@Nonnull String videoScreenSize) {
9099
moonOptions.setVideoScreenSize(videoScreenSize);
91100
return this;
92101
}
@@ -109,10 +118,4 @@ public MobileDevice landscape() {
109118
return this;
110119
}
111120

112-
@Nonnull
113-
public Moon rootCertificationAuthority(@Nonnull Path certificate) {
114-
moonOptions.addEnvItem(rootCAEnv(certificate));
115-
return this;
116-
}
117-
118121
}

src/main/java/com/aerokube/lightning/extensions/Selenoid.java renamed to src/main/java/com/aerokube/lightning/extensions/SelenoidCapabilities.java

+22-16
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111

1212
import static com.aerokube.lightning.model.Capabilities.JSON_PROPERTY_SELENOID_COLON_OPTIONS;
1313

14-
public class Selenoid extends ExtensionCapabilities {
14+
public class SelenoidCapabilities extends ExtensionCapabilities {
1515

1616
private final SelenoidOptions selenoidOptions;
1717

18-
public Selenoid(@Nonnull Capabilities capabilities) {
18+
public SelenoidCapabilities(@Nonnull Capabilities capabilities) {
1919
super(capabilities);
2020
this.selenoidOptions = new SelenoidOptions();
2121
capabilities.capability(JSON_PROPERTY_SELENOID_COLON_OPTIONS, selenoidOptions);
@@ -33,85 +33,91 @@ static String rootCAEnv(@Nonnull Path certificate) {
3333
}
3434

3535
@Nonnull
36-
public Selenoid enableLog() {
36+
public SelenoidCapabilities enableLog() {
3737
selenoidOptions.setEnableLog(true);
3838
return this;
3939
}
4040

4141
@Nonnull
42-
public Selenoid enableVideo() {
42+
public SelenoidCapabilities enableVideo() {
4343
selenoidOptions.setEnableVideo(true);
4444
return this;
4545
}
4646

4747
@Nonnull
48-
public Selenoid enableVNC() {
48+
public SelenoidCapabilities enableVNC() {
4949
selenoidOptions.setEnableVNC(true);
5050
return this;
5151
}
5252

5353
@Nonnull
54-
public Selenoid environmentVariable(@Nonnull String key, @Nonnull String value) {
54+
public SelenoidCapabilities environmentVariable(@Nonnull String key, @Nonnull String value) {
5555
selenoidOptions.addEnvItem(String.format("%s=%s", key, value));
5656
return this;
5757
}
5858

5959
@Nonnull
60-
public Selenoid logName(@Nonnull String name) {
60+
public SelenoidCapabilities label(@Nonnull String key, @Nonnull String value) {
61+
selenoidOptions.putLabelsItem(key, value);
62+
return this;
63+
}
64+
65+
@Nonnull
66+
public SelenoidCapabilities logName(@Nonnull String name) {
6167
selenoidOptions.setLogName(name);
6268
return this;
6369
}
6470

6571
@Nonnull
66-
public Selenoid name(@Nonnull String name) {
72+
public SelenoidCapabilities name(@Nonnull String name) {
6773
selenoidOptions.setName(name);
6874
return this;
6975
}
7076

7177
@Nonnull
72-
public Selenoid screenResolution(@Nonnull String screenResolution) {
78+
public SelenoidCapabilities screenResolution(@Nonnull String screenResolution) {
7379
selenoidOptions.setScreenResolution(screenResolution);
7480
return this;
7581
}
7682

7783
@Nonnull
78-
public Selenoid sessionTimeout(@Nonnull Duration duration) {
84+
public SelenoidCapabilities sessionTimeout(@Nonnull Duration duration) {
7985
selenoidOptions.setSessionTimeout(ExtensionCapabilities.golangDuration(duration));
8086
return this;
8187
}
8288

8389
@Nonnull
84-
public Selenoid s3KeyPattern(@Nonnull String pattern) {
90+
public SelenoidCapabilities s3KeyPattern(@Nonnull String pattern) {
8591
selenoidOptions.setS3KeyPattern(pattern);
8692
return this;
8793
}
8894

8995
@Nonnull
90-
public Selenoid timeZone(@Nonnull String timeZone) {
96+
public SelenoidCapabilities timeZone(@Nonnull String timeZone) {
9197
selenoidOptions.setTimeZone(timeZone);
9298
return this;
9399
}
94100

95101
@Nonnull
96-
public Selenoid videoFrameRate(int frameRate) {
102+
public SelenoidCapabilities videoFrameRate(int frameRate) {
97103
selenoidOptions.setVideoFrameRate((long) frameRate);
98104
return this;
99105
}
100106

101107
@Nonnull
102-
public Selenoid videoName(@Nonnull String videoName) {
108+
public SelenoidCapabilities videoName(@Nonnull String videoName) {
103109
selenoidOptions.setVideoName(videoName);
104110
return this;
105111
}
106112

107113
@Nonnull
108-
public Selenoid videoScreenSize(@Nonnull String videoScreenSize) {
114+
public SelenoidCapabilities videoScreenSize(@Nonnull String videoScreenSize) {
109115
selenoidOptions.setVideoScreenSize(videoScreenSize);
110116
return this;
111117
}
112118

113119
@Nonnull
114-
public Selenoid rootCertificationAuthority(@Nonnull Path certificate) {
120+
public SelenoidCapabilities rootCertificationAuthority(@Nonnull Path certificate) {
115121
selenoidOptions.addEnvItem(rootCAEnv(certificate));
116122
return this;
117123
}

src/test/java/com/aerokube/lightning/SelenoidCapabilitiesTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.aerokube.lightning;
22

3-
import com.aerokube.lightning.extensions.Selenoid;
3+
import com.aerokube.lightning.extensions.SelenoidCapabilities;
44
import org.junit.jupiter.api.Test;
55

66
import java.time.Duration;
@@ -19,9 +19,10 @@ void testBasicCapabilities() {
1919
test(
2020
() -> Capabilities.create()
2121
.browserName("chrome")
22-
.extension(Selenoid.class).environmentVariable("LANG", "en_US.UTF-8")
22+
.extension(SelenoidCapabilities.class).environmentVariable("LANG", "en_US.UTF-8")
2323
.enableVNC()
2424
.enableVideo().videoName("my-video.mp4")
25+
.label("some-key", "some-value")
2526
.videoScreenSize("1280x1024").videoFrameRate(24)
2627
.s3KeyPattern("$browserName/$sessionId")
2728
.enableLog().logName("my-log.log")

src/test/java/com/aerokube/lightning/extensions/SelenoidTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void testRootCertificationAuthority() {
2727
test(
2828
() -> Capabilities.create()
2929
.firefox()
30-
.extension(Selenoid.class).rootCertificationAuthority(certPath),
30+
.extension(SelenoidCapabilities.class).rootCertificationAuthority(certPath),
3131
driver -> {
3232
String url = driver.navigation().navigate("https://self-signed.badssl.com/")
3333
.getUrl();

0 commit comments

Comments
 (0)