diff --git a/README.md b/README.md
index 3b16806..5409240 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,12 @@ This repository demonstrates how to run Appium tests in [TestNG](http://testng.o

+## Based on
+
+These code samples are currently based on:
+
+- **Appium-Java-Client:** `8.1.1`
+- **Protocol:** `W3C`
## Setup
### Requirements
@@ -41,18 +47,18 @@ Getting Started with Appium tests in TestNg on BrowserStack couldn't be easier!
### **Run first test :**
-- Switch to `run_first_test` directory under [Android examples](android/testng-examples) or [iOS examples](ios/testng-examples)
-- Follow the steps outlined in the documentation - [Get Started with your first test on App Automate](https://www.browserstack.com/docs/app-automate/appium/getting-started/java/testng)
+- Update `first.conf.json` file inside the `src/test/resources/com/browserstack/run_first_test` with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
+- Run `mvn test -P first`
### **Speed up test execution with parallel testing :**
-- Switch to `run_parallel_test` directory under [Android examples](android/testng-examples/) or [iOS examples](ios/testng-examples/)
-- Follow the steps outlined in the documentation - [Get Started with parallel testing on App Automate](https://www.browserstack.com/docs/app-automate/appium/getting-started/java/testng/parallelize-tests)
+- Update `parallel.conf.json` file inside the `src/test/resources/com/browserstack/run_parallel_test` with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
+- Run `mvn test -P parallel`
### **Use Local testing for apps that access resources hosted in development or testing environments :**
-- Switch to `run_local_test` directory under [Android examples](android/testng-examples/) or [iOS examples](ios/testng-examples/)
-- Follow the steps outlined in the documentation - [Get Started with Local testing on App Automate](https://www.browserstack.com/docs/app-automate/appium/getting-started/java/testng/local-testing)
+- Update `local.conf.json` file inside the `src/test/resources/com/browserstack/run_local_test` with your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings)
+- Run `mvn test -P local`
**Note**: If you are facing any issues, refer [Getting Help section](#Getting-Help)
diff --git a/android/testng-examples/pom.xml b/android/testng-examples/pom.xml
index 0d96421..c5a23e0 100644
--- a/android/testng-examples/pom.xml
+++ b/android/testng-examples/pom.xml
@@ -22,22 +22,22 @@
org.testng
testng
- 6.9.10
+ 7.6.1
io.appium
java-client
- 7.0.0
+ 8.1.1
commons-io
commons-io
- 1.3.2
+ 2.11.0
org.seleniumhq.selenium
selenium-java
- 3.141.59
+ 4.4.0
com.browserstack
diff --git a/android/testng-examples/src/test/java/com/browserstack/run_local_test/BrowserStackTestNGTest.java b/android/testng-examples/src/test/java/com/browserstack/BrowserStackTestNGTest.java
similarity index 51%
rename from android/testng-examples/src/test/java/com/browserstack/run_local_test/BrowserStackTestNGTest.java
rename to android/testng-examples/src/test/java/com/browserstack/BrowserStackTestNGTest.java
index 1bbfe29..ef88a76 100644
--- a/android/testng-examples/src/test/java/com/browserstack/run_local_test/BrowserStackTestNGTest.java
+++ b/android/testng-examples/src/test/java/com/browserstack/BrowserStackTestNGTest.java
@@ -1,9 +1,10 @@
-package com.browserstack.run_local_test;
+package com.browserstack;
import com.browserstack.local.Local;
import java.net.URL;
import java.util.Map;
import java.util.HashMap;
+
import java.util.Iterator;
import java.io.FileReader;
import org.json.simple.JSONObject;
@@ -11,65 +12,71 @@
import org.json.simple.JSONArray;
import io.appium.java_client.android.AndroidDriver;
-import io.appium.java_client.android.AndroidElement;
-
-import org.openqa.selenium.remote.DesiredCapabilities;
+import io.appium.java_client.android.options.UiAutomator2Options;
+import org.openqa.selenium.WebElement;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
public class BrowserStackTestNGTest {
- public AndroidDriver driver;
+ public AndroidDriver driver;
private Local local;
@BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
+ @org.testng.annotations.Parameters(value = { "config", "deviceIndex" })
+ public void setUp(String config_file, String deviceIndex) throws Exception {
JSONParser parser = new JSONParser();
- JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/run_local_test/local.conf.json"));
- JSONArray envs = (JSONArray) config.get("environments");
+ JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/" + config_file));
- DesiredCapabilities capabilities = new DesiredCapabilities();
+ UiAutomator2Options options = new UiAutomator2Options();
- Map envCapabilities = (Map) envs.get(0);
+ JSONArray envs = (JSONArray) config.get("environments");
+ Map envCapabilities = (Map) envs.get(Integer.parseInt(deviceIndex));
Iterator it = envCapabilities.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
- capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
+ options.setCapability(pair.getKey().toString(), pair.getValue().toString());
}
Map commonCapabilities = (Map) config.get("capabilities");
it = commonCapabilities.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
- if(capabilities.getCapability(pair.getKey().toString()) == null){
- capabilities.setCapability(pair.getKey().toString(), pair.getValue());
+ if(options.getCapability(pair.getKey().toString()) == null){
+ options.setCapability(pair.getKey().toString(), pair.getValue());
+ } else if (pair.getKey().toString().equalsIgnoreCase("bstack:options")){
+ HashMap bstackOptionsMap = (HashMap) pair.getValue();
+ bstackOptionsMap.putAll((HashMap) options.getCapability("bstack:options"));
+ options.setCapability(pair.getKey().toString(), bstackOptionsMap);
}
}
+ JSONObject browserstackOptions = (JSONObject) options.getCapability("bstack:options");
+
String username = System.getenv("BROWSERSTACK_USERNAME");
if(username == null) {
- username = (String) config.get("username");
+ username = (String) browserstackOptions.get("userName");
}
String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
if(accessKey == null) {
- accessKey = (String) config.get("access_key");
+ accessKey = (String) browserstackOptions.get("accessKey");
}
String app = System.getenv("BROWSERSTACK_APP_ID");
if(app != null && !app.isEmpty()) {
- capabilities.setCapability("app", app);
+ options.setCapability("app", app);
}
- if(capabilities.getCapability("browserstack.local") != null && capabilities.getCapability("browserstack.local") == "true"){
+ if(browserstackOptions.get("local") != null && browserstackOptions.get("local").toString() == "true"){
local = new Local();
- Map options = new HashMap();
- options.put("key", accessKey);
- local.start(options);
+ Map LocalOptions = new HashMap();
+ LocalOptions.put("key", accessKey);
+ local.start(LocalOptions);
}
- driver = new AndroidDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);
+ driver = new AndroidDriver(new URL("http://"+config.get("server")+"/wd/hub"), options);
}
@AfterMethod(alwaysRun=true)
diff --git a/android/testng-examples/src/test/java/com/browserstack/FirstTest.java b/android/testng-examples/src/test/java/com/browserstack/FirstTest.java
new file mode 100644
index 0000000..f276f19
--- /dev/null
+++ b/android/testng-examples/src/test/java/com/browserstack/FirstTest.java
@@ -0,0 +1,30 @@
+package com.browserstack;
+
+import io.appium.java_client.AppiumBy;
+
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.WebElement;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import java.util.List;
+import java.time.Duration;
+
+public class FirstTest extends BrowserStackTestNGTest {
+
+ @Test
+ public void test() throws Exception {
+ WebElement searchElement = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Search Wikipedia")));
+
+ searchElement.click();
+ WebElement insertTextElement = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.id("org.wikipedia.alpha:id/search_src_text")));
+ insertTextElement.sendKeys("BrowserStack");
+ Thread.sleep(5000);
+
+ List allProductsName = driver.findElements(AppiumBy.className("android.widget.TextView"));
+ Assert.assertTrue(allProductsName.size() > 0);
+ }
+}
diff --git a/android/testng-examples/src/test/java/com/browserstack/run_local_test/LocalTest.java b/android/testng-examples/src/test/java/com/browserstack/LocalTest.java
similarity index 66%
rename from android/testng-examples/src/test/java/com/browserstack/run_local_test/LocalTest.java
rename to android/testng-examples/src/test/java/com/browserstack/LocalTest.java
index c682666..6dd40ce 100644
--- a/android/testng-examples/src/test/java/com/browserstack/run_local_test/LocalTest.java
+++ b/android/testng-examples/src/test/java/com/browserstack/LocalTest.java
@@ -1,15 +1,16 @@
-package com.browserstack.run_local_test;
+package com.browserstack;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.File;
import java.util.List;
+import java.time.Duration;
import org.apache.commons.io.FileUtils;
-import io.appium.java_client.MobileBy;
-import io.appium.java_client.android.AndroidElement;
+import io.appium.java_client.AppiumBy;
+import org.openqa.selenium.WebElement;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.support.ui.WebDriverWait;
@@ -19,16 +20,16 @@ public class LocalTest extends BrowserStackTestNGTest {
@Test
public void test() throws Exception {
- AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.id("com.example.android.basicnetworking:id/test_action")));
+ WebElement searchElement = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.id("com.example.android.basicnetworking:id/test_action")));
searchElement.click();
- AndroidElement insertTextElement = (AndroidElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.className("android.widget.TextView")));
+ WebElement insertTextElement = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.className("android.widget.TextView")));
- AndroidElement testElement = null;
- List allTextViewElements = driver.findElementsByClassName("android.widget.TextView");
+ WebElement testElement = null;
+ List allTextViewElements = driver.findElements(AppiumBy.className("android.widget.TextView"));
Thread.sleep(10);
- for(AndroidElement textElement : allTextViewElements) {
+ for(WebElement textElement : allTextViewElements) {
if(textElement.getText().contains("The active connection is")) {
testElement = textElement;
}
diff --git a/android/testng-examples/src/test/java/com/browserstack/ParallelTest.java b/android/testng-examples/src/test/java/com/browserstack/ParallelTest.java
new file mode 100644
index 0000000..07cd0a0
--- /dev/null
+++ b/android/testng-examples/src/test/java/com/browserstack/ParallelTest.java
@@ -0,0 +1,29 @@
+package com.browserstack;
+
+import io.appium.java_client.AppiumBy;
+
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.WebElement;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import java.util.List;
+import java.time.Duration;
+
+public class ParallelTest extends BrowserStackTestNGTest {
+
+ @Test
+ public void test() throws Exception {
+ WebElement searchElement = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Search Wikipedia")));
+ searchElement.click();
+ WebElement insertTextElement = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.id("org.wikipedia.alpha:id/search_src_text")));
+ insertTextElement.sendKeys("BrowserStack");
+ Thread.sleep(5000);
+
+ List allProductsName = driver.findElements(AppiumBy.className("android.widget.TextView"));
+ Assert.assertTrue(allProductsName.size() > 0);
+ }
+}
diff --git a/android/testng-examples/src/test/java/com/browserstack/run_first_test/BrowserStackTestNGTest.java b/android/testng-examples/src/test/java/com/browserstack/run_first_test/BrowserStackTestNGTest.java
deleted file mode 100644
index d763a6d..0000000
--- a/android/testng-examples/src/test/java/com/browserstack/run_first_test/BrowserStackTestNGTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.browserstack.run_first_test;
-
-import java.net.URL;
-import java.util.Map;
-import java.util.Iterator;
-import java.io.FileReader;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.JSONArray;
-
-import io.appium.java_client.android.AndroidDriver;
-import io.appium.java_client.android.AndroidElement;
-
-import org.openqa.selenium.remote.DesiredCapabilities;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.AfterMethod;
-
-
-public class BrowserStackTestNGTest {
- public AndroidDriver driver;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- JSONParser parser = new JSONParser();
- JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/run_first_test/first.conf.json"));
-
- DesiredCapabilities capabilities = new DesiredCapabilities();
-
- JSONArray envs = (JSONArray) config.get("environments");
- Map envCapabilities = (Map) envs.get(0);
- Iterator it = envCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
- }
-
- Map commonCapabilities = (Map) config.get("capabilities");
- it = commonCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- if(capabilities.getCapability(pair.getKey().toString()) == null){
- capabilities.setCapability(pair.getKey().toString(), pair.getValue());
- }
- }
-
- String username = System.getenv("BROWSERSTACK_USERNAME");
- if(username == null) {
- username = (String) config.get("username");
- }
-
- String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
- if(accessKey == null) {
- accessKey = (String) config.get("access_key");
- }
-
- String app = System.getenv("BROWSERSTACK_APP_ID");
- if(app != null && !app.isEmpty()) {
- capabilities.setCapability("app", app);
- }
-
- driver = new AndroidDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- // Invoke driver.quit() to indicate that the test is completed.
- // Otherwise, it will appear as timed out on BrowserStack.
- driver.quit();
- }
-}
diff --git a/android/testng-examples/src/test/java/com/browserstack/run_first_test/FirstTest.java b/android/testng-examples/src/test/java/com/browserstack/run_first_test/FirstTest.java
deleted file mode 100644
index b77b748..0000000
--- a/android/testng-examples/src/test/java/com/browserstack/run_first_test/FirstTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.browserstack.run_first_test;
-
-import io.appium.java_client.MobileBy;
-import io.appium.java_client.android.AndroidElement;
-
-import org.openqa.selenium.support.ui.WebDriverWait;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import java.util.List;
-
-public class FirstTest extends BrowserStackTestNGTest {
-
- @Test
- public void test() throws Exception {
- AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Search Wikipedia")));
- searchElement.click();
- AndroidElement insertTextElement = (AndroidElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.id("org.wikipedia.alpha:id/search_src_text")));
- insertTextElement.sendKeys("BrowserStack");
- Thread.sleep(5000);
-
- List allProductsName = driver.findElementsByClassName("android.widget.TextView");
- Assert.assertTrue(allProductsName.size() > 0);
- }
-}
diff --git a/android/testng-examples/src/test/java/com/browserstack/run_parallel_test/BrowserStackTestNGTest.java b/android/testng-examples/src/test/java/com/browserstack/run_parallel_test/BrowserStackTestNGTest.java
deleted file mode 100644
index 4172790..0000000
--- a/android/testng-examples/src/test/java/com/browserstack/run_parallel_test/BrowserStackTestNGTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.browserstack.run_parallel_test;
-
-import java.net.URL;
-import java.util.Map;
-import java.util.Iterator;
-import java.io.FileReader;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.JSONArray;
-
-import io.appium.java_client.android.AndroidDriver;
-import io.appium.java_client.android.AndroidElement;
-
-import org.openqa.selenium.remote.DesiredCapabilities;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Parameters;
-
-
-public class BrowserStackTestNGTest {
- public AndroidDriver driver;
-
- @BeforeMethod(alwaysRun=true)
- @org.testng.annotations.Parameters(value={"deviceIndex"})
- public void setUp(String deviceIndex) throws Exception {
- JSONParser parser = new JSONParser();
- JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json"));
- JSONArray envs = (JSONArray) config.get("environments");
-
- DesiredCapabilities capabilities = new DesiredCapabilities();
-
- Map envCapabilities = (Map) envs.get(Integer.parseInt(deviceIndex));
- Iterator it = envCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
- }
-
- Map commonCapabilities = (Map) config.get("capabilities");
- it = commonCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- if(capabilities.getCapability(pair.getKey().toString()) == null){
- capabilities.setCapability(pair.getKey().toString(), pair.getValue());
- }
- }
-
- String username = System.getenv("BROWSERSTACK_USERNAME");
- if(username == null) {
- username = (String) config.get("username");
- }
-
- String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
- if(accessKey == null) {
- accessKey = (String) config.get("access_key");
- }
-
- String app = System.getenv("BROWSERSTACK_APP_ID");
- if(app != null && !app.isEmpty()) {
- capabilities.setCapability("app", app);
- }
-
- driver = new AndroidDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- // Invoke driver.quit() to indicate that the test is completed.
- // Otherwise, it will appear as timed out on BrowserStack.
- driver.quit();
- }
-}
diff --git a/android/testng-examples/src/test/java/com/browserstack/run_parallel_test/ParallelTest.java b/android/testng-examples/src/test/java/com/browserstack/run_parallel_test/ParallelTest.java
deleted file mode 100644
index a6d5e13..0000000
--- a/android/testng-examples/src/test/java/com/browserstack/run_parallel_test/ParallelTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.browserstack.run_parallel_test;
-
-import io.appium.java_client.MobileBy;
-import io.appium.java_client.android.AndroidElement;
-
-import org.openqa.selenium.support.ui.WebDriverWait;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import java.util.List;
-
-public class ParallelTest extends BrowserStackTestNGTest {
-
- @Test
- public void test() throws Exception {
- AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Search Wikipedia")));
- searchElement.click();
- AndroidElement insertTextElement = (AndroidElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.id("org.wikipedia.alpha:id/search_src_text")));
- insertTextElement.sendKeys("BrowserStack");
- Thread.sleep(5000);
-
- List allProductsName = driver.findElementsByClassName("android.widget.TextView");
- Assert.assertTrue(allProductsName.size() > 0);
- }
-}
diff --git a/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json b/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json
index 48f3e7b..f2093c4 100644
--- a/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json
+++ b/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json
@@ -1,20 +1,23 @@
{
- "server": "hub-cloud.browserstack.com",
- "username": "BROWSERSTACK_USERNAME",
- "access_key": "BROWSERSTACK_ACCESS_KEY",
+ "server": "hub.browserstack.com",
"capabilities": {
- "project": "First TestNg Android Project",
- "build": "browserstack-build-1",
- "name": "first_test",
- "browserstack.debug": true,
- "app": "bs://"
+ "app": "bs://",
+ "bstack:options": {
+ "projectName": "First TestNg Android Project",
+ "buildName": "browserstack-build-1",
+ "sessionName": "BStack first_test",
+ "debug": true,
+ "userName": "BROWSERSTACK_USERNAME",
+ "accessKey": "BROWSERSTACK_ACCESS_KEY"
+ }
},
"environments": [
- {
- "device": "Google Pixel 3",
- "os_version": "9.0"
+ {
+ "deviceName": "Google Pixel 3",
+ "platformVersion": "9.0",
+ "platformName": "android"
}
]
}
diff --git a/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml b/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml
index 8624aeb..51aee70 100644
--- a/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml
+++ b/android/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml
@@ -2,8 +2,10 @@
+
+
-
+
diff --git a/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json b/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json
index af26c45..007467a 100644
--- a/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json
+++ b/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json
@@ -1,21 +1,24 @@
{
- "server": "hub-cloud.browserstack.com",
- "username": "BROWSERSTACK_USERNAME",
- "access_key": "BROWSERSTACK_ACCESS_KEY",
+ "server": "hub.browserstack.com",
"capabilities": {
- "project": "First TestNg Android Project",
- "build": "browserstack-build-1",
- "name": "local_test",
- "browserstack.debug": true,
- "browserstack.local": true,
- "app": "bs://"
+ "app": "bs://",
+ "bstack:options": {
+ "projectName": "First TestNg Android Project",
+ "buildName": "browserstack-build-1",
+ "sessionName": "BStack local_test",
+ "userName": "BROWSERSTACK_USERNAME",
+ "accessKey": "BROWSERSTACK_ACCESS_KEY",
+ "debug": true,
+ "local": true
+ }
},
"environments": [
- {
- "device": "Google Pixel 3",
- "os_version": "9.0"
+ {
+ "deviceName": "Google Pixel 3",
+ "platformVersion": "9.0",
+ "platformName": "android"
}
]
}
diff --git a/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml b/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml
index 26bcaff..73e32d7 100644
--- a/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml
+++ b/android/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml
@@ -2,8 +2,10 @@
+
+
-
+
diff --git a/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json b/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json
index 5571d9a..1715e23 100644
--- a/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json
+++ b/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json
@@ -1,24 +1,29 @@
{
- "server": "hub-cloud.browserstack.com",
- "username": "BROWSERSTACK_USERNAME",
- "access_key": "BROWSERSTACK_ACCESS_KEY",
+ "server": "hub.browserstack.com",
"capabilities": {
- "project": "First TestNg Android Project",
- "build": "browserstack-build-1",
- "name": "parallel_test",
- "browserstack.debug": true,
- "app": "bs://"
+ "app": "bs://",
+ "bstack:options": {
+ "projectName": "First TestNg Android Project",
+ "buildName": "browserstack-build-1",
+ "sessionName": "BStack parallel_test",
+ "debug": true,
+ "userName": "BROWSERSTACK_USERNAME",
+ "accessKey": "BROWSERSTACK_ACCESS_KEY"
+ }
},
"environments": [
{
- "device": "Google Pixel 3",
- "os_version": "9.0"
+ "deviceName": "Google Pixel 3",
+ "platformVersion": "9.0",
+ "platformName": "android"
},
+
{
- "device": "Samsung Galaxy S10e",
- "os_version": "9.0"
+ "deviceName": "Samsung Galaxy S22",
+ "platformVersion": "12.0",
+ "platformName": "android"
}
]
}
diff --git a/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml b/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml
index b009413..4c26875 100644
--- a/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml
+++ b/android/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml
@@ -3,15 +3,17 @@
+
-
+
+
-
+
diff --git a/ios/testng-examples/pom.xml b/ios/testng-examples/pom.xml
index 0d96421..c5a23e0 100644
--- a/ios/testng-examples/pom.xml
+++ b/ios/testng-examples/pom.xml
@@ -22,22 +22,22 @@
org.testng
testng
- 6.9.10
+ 7.6.1
io.appium
java-client
- 7.0.0
+ 8.1.1
commons-io
commons-io
- 1.3.2
+ 2.11.0
org.seleniumhq.selenium
selenium-java
- 3.141.59
+ 4.4.0
com.browserstack
diff --git a/ios/testng-examples/src/test/java/com/browserstack/run_local_test/BrowserStackTestNGTest.java b/ios/testng-examples/src/test/java/com/browserstack/BrowserStackTestNGTest.java
similarity index 52%
rename from ios/testng-examples/src/test/java/com/browserstack/run_local_test/BrowserStackTestNGTest.java
rename to ios/testng-examples/src/test/java/com/browserstack/BrowserStackTestNGTest.java
index 47764ab..3434967 100644
--- a/ios/testng-examples/src/test/java/com/browserstack/run_local_test/BrowserStackTestNGTest.java
+++ b/ios/testng-examples/src/test/java/com/browserstack/BrowserStackTestNGTest.java
@@ -1,4 +1,4 @@
-package com.browserstack.run_local_test;
+package com.browserstack;
import com.browserstack.local.Local;
import java.net.URL;
@@ -10,66 +10,72 @@
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONArray;
-import org.openqa.selenium.remote.DesiredCapabilities;
+import io.appium.java_client.ios.options.XCUITestOptions;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import io.appium.java_client.ios.IOSDriver;
-import io.appium.java_client.ios.IOSElement;
public class BrowserStackTestNGTest {
- public IOSDriver driver;
+ public IOSDriver driver;
private Local local;
@BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
+ @org.testng.annotations.Parameters(value = { "config", "deviceIndex" })
+ public void setUp(String config_file, String deviceIndex) throws Exception {
JSONParser parser = new JSONParser();
- JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/run_local_test/local.conf.json"));
+ JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/"+config_file));
JSONArray envs = (JSONArray) config.get("environments");
- DesiredCapabilities capabilities = new DesiredCapabilities();
+ XCUITestOptions options = new XCUITestOptions();
- Map envCapabilities = (Map) envs.get(0);
+ Map envCapabilities = (Map) envs.get(Integer.parseInt(deviceIndex));
Iterator it = envCapabilities.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
- capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
+ options.setCapability(pair.getKey().toString(), pair.getValue().toString());
}
Map commonCapabilities = (Map) config.get("capabilities");
it = commonCapabilities.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
- if(capabilities.getCapability(pair.getKey().toString()) == null){
- capabilities.setCapability(pair.getKey().toString(), pair.getValue());
+ if(options.getCapability(pair.getKey().toString()) == null){
+ options.setCapability(pair.getKey().toString(), pair.getValue());
+ } else if (pair.getKey().toString().equalsIgnoreCase("bstack:options")){
+ HashMap bstackOptionsMap = (HashMap) pair.getValue();
+ bstackOptionsMap.putAll((HashMap) options.getCapability("bstack:options"));
+ options.setCapability(pair.getKey().toString(), bstackOptionsMap);
}
}
+ JSONObject browserstackOptions = (JSONObject) options.getCapability("bstack:options");
+
String username = System.getenv("BROWSERSTACK_USERNAME");
if(username == null) {
- username = (String) config.get("username");
+ username = (String) browserstackOptions.get("userName");
}
String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
if(accessKey == null) {
- accessKey = (String) config.get("access_key");
+ accessKey = (String) browserstackOptions.get("accessKey");
}
String app = System.getenv("BROWSERSTACK_APP_ID");
if(app != null && !app.isEmpty()) {
- capabilities.setCapability("app", app);
+ options.setCapability("app", app);
}
- if(capabilities.getCapability("browserstack.local") != null && capabilities.getCapability("browserstack.local") == "true"){
+ if(browserstackOptions.get("local") != null && browserstackOptions.get("local").toString() == "true"){
local = new Local();
- Map options = new HashMap();
- options.put("key", accessKey);
- local.start(options);
+ Map LocalOptions = new HashMap();
+ LocalOptions.put("key", accessKey);
+ local.start(LocalOptions);
}
- driver = new IOSDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);
+ driver = new IOSDriver(new URL("http://"+config.get("server")+"/wd/hub"), options);
}
@AfterMethod(alwaysRun=true)
diff --git a/ios/testng-examples/src/test/java/com/browserstack/FirstTest.java b/ios/testng-examples/src/test/java/com/browserstack/FirstTest.java
new file mode 100644
index 0000000..73736fd
--- /dev/null
+++ b/ios/testng-examples/src/test/java/com/browserstack/FirstTest.java
@@ -0,0 +1,33 @@
+package com.browserstack;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+
+import io.appium.java_client.AppiumBy;
+import org.openqa.selenium.WebElement;
+
+import java.time.Duration;
+
+
+public class FirstTest extends BrowserStackTestNGTest {
+
+ @Test
+ public void test() throws Exception {
+ WebElement textButton = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Text Button")));
+ textButton.click();
+ WebElement textInput = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Text Input")));
+ textInput.sendKeys("hello@browserstack.com"+"\n");
+
+ Thread.sleep(5000);
+
+ WebElement textOutput = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Text Output")));
+
+ Assert.assertEquals(textOutput.getText(),"hello@browserstack.com");
+ }
+}
diff --git a/ios/testng-examples/src/test/java/com/browserstack/run_local_test/LocalTest.java b/ios/testng-examples/src/test/java/com/browserstack/LocalTest.java
similarity index 72%
rename from ios/testng-examples/src/test/java/com/browserstack/run_local_test/LocalTest.java
rename to ios/testng-examples/src/test/java/com/browserstack/LocalTest.java
index 0bf3c26..295100c 100644
--- a/ios/testng-examples/src/test/java/com/browserstack/run_local_test/LocalTest.java
+++ b/ios/testng-examples/src/test/java/com/browserstack/LocalTest.java
@@ -1,4 +1,4 @@
-package com.browserstack.run_local_test;
+package com.browserstack;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -13,27 +13,29 @@
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
-import io.appium.java_client.MobileBy;
-import io.appium.java_client.ios.IOSElement;
+import io.appium.java_client.AppiumBy;
+import org.openqa.selenium.WebElement;
+
+import java.time.Duration;
public class LocalTest extends BrowserStackTestNGTest {
@Test
public void test() throws Exception {
- IOSElement testButton = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("TestBrowserStackLocal")));
+ WebElement testButton = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("TestBrowserStackLocal")));
testButton.click();
- WebDriverWait wait = new WebDriverWait(driver, 30);
+ WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
wait.until(new ExpectedCondition() {
@Override
public Boolean apply(WebDriver d) {
- String result = d.findElement(MobileBy.AccessibilityId("ResultBrowserStackLocal")).getAttribute("value");
+ String result = d.findElement(AppiumBy.accessibilityId("ResultBrowserStackLocal")).getAttribute("value");
return result != null && result.length() > 0;
}
});
- IOSElement resultElement = (IOSElement) driver.findElement(MobileBy.AccessibilityId("ResultBrowserStackLocal"));
+ WebElement resultElement = (WebElement) driver.findElement(AppiumBy.accessibilityId("ResultBrowserStackLocal"));
String resultString = resultElement.getText().toLowerCase();
System.out.println(resultString);
diff --git a/ios/testng-examples/src/test/java/com/browserstack/ParallelTest.java b/ios/testng-examples/src/test/java/com/browserstack/ParallelTest.java
new file mode 100644
index 0000000..226b704
--- /dev/null
+++ b/ios/testng-examples/src/test/java/com/browserstack/ParallelTest.java
@@ -0,0 +1,33 @@
+package com.browserstack;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+
+import io.appium.java_client.AppiumBy;
+import org.openqa.selenium.WebElement;
+
+import java.time.Duration;
+
+
+public class ParallelTest extends BrowserStackTestNGTest {
+
+ @Test
+ public void test() throws Exception {
+ WebElement textButton = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Text Button")));
+ textButton.click();
+ WebElement textInput = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Text Input")));
+ textInput.sendKeys("hello@browserstack.com"+"\n");
+
+ Thread.sleep(5000);
+
+ WebElement textOutput = (WebElement) new WebDriverWait(driver, Duration.ofSeconds(30)).until(
+ ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Text Output")));
+
+ Assert.assertEquals(textOutput.getText(),"hello@browserstack.com");
+ }
+}
diff --git a/ios/testng-examples/src/test/java/com/browserstack/run_first_test/BrowserStackTestNGTest.java b/ios/testng-examples/src/test/java/com/browserstack/run_first_test/BrowserStackTestNGTest.java
deleted file mode 100644
index a615c89..0000000
--- a/ios/testng-examples/src/test/java/com/browserstack/run_first_test/BrowserStackTestNGTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.browserstack.run_first_test;
-import com.browserstack.local.Local;
-
-import java.net.URL;
-import java.util.Map;
-import java.util.Iterator;
-import java.io.FileReader;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.JSONArray;
-
-import org.openqa.selenium.remote.DesiredCapabilities;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.AfterMethod;
-
-import io.appium.java_client.ios.IOSDriver;
-import io.appium.java_client.ios.IOSElement;
-
-
-public class BrowserStackTestNGTest {
- public IOSDriver driver;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- JSONParser parser = new JSONParser();
- JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/run_first_test/first.conf.json"));
- JSONArray envs = (JSONArray) config.get("environments");
-
- DesiredCapabilities capabilities = new DesiredCapabilities();
-
- Map envCapabilities = (Map) envs.get(0);
- Iterator it = envCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
- }
-
- Map commonCapabilities = (Map) config.get("capabilities");
- it = commonCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- if(capabilities.getCapability(pair.getKey().toString()) == null){
- capabilities.setCapability(pair.getKey().toString(), pair.getValue());
- }
- }
-
- String username = System.getenv("BROWSERSTACK_USERNAME");
- if(username == null) {
- username = (String) config.get("username");
- }
-
- String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
- if(accessKey == null) {
- accessKey = (String) config.get("access_key");
- }
-
- String app = System.getenv("BROWSERSTACK_APP_ID");
- if(app != null && !app.isEmpty()) {
- capabilities.setCapability("app", app);
- }
-
- driver = new IOSDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- // Invoke driver.quit() to indicate that the test is completed.
- // Otherwise, it will appear as timed out on BrowserStack.
- driver.quit();
- }
-}
diff --git a/ios/testng-examples/src/test/java/com/browserstack/run_first_test/FirstTest.java b/ios/testng-examples/src/test/java/com/browserstack/run_first_test/FirstTest.java
deleted file mode 100644
index 738163e..0000000
--- a/ios/testng-examples/src/test/java/com/browserstack/run_first_test/FirstTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.browserstack.run_first_test;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import org.openqa.selenium.support.ui.WebDriverWait;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-
-import io.appium.java_client.MobileBy;
-import io.appium.java_client.ios.IOSElement;
-
-
-public class FirstTest extends BrowserStackTestNGTest {
-
- @Test
- public void test() throws Exception {
- IOSElement textButton = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Text Button")));
- textButton.click();
- IOSElement textInput = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Text Input")));
- textInput.sendKeys("hello@browserstack.com"+"\n");
-
- Thread.sleep(5000);
-
- IOSElement textOutput = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Text Output")));
-
- Assert.assertEquals(textOutput.getText(),"hello@browserstack.com");
- }
-}
diff --git a/ios/testng-examples/src/test/java/com/browserstack/run_parallel_test/BrowserStackTestNGTest.java b/ios/testng-examples/src/test/java/com/browserstack/run_parallel_test/BrowserStackTestNGTest.java
deleted file mode 100644
index e6e08bc..0000000
--- a/ios/testng-examples/src/test/java/com/browserstack/run_parallel_test/BrowserStackTestNGTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.browserstack.run_parallel_test;
-
-import java.net.URL;
-import java.util.Map;
-import java.util.Iterator;
-import java.io.FileReader;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.JSONArray;
-
-import org.openqa.selenium.remote.DesiredCapabilities;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Parameters;
-
-import io.appium.java_client.ios.IOSDriver;
-import io.appium.java_client.ios.IOSElement;
-
-
-public class BrowserStackTestNGTest {
- public IOSDriver driver;
-
- @BeforeMethod(alwaysRun=true)
- @org.testng.annotations.Parameters(value={"deviceIndex"})
- public void setUp(String deviceIndex) throws Exception {
- JSONParser parser = new JSONParser();
- JSONObject config = (JSONObject) parser.parse(new FileReader("src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json"));
- JSONArray envs = (JSONArray) config.get("environments");
-
- DesiredCapabilities capabilities = new DesiredCapabilities();
-
- Map envCapabilities = (Map) envs.get(Integer.parseInt(deviceIndex));
- Iterator it = envCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
- }
-
- Map commonCapabilities = (Map) config.get("capabilities");
- it = commonCapabilities.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pair = (Map.Entry)it.next();
- if(capabilities.getCapability(pair.getKey().toString()) == null){
- capabilities.setCapability(pair.getKey().toString(), pair.getValue());
- }
- }
-
- String username = System.getenv("BROWSERSTACK_USERNAME");
- if(username == null) {
- username = (String) config.get("username");
- }
-
- String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
- if(accessKey == null) {
- accessKey = (String) config.get("access_key");
- }
-
- String app = System.getenv("BROWSERSTACK_APP_ID");
- if(app != null && !app.isEmpty()) {
- capabilities.setCapability("app", app);
- }
-
- driver = new IOSDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- // Invoke driver.quit() to indicate that the test is completed.
- // Otherwise, it will appear as timed out on BrowserStack.
- driver.quit();
- }
-}
diff --git a/ios/testng-examples/src/test/java/com/browserstack/run_parallel_test/ParallelTest.java b/ios/testng-examples/src/test/java/com/browserstack/run_parallel_test/ParallelTest.java
deleted file mode 100644
index bbd3b80..0000000
--- a/ios/testng-examples/src/test/java/com/browserstack/run_parallel_test/ParallelTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.browserstack.run_parallel_test;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import org.openqa.selenium.support.ui.WebDriverWait;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-
-import io.appium.java_client.MobileBy;
-import io.appium.java_client.ios.IOSElement;
-
-
-public class ParallelTest extends BrowserStackTestNGTest {
-
- @Test
- public void test() throws Exception {
- IOSElement textButton = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Text Button")));
- textButton.click();
- IOSElement textInput = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Text Input")));
- textInput.sendKeys("hello@browserstack.com"+"\n");
-
- Thread.sleep(5000);
-
- IOSElement textOutput = (IOSElement) new WebDriverWait(driver, 30).until(
- ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("Text Output")));
-
- Assert.assertEquals(textOutput.getText(),"hello@browserstack.com");
- }
-}
diff --git a/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json b/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json
index 9cba216..8ae888e 100644
--- a/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json
+++ b/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.conf.json
@@ -1,20 +1,23 @@
{
- "server": "hub-cloud.browserstack.com",
- "username": "BROWSERSTACK_USERNAME",
- "access_key": "BROWSERSTACK_ACCESS_KEY",
+ "server": "hub.browserstack.com",
"capabilities": {
- "project": "First TestNg iOS Project",
- "build": "browserstack-build-1",
- "name": "first_test",
- "browserstack.debug": true,
- "app": "bs://"
+ "app": "bs://",
+ "bstack:options": {
+ "projectName": "First TestNg iOS Project",
+ "buildName": "browserstack-build-1",
+ "sessionName": "BStack first_test",
+ "debug": true,
+ "userName": "BROWSERSTACK_USERNAME",
+ "accessKey": "BROWSERSTACK_ACCESS_KEY"
+ }
},
"environments": [
{
- "device": "iPhone 11 Pro",
- "os_version": "13"
+ "deviceName": "iPhone 11 Pro Max",
+ "platformVersion": "13",
+ "platformName": "ios"
}
]
}
diff --git a/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml b/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml
index 8624aeb..51aee70 100644
--- a/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml
+++ b/ios/testng-examples/src/test/resources/com/browserstack/run_first_test/first.testng.xml
@@ -2,8 +2,10 @@
+
+
-
+
diff --git a/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json b/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json
index 9acbe44..2c214f3 100644
--- a/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json
+++ b/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.conf.json
@@ -1,21 +1,24 @@
{
- "server": "hub-cloud.browserstack.com",
- "username": "BROWSERSTACK_USERNAME",
- "access_key": "BROWSERSTACK_ACCESS_KEY",
+ "server": "hub.browserstack.com",
"capabilities": {
- "project": "First TestNg iOS Project",
- "build": "browserstack-build-1",
- "name": "local_test",
- "browserstack.debug": true,
- "browserstack.local": true,
- "app": "bs://"
+ "app": "bs://",
+ "bstack:options": {
+ "projectName": "First TestNg iOS Project",
+ "buildName": "browserstack-build-1",
+ "sessionName": "BStack local_test",
+ "debug": true,
+ "local": true,
+ "userName": "BROWSERSTACK_USERNAME",
+ "accessKey": "BROWSERSTACK_ACCESS_KEY"
+ }
},
"environments": [
{
- "device": "iPhone 11 Pro",
- "os_version": "13"
+ "deviceName": "iPhone XS",
+ "platformVersion": "12",
+ "platformName": "ios"
}
]
}
diff --git a/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml b/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml
index 26bcaff..73e32d7 100644
--- a/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml
+++ b/ios/testng-examples/src/test/resources/com/browserstack/run_local_test/local.testng.xml
@@ -2,8 +2,10 @@
+
+
-
+
diff --git a/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json b/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json
index 6b7afe9..aab4b7f 100644
--- a/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json
+++ b/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.conf.json
@@ -1,24 +1,28 @@
{
- "server": "hub-cloud.browserstack.com",
- "username": "BROWSERSTACK_USERNAME",
- "access_key": "BROWSERSTACK_ACCESS_KEY",
+ "server": "hub.browserstack.com",
"capabilities": {
- "project": "First TestNg iOS Project",
- "build": "browserstack-build-1",
- "name": "parallel_test",
- "browserstack.debug": true,
- "app": "bs://"
+ "app": "bs://",
+ "bstack:options": {
+ "projectName": "First TestNg iOS Project",
+ "buildName": "browserstack-build-1",
+ "sessionName": "BStack parallel_test",
+ "debug": true,
+ "userName": "BROWSERSTACK_USERNAME",
+ "accessKey": "BROWSERSTACK_ACCESS_KEY"
+ }
},
"environments": [
- {
- "device": "iPhone 11 Pro",
- "os_version": "13"
+ {
+ "deviceName": "iPhone 11 Pro Max",
+ "platformVersion": "13",
+ "platformName": "ios"
},
- {
- "device": "iPhone 11 Pro Max",
- "os_version": "13"
+ {
+ "deviceName": "iPhone 11 Pro Max",
+ "platformVersion": "13",
+ "platformName": "ios"
}
]
}
diff --git a/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml b/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml
index b009413..4c26875 100644
--- a/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml
+++ b/ios/testng-examples/src/test/resources/com/browserstack/run_parallel_test/parallel.testng.xml
@@ -3,15 +3,17 @@
+
-
+
+
-
+