Skip to content

Commit 5400040

Browse files
Merge pull request #26 from kamal-kaur04/migrate-cucumber-sample-to-sel4
migrate master branch to use Sel 4 compliant samples
2 parents d89ed8d + fae1c4a commit 5400040

File tree

8 files changed

+84
-51
lines changed

8 files changed

+84
-51
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,11 @@ target/
1818

1919
local.log
2020
reports
21+
.settings
22+
.gradle
23+
test-output
24+
logs
25+
build
26+
gradle
27+
.project
28+
.classpath

pom.xml

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,13 @@
1616
<maven.compiler.target>1.8</maven.compiler.target>
1717
<cucumber.version>6.9.1</cucumber.version>
1818
<testng.version>7.4.0</testng.version>
19-
<selenium-java.version>3.141.59</selenium-java.version>
19+
<selenium-java.version>4.4.0</selenium-java.version>
2020
<browserstack-local-java.version>1.0.6</browserstack-local-java.version>
2121
<json-simple.version>1.1.1</json-simple.version>
2222
<slf4j.version>1.7.30</slf4j.version>
2323
</properties>
2424

2525
<dependencies>
26-
27-
<dependency>
28-
<groupId>org.slf4j</groupId>
29-
<artifactId>slf4j-api</artifactId>
30-
<version>${slf4j.version}</version>
31-
</dependency>
32-
<dependency>
33-
<groupId>org.slf4j</groupId>
34-
<artifactId>slf4j-simple</artifactId>
35-
<version>${slf4j.version}</version>
36-
</dependency>
37-
3826
<dependency>
3927
<groupId>org.testng</groupId>
4028
<artifactId>testng</artifactId>

src/test/java/com/browserstack/pageobjects/HomePage.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import org.openqa.selenium.support.ui.ExpectedConditions;
66
import org.openqa.selenium.support.ui.WebDriverWait;
77

8+
import java.time.Duration;
9+
810
public class HomePage {
911
private WebDriver webDriver;
1012

@@ -33,7 +35,7 @@ public void clickAddToCartButton() {
3335
}
3436

3537
public void waitForCartToOpen() {
36-
new WebDriverWait(webDriver,30).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(cartPane));
38+
new WebDriverWait(webDriver, Duration.ofSeconds(30)).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(cartPane));
3739
}
3840

