Skip to content

Commit 9195e18

Browse files
authored
Merge pull request #41 from kamal-kaur04/add-cross-platform-parallelization
added cross-platform parallelization
2 parents d376ebb + 2244c87 commit 9195e18

28 files changed

+383
-376
lines changed

README.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,12 @@ Master branch contains **Selenium 3** samples, for **Selenium 4 - W3C protocol**
1212

1313
* Clone the repo
1414
* Install dependencies `mvn compile`
15-
* Update `*.conf.json` files inside the `src/test/resources/conf` directory with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
15+
* Update `browserstack.conf.json` file inside the `config/` directory with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
1616

1717
### Running your tests
1818

19-
- To run a single test, run `mvn test -P single`
2019
- To run local tests, run `mvn test -P local`
21-
- To run parallel tests, run `mvn test -P parallel`
22-
- To run the test suite, run `mvn test -P suite`
20+
- To run the test suite having cross-platform with parallelization, run `mvn test -P parallel`
2321

2422
Understand how many parallel sessions you need by using our [Parallel Test Calculator](https://www.browserstack.com/automate/parallel-calculator?ref=github)
2523

@@ -30,14 +28,12 @@ Master branch contains **Selenium 3** samples, for **Selenium 4 - W3C protocol**
3028

3129
* Clone the repo
3230
* Install dependencies `gradle build`
33-
* Update `*.conf.json` files inside the `src/test/resources/conf` directory with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
31+
* Update `browserstack.conf.json` file inside the `config/` directory with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
3432

3533
### Running your tests
3634

37-
- To run a single test, run `gradle singleTest`
3835
- To run local tests, run `gradle localTest`
39-
- To run parallel tests, run `gradle parallelTest`
40-
- To run the test suite, run `gradle suiteTest`
36+
- To run the test suite having cross-platform with parallelization, run `gradle parallelTest`
4137

4238
Understand how many parallel sessions you need by using our [Parallel Test Calculator](https://www.browserstack.com/automate/parallel-calculator?ref=github)
4339

build.gradle

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ plugins {
55
repositories { mavenCentral() }
66

77
dependencies {
8-
compile 'org.testng:testng:6.9.10'
9-
compile 'commons-io:commons-io:1.3.2'
10-
compile 'org.seleniumhq.selenium:selenium-java:3.12.0'
11-
compile 'com.browserstack:browserstack-local-java:0.1.0'
12-
compile 'com.googlecode.json-simple:json-simple:1.1.1'
8+
implementation 'org.testng:testng:7.4.0'
9+
implementation 'commons-io:commons-io:1.3.2'
10+
implementation 'org.seleniumhq.selenium:selenium-java:3.141.59'
11+
implementation 'com.browserstack:browserstack-local-java:1.0.6'
12+
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
1313
}
1414

1515
group = 'com.browserstack'
@@ -21,22 +21,6 @@ tasks.withType(JavaCompile) {
2121
options.encoding = 'UTF-8'
2222
}
2323

24-
task singleTest(type: Test) {
25-
useTestNG() {
26-
dependsOn cleanTest
27-
useDefaultListeners = true
28-
suites "config/single.testng.xml"
29-
}
30-
}
31-
32-
task localTest(type: Test) {
33-
useTestNG() {
34-
dependsOn cleanTest
35-
useDefaultListeners = true
36-
suites "config/local.testng.xml"
37-
}
38-
}
39-
4024
task parallelTest(type: Test) {
4125
useTestNG() {
4226
dependsOn cleanTest
@@ -45,10 +29,10 @@ task parallelTest(type: Test) {
4529
}
4630
}
4731

48-
task suiteTest(type: Test) {
32+
task localTest(type: Test) {
4933
useTestNG() {
5034
dependsOn cleanTest
5135
useDefaultListeners = true
52-
suites "config/suite.testng.xml"
36+
suites "config/local.testng.xml"
5337
}
5438
}

config/browserstack.conf.json

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"server": "hub.browserstack.com",
3+
"user": "BROWSERSTACK_USERNAME",
4+
"key": "BROWSERSTACK_ACCESS_KEY",
5+
6+
"capabilities": {
7+
"build": "browserstack-build-1",
8+
"name": "sample_test",
9+
"browserstack.debug": "true"
10+
},
11+
12+
"profiles": {
13+
"localprofile": {
14+
"browserstack.local": "true",
15+
"localOptions": {
16+
"localIdentifier": "browserstackLocalIdentifier"
17+
}
18+
}
19+
},
20+
21+
"platforms": [
22+
{
23+
"os": "OS X",
24+
"os_version": "Big Sur",
25+
"browser": "Chrome",
26+
"browser_version": "latest"
27+
},
28+
{
29+
"os": "OS X",
30+
"os_version": "Catalina",
31+
"browser": "Safari",
32+
"browser_version": "latest"
33+
},
34+
{
35+
"os": "Windows",
36+
"os_version": "11",
37+
"browser": "Firefox",
38+
"browser_version": "latest"
39+
}
40+
]
41+
}

config/local.testng.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +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="profile" value="localprofile"/>
5+
<listeners>
6+
<listener class-name="SuiteClassIntercepter"/>
7+
</listeners>
48
<test name="LocalTest">
5-
<parameter name="config" value="local.conf.json"/>
6-
<parameter name="environment" value="chrome"/>
9+
<parameter name="platform" value="0"/>
710
<classes>
811
<class name="com.browserstack.LocalTest"/>
912
</classes>

config/parallel.testng.xml

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,38 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
3-
<suite name="Parallel" thread-count="3" parallel="tests">
4-
<test name="SingleTestEnv1">
5-
<parameter name="config" value="parallel.conf.json"/>
6-
<parameter name="environment" value="env1"/>
3+
<suite name="Cross-Platform" thread-count="3" parallel="tests">
4+
<listeners>
5+
<listener class-name="AlterSuiteClassInterceptor"/>
6+
<listener class-name="SuiteClassIntercepter"/>
7+
</listeners>
8+
<test name="PoolTest0">
79
<classes>
8-
<class name="com.browserstack.SingleTest"/>
10+
<class name="com.browserstack.suite.SuiteTest01" />
11+
<class name="com.browserstack.suite.SuiteTest02" />
912
</classes>
1013
</test>
11-
12-
<test name="SingleTestEnv2">
13-
<parameter name="config" value="parallel.conf.json"/>
14-
<parameter name="environment" value="env2"/>
14+
<test name="PoolTest1">
1515
<classes>
16-
<class name="com.browserstack.SingleTest"/>
16+
<class name="com.browserstack.suite.SuiteTest03" />
17+
<class name="com.browserstack.suite.SuiteTest04" />
1718
</classes>
1819
</test>
19-
20-
<test name="SingleTestEnv3">
21-
<parameter name="config" value="parallel.conf.json"/>
22-
<parameter name="environment" value="env3"/>
20+
<test name="PoolTest2">
2321
<classes>
24-
<class name="com.browserstack.SingleTest"/>
22+
<class name="com.browserstack.suite.SuiteTest05" />
23+
<class name="com.browserstack.suite.SuiteTest06" />
24+
</classes>
25+
</test>
26+
<test name="PoolTest3">
27+
<classes>
28+
<class name="com.browserstack.suite.SuiteTest07" />
29+
<class name="com.browserstack.suite.SuiteTest08" />
30+
</classes>
31+
</test>
32+
<test name="PoolTest4">
33+
<classes>
34+
<class name="com.browserstack.suite.SuiteTest09" />
35+
<class name="com.browserstack.suite.SuiteTest10" />
2536
</classes>
2637
</test>
2738
</suite>

config/single.testng.xml

Lines changed: 0 additions & 11 deletions
This file was deleted.

config/suite.testng.xml

Lines changed: 0 additions & 37 deletions
This file was deleted.

pom.xml

Lines changed: 23 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,19 @@
1414
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1515
<maven.compiler.source>1.6</maven.compiler.source>
1616
<maven.compiler.target>1.6</maven.compiler.target>
17+
<testng.version>7.4.0</testng.version>
1718
<surefire.version>2.19.1</surefire.version>
18-
19-
<test.file></test.file>
20-
<config.file>default</config.file>
19+
<selenium.version>3.141.59</selenium.version>
20+
<json-simple.version>1.1.1</json-simple.version>
21+
<browserstack-local-java.version>1.0.6</browserstack-local-java.version>
22+
<config.file>config/local.testng.xml</config.file>
2123
</properties>
2224

2325
<dependencies>
2426
<dependency>
2527
<groupId>org.testng</groupId>
2628
<artifactId>testng</artifactId>
27-
<version>6.9.10</version>
29+
<version>${testng.version}</version>
2830
</dependency>
2931
<dependency>
3032
<groupId>commons-io</groupId>
@@ -34,17 +36,17 @@
3436
<dependency>
3537
<groupId>org.seleniumhq.selenium</groupId>
3638
<artifactId>selenium-java</artifactId>
37-
<version>3.12.0</version>
39+
<version>${selenium.version}</version>
3840
</dependency>
3941
<dependency>
4042
<groupId>com.browserstack</groupId>
4143
<artifactId>browserstack-local-java</artifactId>
42-
<version>1.0.3</version>
44+
<version>${browserstack-local-java.version}</version>
4345
</dependency>
4446
<dependency>
4547
<groupId>com.googlecode.json-simple</groupId>
4648
<artifactId>json-simple</artifactId>
47-
<version>1.1.1</version>
49+
<version>${json-simple.version}</version>
4850
</dependency>
4951
</dependencies>
5052

@@ -53,29 +55,25 @@
5355
<plugin>
5456
<groupId>org.apache.maven.plugins</groupId>
5557
<artifactId>maven-surefire-plugin</artifactId>
56-
<version>2.18.1</version>
58+
<version>${surefire.version}</version>
59+
<configuration>
60+
<suiteXmlFiles>
61+
<suiteXmlFile>${config.file}</suiteXmlFile>
62+
</suiteXmlFiles>
63+
</configuration>
64+
</plugin>
65+
<plugin>
66+
<groupId>org.apache.maven.plugins</groupId>
67+
<artifactId>maven-compiler-plugin</artifactId>
68+
<configuration>
69+
<source>1.8</source>
70+
<target>1.8</target>
71+
</configuration>
5772
</plugin>
5873
</plugins>
5974
</build>
6075

6176
<profiles>
62-
<profile>
63-
<id>single</id>
64-
<build>
65-
<plugins>
66-
<plugin>
67-
<groupId>org.apache.maven.plugins</groupId>
68-
<artifactId>maven-surefire-plugin</artifactId>
69-
<configuration>
70-
<suiteXmlFiles>
71-
<suiteXmlFile>config/single.testng.xml</suiteXmlFile>
72-
</suiteXmlFiles>
73-
</configuration>
74-
</plugin>
75-
</plugins>
76-
</build>
77-
</profile>
78-
7977
<profile>
8078
<id>local</id>
8179
<build>
@@ -109,23 +107,5 @@
109107
</plugins>
110108
</build>
111109
</profile>
112-
113-
<profile>
114-
<id>suite</id>
115-
<build>
116-
<plugins>
117-
<plugin>
118-
<groupId>org.apache.maven.plugins</groupId>
119-
<artifactId>maven-surefire-plugin</artifactId>
120-
<configuration>
121-
<suiteXmlFiles>
122-
<suiteXmlFile>config/suite.testng.xml</suiteXmlFile>
123-
</suiteXmlFiles>
124-
</configuration>
125-
</plugin>
126-
</plugins>
127-
</build>
128-
</profile>
129110
</profiles>
130-
131111
</project>

0 commit comments

Comments
 (0)