Skip to content

Commit 83a965a

Browse files
committed
Merge remote-tracking branch 'origin' into merge-sdk-branch-in-master
2 parents 4297b48 + ea1fbe3 commit 83a965a

9 files changed

+289
-0
lines changed

config/parallel.testng.xml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Parallel" thread-count="3" parallel="tests">
4+
<parameter name="config" value="parallel.conf.json"/>
5+
<test name="SingleTestEnv1">
6+
<parameter name="environment" value="env1"/>
7+
<classes>
8+
<class name="com.browserstack.SingleTest"/>
9+
</classes>
10+
</test>
11+
12+
<test name="SingleTestEnv2">
13+
<parameter name="environment" value="env2"/>
14+
<classes>
15+
<class name="com.browserstack.SingleTest"/>
16+
</classes>
17+
</test>
18+
19+
<test name="SingleTestEnv3">
20+
<parameter name="environment" value="env3"/>
21+
<classes>
22+
<class name="com.browserstack.SingleTest"/>
23+
</classes>
24+
</test>
25+
</suite>

config/sample-local-test.testng.xml

+5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
33
<suite name="Local">
4+
<parameter name="config" value="local.conf.json"/>
45
<test name="LocalTest">
6+
<<<<<<< HEAD:config/sample-local-test.testng.xml
7+
=======
8+
<parameter name="environment" value="chrome"/>
9+
>>>>>>> origin:config/local.testng.xml
510
<classes>
611
<class name="com.browserstack.LocalTest"/>
712
</classes>

config/single.testng.xml

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Single">
4+
<parameter name="config" value="single.conf.json"/>
5+
<test name="SingleTest">
6+
<parameter name="environment" value="chrome"/>
7+
<classes>
8+
<class name="com.browserstack.SingleTest"/>
9+
</classes>
10+
</test>
11+
</suite>