3941
public String getProductCartText() {

src/test/java/com/browserstack/util/Utility.java

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,7 @@ public static JSONObject getCombinedCapability(Map<String, String> envCapabiliti
1818
JSONObject capabilities = new JSONObject();
1919
JSONObject commonCapabilities = (JSONObject) config.get("capabilities");
2020
Iterator it = envCapabilities.entrySet().iterator();
21-
while (it.hasNext()) {
22-
Map.Entry pair = (Map.Entry) it.next();
23-
capabilities.put(pair.getKey().toString(), pair.getValue().toString());
24-
}
25-
it = commonCapabilities.entrySet().iterator();
26-
while (it.hasNext()) {
27-
Map.Entry pair = (Map.Entry) it.next();
28-
if (capabilities.get(pair.getKey().toString()) == null) {
29-
capabilities.put(pair.getKey().toString(), pair.getValue().toString());
30-
}
31-
}
21+
3222
String username = System.getenv("BROWSERSTACK_USERNAME");
3323
if(username == null) {
3424
username = (String) config.get("user");
@@ -38,8 +28,28 @@ public static JSONObject getCombinedCapability(Map<String, String> envCapabiliti
3828
if(accessKey == null) {
3929
accessKey = (String) config.get("key");
4030
}
41-
capabilities.put("browserstack.user", username);
42-
capabilities.put("browserstack.key", accessKey);
31+
32+
JSONObject bstackOptions = commonCapabilities.get("bstack:options") != null ? (JSONObject) commonCapabilities.get("bstack:options") : new JSONObject();
33+
bstackOptions.putIfAbsent("userName", username);
34+
bstackOptions.putIfAbsent("accessKey", accessKey);
35+
capabilities.put("bstack:options", bstackOptions);
36+
37+
while (it.hasNext()) {
38+
Map.Entry pair = (Map.Entry) it.next();
39+
capabilities.put(pair.getKey().toString(), pair.getValue());
40+
}
41+
42+
it = commonCapabilities.entrySet().iterator();
43+
while (it.hasNext()) {
44+
Map.Entry pair = (Map.Entry) it.next();
45+
if (capabilities.get(pair.getKey().toString()) == null) {
46+
capabilities.put(pair.getKey().toString(), pair.getValue());
47+
} else if (pair.getKey().toString().equalsIgnoreCase("bstack:options")) {
48+
HashMap<String, String> bstackOptionsMap = (HashMap) pair.getValue();
49+
bstackOptionsMap.putAll((HashMap) capabilities.get("bstack:options"));
50+
capabilities.put(pair.getKey().toString(), bstackOptionsMap);
51+
}
52+
}
4353
return capabilities;
4454
}
4555

@@ -49,17 +59,18 @@ public static void setSessionStatus(WebDriver webDriver, String status, String r
4959
}
5060

5161
public static boolean isLocal(ManagedWebDriver managedWebDriver) {
52-
JSONObject platform = managedWebDriver.getPlatform();
53-
return platform.get("browserstack.local") != null && platform.get("browserstack.local").toString().equalsIgnoreCase("true");
62+
JSONObject platform = (JSONObject) managedWebDriver.getPlatform().get("bstack:options");
63+
return platform.get("local") != null && platform.get("local").toString().equalsIgnoreCase("true");
5464
}
5565

5666
public static void startLocal(Local local, ManagedWebDriver managedWebDriver) {
5767
JSONParser parser = new JSONParser();
5868
Map<String, String> options = new HashMap<>();
59-
options.put("key", managedWebDriver.getPlatform().get("browserstack.key").toString());
69+
JSONObject testConfig = (JSONObject) managedWebDriver.getPlatform().get("bstack:options");
70+
options.put("key", testConfig.get("accessKey").toString());
6071
String capabilitiesConfigFile = System.getProperty("caps", "src/test/resources/conf/local.conf.json");
6172
try {
62-
JSONObject testConfig = (JSONObject) parser.parse(new FileReader(capabilitiesConfigFile));
73+
testConfig = (JSONObject) parser.parse(new FileReader(capabilitiesConfigFile));
6374
if(testConfig.containsKey("localOptions")) {
6475
JSONObject localOptions = (JSONObject) testConfig.get("localOptions");
6576
options.forEach(localOptions::putIfAbsent);

src/test/java/com/browserstack/webdriver/WebDriverFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.json.simple.JSONObject;
66
import org.json.simple.parser.JSONParser;
77
import org.json.simple.parser.ParseException;
8+
import org.openqa.selenium.MutableCapabilities;
89
import org.openqa.selenium.WebDriver;
910
import org.openqa.selenium.remote.DesiredCapabilities;
1011
import org.openqa.selenium.remote.RemoteWebDriver;
@@ -61,8 +62,7 @@ public List<JSONObject> getPlatforms() {
6162
public WebDriver createWebDriverForPlatform(JSONObject platform, String testName) {
6263
try {
6364
String URL = String.format("https://%s/wd/hub", testConfig.get("server"));
64-
DesiredCapabilities caps = new DesiredCapabilities(platform);
65-
caps.setCapability("name", testName);
65+
MutableCapabilities caps = new MutableCapabilities(platform);
6666
return new RemoteWebDriver(new URL(URL), caps);
6767
} catch (MalformedURLException var4) {
6868
throw new Error("Unable to create WebDriver", var4);

src/test/resources/conf/local.conf.json

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,25 @@
44
"key": "BROWSERSTACK_ACCESS_KEY",
55

66
"capabilities": {
7-
"build": "cucumber-java-browserstack",
8-
"browserstack.debug": true,
9-
"browserstack.local": true
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack Local Test",
10+
"debug": true,
11+
"local": true,
12+
"source": "cucumber:sample-master-v1.0"
13+
}
1014
},
1115

12-
"environments": [{
13-
"browser": "chrome"
14-
}],
15-
1616
"localOptions": {
1717
"forceLocal": true
18-
}
18+
},
19+
20+
"environments": [
21+
{
22+
"bstack:options": {
23+
"os": "OS X"
24+
},
25+
"browserName": "chrome"
26+
}
27+
]
1928
}

src/test/resources/conf/parallel.conf.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,27 @@
44
"key": "BROWSERSTACK_ACCESS_KEY",
55

66
"capabilities": {
7-
"build": "cucumber-java-browserstack",
8-
"browserstack.debug": true
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack Parallel Test",
10+
"browserVersion": "latest",
11+
"debug": true,
12+
"source": "cucumber:sample-master-v1.0"
13+
}
914
},
1015

1116
"environments": [
1217
{
13-
"browser": "chrome"
18+
"browserName": "chrome"
1419
},
1520
{
16-
"browser": "firefox"
21+
"browserName": "firefox"
1722
},
1823
{
19-
"browser": "safari"
24+
"bstack:options": {
25+
"os": "OS X"
26+
},
27+
"browserName": "safari"
2028
}
2129
]
2230
}

src/test/resources/conf/single.conf.json

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,18 @@
44
"key": "BROWSERSTACK_ACCESS_KEY",
55

66
"capabilities": {
7-
"build": "cucumber-java-browserstack",
8-
"browserstack.debug": true
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack Single Test",
10+
"browserVersion": "latest",
11+
"debug": true,
12+
"source": "cucumber:sample-master-v1.0"
13+
}
914
},
1015

11-
"environments": [{
12-
"browser": "chrome"
13-
}]
16+
"environments": [
17+
{
18+
"browserName": "chrome"
19+
}
20+
]
1421
}

0 commit comments

Comments
 (0)