config/suite.testng.xml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3+
<suite name="Pool" parallel="tests">
4+
<parameter name="config" value="suite.conf.json"/>
5+
<test name="PoolTestChrome" thread-count="3" parallel="classes">
6+
<parameter name="environment" value="chrome"/>
7+
<classes>
8+
<class name="com.browserstack.suite.SuiteTest01"/>
9+
<class name="com.browserstack.suite.SuiteTest02"/>
10+
<class name="com.browserstack.suite.SuiteTest03"/>
11+
<class name="com.browserstack.suite.SuiteTest04"/>
12+
<class name="com.browserstack.suite.SuiteTest05"/>
13+
<class name="com.browserstack.suite.SuiteTest06"/>
14+
<class name="com.browserstack.suite.SuiteTest07"/>
15+
<class name="com.browserstack.suite.SuiteTest08"/>
16+
<class name="com.browserstack.suite.SuiteTest09"/>
17+
<class name="com.browserstack.suite.SuiteTest10"/>
18+
</classes>
19+
</test>
20+
21+
<test name="PoolTestFirefox" thread-count="3" parallel="classes">
22+
<parameter name="environment" value="firefox"/>
23+
<classes>
24+
<class name="com.browserstack.suite.SuiteTest01"/>
25+
<class name="com.browserstack.suite.SuiteTest02"/>
26+
<class name="com.browserstack.suite.SuiteTest03"/>
27+
<class name="com.browserstack.suite.SuiteTest04"/>
28+
<class name="com.browserstack.suite.SuiteTest05"/>
29+
<class name="com.browserstack.suite.SuiteTest06"/>
30+
<class name="com.browserstack.suite.SuiteTest07"/>
31+
<class name="com.browserstack.suite.SuiteTest08"/>
32+
<class name="com.browserstack.suite.SuiteTest09"/>
33+
<class name="com.browserstack.suite.SuiteTest10"/>
34+
</classes>
35+
</test>
36+
</suite>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package com.browserstack;
2+
3+
import java.io.FileReader;
4+
import java.net.URL;
5+
import java.util.HashMap;
6+
import java.util.Iterator;
7+
import java.util.Map;
8+
9+
import com.browserstack.local.Local;
10+
11+
import org.json.simple.JSONObject;
12+
import org.json.simple.parser.JSONParser;
13+
import org.openqa.selenium.WebDriver;
14+
import org.openqa.selenium.MutableCapabilities;
15+
import org.openqa.selenium.remote.RemoteWebDriver;
16+
import org.testng.annotations.*;
17+
18+
public class BrowserStackTestNGTest {
19+
public WebDriver driver;
20+
private static Local l;
21+
private static JSONObject config;
22+
private static Map<String, Object> commonCapabilities;
23+
private static String username;
24+
private static String accessKey;
25+
26+
@BeforeSuite(alwaysRun=true)
27+
@Parameters(value = { "config" })
28+
public void beforeSuite(String config_file) throws Exception {
29+
JSONParser parser = new JSONParser();
30+
config = (JSONObject) parser.parse(new FileReader("src/test/resources/conf/" + config_file));
31+
commonCapabilities = (Map<String, Object>) config.get("capabilities");
32+
HashMap bstackOptionsMap = (HashMap) commonCapabilities.get("bstack:options");
33+
34+
35+
username = System.getenv("BROWSERSTACK_USERNAME");
36+
if (username == null) {
37+
username = (String) config.get("user");
38+
}
39+
40+
accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
41+
if (accessKey == null) {
42+
accessKey = (String) config.get("key");
43+
}
44+
try {
45+
if ((bstackOptionsMap.get("local") != null &&
46+
bstackOptionsMap.get("local").toString().equalsIgnoreCase("true") && (l == null))) {
47+
l = new Local();
48+
Map<String, String> options = new HashMap<String, String>();
49+
options.put("key", accessKey);
50+
l.start(options);
51+
}
52+
} catch (Exception e) {
53+
System.out.println("Error while start local - " + e);
54+
}
55+
}
56+
57+
@BeforeMethod(alwaysRun = true)
58+
@org.testng.annotations.Parameters(value = { "config", "environment" })
59+
@SuppressWarnings("unchecked")
60+
public void setUp(String config_file, String environment) throws Exception {
61+
JSONParser parser = new JSONParser();
62+
config = (JSONObject) parser.parse(new FileReader("src/test/resources/conf/" + config_file));
63+
JSONObject envs = (JSONObject) config.get("environments");
64+
65+
MutableCapabilities capabilities = new MutableCapabilities();
66+
67+
Map<String, Object> envCapabilities = (Map<String, Object>) envs.get(environment);
68+
Iterator it = envCapabilities.entrySet().iterator();
69+
while (it.hasNext()) {
70+
Map.Entry pair = (Map.Entry) it.next();
71+
capabilities.setCapability(pair.getKey().toString(), pair.getValue());
72+
}
73+
74+
commonCapabilities = (Map<String, Object>) config.get("capabilities");
75+
it = commonCapabilities.entrySet().iterator();
76+
while (it.hasNext()) {
77+
Map.Entry pair = (Map.Entry) it.next();
78+
if (capabilities.getCapability(pair.getKey().toString()) == null) {
79+
capabilities.setCapability(pair.getKey().toString(), pair.getValue());
80+
} else if (pair.getKey().toString().equalsIgnoreCase("bstack:options")) {
81+
HashMap bstackOptionsMap = (HashMap) pair.getValue();
82+
bstackOptionsMap.putAll((HashMap) capabilities.getCapability("bstack:options"));
83+
capabilities.setCapability(pair.getKey().toString(), bstackOptionsMap);
84+
}
85+
}
86+
87+
if (capabilities.getCapability("bstack:options") != null) {
88+
HashMap bstackOptionsMap = (HashMap) capabilities.getCapability("bstack:options");
89+
if ((bstackOptionsMap.get("local") != null &&
90+
bstackOptionsMap.get("local").toString().equalsIgnoreCase("true") && (l == null || !l.isRunning()))) {
91+
l = new Local();
92+
Map<String, String> options = new HashMap<String, String>();
93+
options.put("key", accessKey);
94+
l.start(options);
95+
}
96+
bstackOptionsMap.put("source", "testng:sample-master:v1.0");
97+
}
98+
99+
driver = new RemoteWebDriver(
100+
new URL("http://" + username + ":" + accessKey + "@" + config.get("server") + "/wd/hub"), capabilities);
101+
}
102+
103+
@AfterMethod(alwaysRun = true)
104+
public void tearDown() {
105+
driver.quit();
106+
}
107+
108+
@AfterSuite(alwaysRun = true)
109+
public void afterSuite() throws Exception {
110+
if (l != null) l.stop();
111+
}
112+
}
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"server": "hub-cloud.browserstack.com",
3+
"user": "BROWSERSTACK_USERNAME",
4+
"key": "BROWSERSTACK_ACCESS_KEY",
5+
6+
"capabilities": {
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack local testng",
10+
"debug": true,
11+
"local": true
12+
}
13+
},
14+
15+
"environments": {
16+
"chrome": {
17+
"browserName": "chrome"
18+
}
19+
}
20+
}
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"server": "hub-cloud.browserstack.com",
3+
"user": "BROWSERSTACK_USERNAME",
4+
"key": "BROWSERSTACK_ACCESS_KEY",
5+
6+
"capabilities": {
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack parallel testng",
10+
"browserVersion": "latest",
11+
"debug": true
12+
}
13+
},
14+
15+
"environments": {
16+
"env1": {
17+
"browserName": "chrome"
18+
},
19+
"env2": {
20+
"browserName": "firefox"
21+
},
22+
"env3": {
23+
"bstack:options": {
24+
"os": "OS X"
25+
},
26+
"browserName": "safari"
27+
}
28+
}
29+
}
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"server": "hub-cloud.browserstack.com",
3+
"user": "BROWSERSTACK_USERNAME",
4+
"key": "BROWSERSTACK_ACCESS_KEY",
5+
6+
"capabilities": {
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack single testng",
10+
"browserVersion": "latest",
11+
"debug": true
12+
}
13+
},
14+
15+
"environments": {
16+
"chrome": {
17+
"browserName": "chrome"
18+
}
19+
}
20+
}
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"server": "hub-cloud.browserstack.com",
3+
"user": "BROWSERSTACK_USERNAME",
4+
"key": "BROWSERSTACK_ACCESS_KEY",
5+
6+
"capabilities": {
7+
"bstack:options": {
8+
"buildName": "browserstack-build-1",
9+
"sessionName": "BStack suite testng",
10+
"debug": true
11+
}
12+
},
13+
14+
"environments": {
15+
"chrome": {
16+
"browserName": "chrome"
17+
},
18+
"firefox": {
19+
"browserName": "firefox"
20+
},
21+
"safari": {
22+
"bstack:options": {
23+
"os": "OS X"
24+
},
25+
"browserName": "safari"
26+
},
27+
"ie": {
28+
"browserName": "internet explorer"
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)