From ac21588b334da875353c10f4c64305dc27b98093 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 11:45:36 +0530 Subject: [PATCH 01/15] enable local management using Java SDK --- .gitignore | 1 + README.md | 54 ++++-- browserstack.yml | 34 ++++ pom.xml | 176 ++++++++++-------- .../com/browserstack/app/JavaLocalSample.java | 18 -- 5 files changed, 180 insertions(+), 103 deletions(-) create mode 100644 browserstack.yml diff --git a/.gitignore b/.gitignore index 0e87740..16e923a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ target/ .vscode browserstack.err .idea/ +logs/ diff --git a/README.md b/README.md index fc37d74..ebb756c 100644 --- a/README.md +++ b/README.md @@ -26,16 +26,48 @@ In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure y 2. Change capabilities of test. ```java - HashMap browserstackOptions = new HashMap(); - browserstackOptions.put("os", "OS X"); - browserstackOptions.put("osVersion", "Sierra"); - browserstackOptions.put("local", "false"); - browserstackOptions.put("seleniumVersion", "4.0.0"); - capabilities.setCapability("bstack:options", browserstackOptions); - capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name - capabilities.setCapability("buildName", "BStack Build Number 1"); // CI/CD job or build name + HashMap browserstackOptions = new HashMap(); + browserstackOptions.put("os", "OS X"); + browserstackOptions.put("osVersion", "Sierra"); + browserstackOptions.put("local", "false"); + browserstackOptions.put("seleniumVersion", "4.0.0"); + capabilities.setCapability("bstack:options", browserstackOptions); + capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name + capabilities.setCapability("buildName", "BStack Build Number 1"); // CI/CD job or build name ``` +## Steps to run local test (using Java SDK) +1. Add `browserstack.sdk.version` property in `` tag. + ``` + + 1.0.5 + + ``` + +2. Add `browserstack-java-sdk` in your `pom.xml` as below. + ``` + + com.browserstack + browserstack-java-sdk + ${browserstack.sdk.version} + compile + + ``` + +3. Modify `exec-maven-plugin` in the profile by adding `browserstack-java-sdk` as an ``. + ``` + + test + java + + -classpath + + -javaagent:${settings.localRepository}/com/browserstack/browserstack-java-sdk/${browserstack.sdk.version}/browserstack-java-sdk-${browserstack.sdk.version}.jar + com.browserstack.app.JavaLocalSample + + + ``` + ## Build and run test using maven. ### Install Dependencies using maven. @@ -47,15 +79,15 @@ mvn install a. To run single test session. ``` - mvn -Dexec.mainClass="com.browserstack.app.JavaSample" -Dexec.classpathScope=test test-compile exec:java + mvn exec:exec -P sample-test ``` b. To run parallel test session. ``` - mvn -Dexec.mainClass="com.browserstack.app.JavaParallelSample" -Dexec.classpathScope=test test-compile exec:java + mvn exec:exec -P sample-parallel-test ``` c. To run local test session. ``` - mvn -Dexec.mainClass="com.browserstack.app.JavaLocalSample" -Dexec.classpathScope=test test-compile exec:java + mvn exec:exec -P sample-local-test ``` diff --git a/browserstack.yml b/browserstack.yml new file mode 100644 index 0000000..eabb416 --- /dev/null +++ b/browserstack.yml @@ -0,0 +1,34 @@ +# ============================= +# Set BrowserStack Credentials +# ============================= +# Add your BrowserStack userName and accessKey here or set BROWSERSTACK_USERNAME and +# BROWSERSTACK_ACCESS_KEY as env variables +userName: BROWSERSTACK_USERNAME +accessKey: BROWSERSTACK_USERNAME + +# ====================== +# Organizing your tests +# ====================== +# Use `projectName`, `buildName`, `name` capabilities to organise your tests +# `name` is the name of your test sessions and is automatically picked from your +# test name and doesn't need to be set manually when using BrowserStack SDK +# `buildName` is used to name your CI/CD job or the execution of your test suite. +# Ensure you add a dynamic identifier, like an incremental build number from your +# CI/CD or timestamp at the end of every build; otherwise tests from different +# executions will be grouped together on BrowserStack +buildName: browserstack-build-1 +# Use `projectName` to set the name of your project. Example, Marketing Website +projectName: BrowserStack Samples + +# ========================================== +# BrowserStack Local +# (For localhost, staging/private websites) +# ========================================== +# Set browserStackLocal to true if your website under test is not accessible publicly over the internet +# Learn more about how BrowserStack Local works here -> https://www.browserstack.com/docs/automate/selenium/local-testing-introduction +browserstackLocal: true # (Default true) + #browserStackLocalOptions: +# Options to be passed to BrowserStack local in-case of advanced configurations +# - localIdentifier: browserStackSDK # (Default: null) Needed if you need to run multiple instances of local. +# - forceLocal: true # (Default: false) Set to true if you need to resolve all your traffic via BrowserStack Local tunnel. +# Entire list of arguments available here -> https://www.browserstack.com/docs/automate/selenium/manage-incoming-connections diff --git a/pom.xml b/pom.xml index 8a87fca..940cd89 100644 --- a/pom.xml +++ b/pom.xml @@ -16,20 +16,10 @@ UTF-8 1.8 1.8 + 1.0.5 - - junit - junit - 4.11 - test - - - commons-io - commons-io - 1.3.2 - org.seleniumhq.selenium selenium-java @@ -37,76 +27,114 @@ com.browserstack - browserstack-local-java - 1.0.3 - - - com.googlecode.json-simple - json-simple - 1.1.1 + browserstack-java-sdk + ${browserstack.sdk.version} + compile - - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 8 + 8 + + + - single + sample-test + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + java + + + + + test + java + + -classpath + + com.browserstack.app.JavaSample + + + + + + + + + sample-local-test + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + java + + + + + test + java + + -classpath + + -javaagent:${settings.localRepository}/com/browserstack/browserstack-java-sdk/${browserstack.sdk.version}/browserstack-java-sdk-${browserstack.sdk.version}.jar + com.browserstack.app.JavaLocalSample + + + + + + + + + sample-parallel-test - - - org.apache.maven.plugins - maven-surefire-plugin - - - com/browserstack/app/JavaSample.java - - - - + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + java + + + + + test + java + + -classpath + + com.browserstack.app.JavaParallelSample + + + + + diff --git a/src/test/java/com/browserstack/app/JavaLocalSample.java b/src/test/java/com/browserstack/app/JavaLocalSample.java index 369cb4e..42a8dee 100644 --- a/src/test/java/com/browserstack/app/JavaLocalSample.java +++ b/src/test/java/com/browserstack/app/JavaLocalSample.java @@ -1,7 +1,6 @@ package com.browserstack.app; //Sample test in Java to run Automate session. - import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; @@ -14,7 +13,6 @@ import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import com.browserstack.local.Local; public class JavaLocalSample { public static final String AUTOMATE_USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; @@ -28,25 +26,11 @@ public static void main(String[] args) throws Exception { HashMap browserstackOptions = new HashMap(); browserstackOptions.put("os", "OS X"); browserstackOptions.put("osVersion", "Sierra"); - browserstackOptions.put("local", "true"); browserstackOptions.put("seleniumVersion", "4.0.0"); capabilities.setCapability("bstack:options", browserstackOptions); capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name capabilities.setCapability("buildName", "BStack Local Build Number 1"); // CI/CD job or build name -//Creates an instance of Local - Local bsLocal = new Local(); - -// You can also set an environment variable - "BROWSERSTACK_ACCESS_KEY". - HashMap bsLocalArgs = new HashMap(); - bsLocalArgs.put("key", AUTOMATE_ACCESS_KEY); - -// Starts the Local instance with the required arguments - bsLocal.start(bsLocalArgs); - -// Check if BrowserStack local instance is running - System.out.println(bsLocal.isRunning()); - final WebDriver driver = new RemoteWebDriver(new URL(URL), capabilities); try { driver.get("http://bs-local.com:45691/check"); @@ -60,8 +44,6 @@ public static void main(String[] args) throws Exception { } catch (Exception e) { markTestStatus("failed", "Could'nt connect the local", driver); } - //Stop the Local instance - bsLocal.stop(); driver.quit(); } From 8309b866d70ad28d7bd5cf4d3ad43ef08a4b8e0e Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 11:50:33 +0530 Subject: [PATCH 02/15] removed extra space in readme code snippet --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ebb756c..30142e6 100644 --- a/README.md +++ b/README.md @@ -27,13 +27,13 @@ In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure y ```java HashMap browserstackOptions = new HashMap(); - browserstackOptions.put("os", "OS X"); - browserstackOptions.put("osVersion", "Sierra"); - browserstackOptions.put("local", "false"); - browserstackOptions.put("seleniumVersion", "4.0.0"); - capabilities.setCapability("bstack:options", browserstackOptions); - capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name - capabilities.setCapability("buildName", "BStack Build Number 1"); // CI/CD job or build name + browserstackOptions.put("os", "OS X"); + browserstackOptions.put("osVersion", "Sierra"); + browserstackOptions.put("local", "false"); + browserstackOptions.put("seleniumVersion", "4.0.0"); + capabilities.setCapability("bstack:options", browserstackOptions); + capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name + capabilities.setCapability("buildName", "BStack Build Number 1"); // CI/CD job or build name ``` ## Steps to run local test (using Java SDK) From 7cf8f0376d7e1af23d75706ef00da4135e06824b Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:02:47 +0530 Subject: [PATCH 03/15] modify samples to be W3C compliant --- README.md | 22 +++++++++---------- .../com/browserstack/app/JavaLocalSample.java | 4 ++-- .../java/com/browserstack/app/JavaSample.java | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 30142e6..442dca0 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,14 @@ In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure y 2. Change capabilities of test. ```java - HashMap browserstackOptions = new HashMap(); - browserstackOptions.put("os", "OS X"); - browserstackOptions.put("osVersion", "Sierra"); - browserstackOptions.put("local", "false"); - browserstackOptions.put("seleniumVersion", "4.0.0"); - capabilities.setCapability("bstack:options", browserstackOptions); - capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name - capabilities.setCapability("buildName", "BStack Build Number 1"); // CI/CD job or build name +HashMap browserstackOptions = new HashMap(); +browserstackOptions.put("os", "OS X"); +browserstackOptions.put("osVersion", "Sierra"); +browserstackOptions.put("local", "false"); +browserstackOptions.put("seleniumVersion", "4.0.0"); +browserstackOptions.put("sessionName", "BStack-[Java] Sample Test"); // test name +browserstackOptions.put("buildName", "BStack Build Number 1"); // CI/CD job or build name +capabilities.setCapability("bstack:options", browserstackOptions); ``` ## Steps to run local test (using Java SDK) @@ -79,15 +79,15 @@ mvn install a. To run single test session. ``` - mvn exec:exec -P sample-test +mvn exec:exec -P sample-test ``` b. To run parallel test session. ``` - mvn exec:exec -P sample-parallel-test +mvn exec:exec -P sample-parallel-test ``` c. To run local test session. ``` - mvn exec:exec -P sample-local-test +mvn exec:exec -P sample-local-test ``` diff --git a/src/test/java/com/browserstack/app/JavaLocalSample.java b/src/test/java/com/browserstack/app/JavaLocalSample.java index 42a8dee..4b22d14 100644 --- a/src/test/java/com/browserstack/app/JavaLocalSample.java +++ b/src/test/java/com/browserstack/app/JavaLocalSample.java @@ -27,9 +27,9 @@ public static void main(String[] args) throws Exception { browserstackOptions.put("os", "OS X"); browserstackOptions.put("osVersion", "Sierra"); browserstackOptions.put("seleniumVersion", "4.0.0"); + browserstackOptions.put("sessionName", "BStack-[Java] Sample Test"); // test name + browserstackOptions.put("buildName", "BStack Local Build Number 1"); // CI/CD job or build name capabilities.setCapability("bstack:options", browserstackOptions); - capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name - capabilities.setCapability("buildName", "BStack Local Build Number 1"); // CI/CD job or build name final WebDriver driver = new RemoteWebDriver(new URL(URL), capabilities); try { diff --git a/src/test/java/com/browserstack/app/JavaSample.java b/src/test/java/com/browserstack/app/JavaSample.java index d4edaf9..8e6f16d 100644 --- a/src/test/java/com/browserstack/app/JavaSample.java +++ b/src/test/java/com/browserstack/app/JavaSample.java @@ -30,9 +30,9 @@ public static void main(String[] args) throws Exception { browserstackOptions.put("osVersion", "Sierra"); browserstackOptions.put("local", "false"); browserstackOptions.put("seleniumVersion", "4.0.0"); + browserstackOptions.put("sessionName", "BStack-[Java] Sample Test"); // test name + browserstackOptions.put("buildName", "BStack Local Build Number 1"); // CI/CD job or build name capabilities.setCapability("bstack:options", browserstackOptions); - capabilities.setCapability("sessionName", "BStack-[Java] Sample Test"); // test name - capabilities.setCapability("buildName", "BStack Build Number 1"); // CI/CD job or build name final WebDriver driver = new RemoteWebDriver(new URL(URL), capabilities); try { driver.get("https://bstackdemo.com/"); From c60f3e46ae75224c571fe3dbb1389984ecd729c1 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:04:27 +0530 Subject: [PATCH 04/15] readme changes --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 442dca0..bc4f9aa 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,14 @@ In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure y 2. Change capabilities of test. ```java -HashMap browserstackOptions = new HashMap(); -browserstackOptions.put("os", "OS X"); -browserstackOptions.put("osVersion", "Sierra"); -browserstackOptions.put("local", "false"); -browserstackOptions.put("seleniumVersion", "4.0.0"); -browserstackOptions.put("sessionName", "BStack-[Java] Sample Test"); // test name -browserstackOptions.put("buildName", "BStack Build Number 1"); // CI/CD job or build name -capabilities.setCapability("bstack:options", browserstackOptions); + HashMap browserstackOptions = new HashMap(); + browserstackOptions.put("os", "OS X"); + browserstackOptions.put("osVersion", "Sierra"); + browserstackOptions.put("local", "false"); + browserstackOptions.put("seleniumVersion", "4.0.0"); + browserstackOptions.put("sessionName", "BStack-[Java] Sample Test"); // test name + browserstackOptions.put("buildName", "BStack Build Number 1"); // CI/CD job or build name + capabilities.setCapability("bstack:options", browserstackOptions); ``` ## Steps to run local test (using Java SDK) From 4583b15653efc91db591c9b806453b7498fba78c Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:56:36 +0530 Subject: [PATCH 05/15] build caps in HashMap --- .../com/browserstack/app/JavaParallelSample.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/com/browserstack/app/JavaParallelSample.java b/src/test/java/com/browserstack/app/JavaParallelSample.java index 24e222b..60bd3a8 100644 --- a/src/test/java/com/browserstack/app/JavaParallelSample.java +++ b/src/test/java/com/browserstack/app/JavaParallelSample.java @@ -19,10 +19,10 @@ class ParallelTest implements Runnable { public static final String USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; public static final String AUTOMATE_KEY = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : "BROWSERSTACK_ACCESS_KEY"; public static final String URL = "https://" + USERNAME + ":" + AUTOMATE_KEY + "@hub-cloud.browserstack.com/wd/hub"; - Hashtable capsHashtable; + HashMap capsHashtable; String sessionName; - ParallelTest(Hashtable cap, String sessionString) { + ParallelTest(HashMap cap, String sessionString) { capsHashtable = cap; sessionName = sessionString; } @@ -67,31 +67,31 @@ public void run() { public class JavaParallelSample { public static void main(String[] args) throws Exception { - List> caps = new ArrayList>(); + List> caps = new ArrayList>(); //device 1 - Hashtable cap1 = new Hashtable(); + HashMap cap1 = new HashMap(); cap1.put("deviceName", "iPhone 12 Pro"); cap1.put("realMobile", "true"); caps.add(cap1); //device 2 - Hashtable cap2 = new Hashtable(); + HashMap cap2 = new HashMap(); cap2.put("deviceName", "Samsung Galaxy S20"); cap2.put("realMobile", "true"); caps.add(cap2); //device 3 - Hashtable cap3 = new Hashtable(); + HashMap cap3 = new HashMap(); cap3.put("os", "OS X"); caps.add(cap3); //device 4 - Hashtable cap4 = new Hashtable(); + HashMap cap4 = new HashMap(); cap4.put("os", "windows"); caps.add(cap4); - for (Hashtable cap : caps) { + for (HashMap cap : caps) { Thread thread = new Thread(new ParallelTest(cap, "session name")); thread.start(); } From 36ab01148d7b6377c86c9057d7532aaf39129008 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:10:06 +0530 Subject: [PATCH 06/15] java sdk version bump --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 940cd89..a9813e5 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ UTF-8 1.8 1.8 - 1.0.5 + 1.0.6 From e7f882728a25daa126bc3e208d7e859e570ecc82 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:11:30 +0530 Subject: [PATCH 07/15] java sdk version bump in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bc4f9aa..bfc6b4d 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure y 1. Add `browserstack.sdk.version` property in `` tag. ``` - 1.0.5 + 1.0.6 ``` From 93b54b9b6b4807b40a952238a00ac89f99fecf37 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:40:17 +0530 Subject: [PATCH 08/15] add local arguments examples in readme --- README.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/README.md b/README.md index bfc6b4d..9d5d002 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,61 @@ In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure y ``` +### Arguments + +For the full list of arguments that can be passed in `browserStackLocalOptions`, refer [BrowserStack Local modifiers](https://www.browserstack.com/docs/local-testing/binary-params). For examples, refer below - + +#### Verbose Logging +To enable verbose logging - +```java +browserStackLocalOptions: + - v: true +``` + +#### Force Start +To kill other running Browserstack Local instances - +```java +browserStackLocalOptions: + - force: true +``` + +#### Only Automate +To disable local testing for Live and Screenshots, and enable only Automate - +```java +browserStackLocalOptions: + - onlyAutomate: true +``` + +#### Force Local +To route all traffic via local(your) machine - +```java +browserStackLocalOptions: + - forcelocal: true +``` + +#### Proxy +To use a proxy for local testing - + +* proxyHost: Hostname/IP of proxy, remaining proxy options are ignored if this option is absent +* proxyPort: Port for the proxy, defaults to 3128 when -proxyHost is used +* proxyUser: Username for connecting to proxy (Basic Auth Only) +* proxyPass: Password for USERNAME, will be ignored if USERNAME is empty or not specified + +```java +browserStackLocalOptions: + - proxyHost: 127.0.0.1 + - proxyPort: 8000 + - proxyUser: user + - proxyPass: password +``` + +#### Local Identifier +If doing simultaneous multiple local testing connections, set this uniquely for different processes - +```java +browserStackLocalOptions: + - localIdentifier: randomstring +``` + ## Build and run test using maven. ### Install Dependencies using maven. From ad7fdec20d3b93258b597825488536255094619c Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:51:12 +0530 Subject: [PATCH 09/15] yml reformat and readme changes --- README.md | 27 +++++-------------- browserstack.yml | 6 ++--- .../com/browserstack/app/JavaLocalSample.java | 2 +- 3 files changed, 10 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 9d5d002..04770f9 100644 --- a/README.md +++ b/README.md @@ -76,51 +76,36 @@ For the full list of arguments that can be passed in `browserStackLocalOptions`, To enable verbose logging - ```java browserStackLocalOptions: - - v: true + v: true + logFile: /browserstack/logs.txt ``` #### Force Start To kill other running Browserstack Local instances - ```java browserStackLocalOptions: - - force: true + force: true ``` #### Only Automate To disable local testing for Live and Screenshots, and enable only Automate - ```java browserStackLocalOptions: - - onlyAutomate: true + onlyAutomate: true ``` #### Force Local To route all traffic via local(your) machine - ```java browserStackLocalOptions: - - forcelocal: true -``` - -#### Proxy -To use a proxy for local testing - - -* proxyHost: Hostname/IP of proxy, remaining proxy options are ignored if this option is absent -* proxyPort: Port for the proxy, defaults to 3128 when -proxyHost is used -* proxyUser: Username for connecting to proxy (Basic Auth Only) -* proxyPass: Password for USERNAME, will be ignored if USERNAME is empty or not specified - -```java -browserStackLocalOptions: - - proxyHost: 127.0.0.1 - - proxyPort: 8000 - - proxyUser: user - - proxyPass: password + forcelocal: true ``` #### Local Identifier If doing simultaneous multiple local testing connections, set this uniquely for different processes - ```java browserStackLocalOptions: - - localIdentifier: randomstring + localIdentifier: randomstring ``` ## Build and run test using maven. diff --git a/browserstack.yml b/browserstack.yml index eabb416..64e09d7 100644 --- a/browserstack.yml +++ b/browserstack.yml @@ -27,8 +27,8 @@ projectName: BrowserStack Samples # Set browserStackLocal to true if your website under test is not accessible publicly over the internet # Learn more about how BrowserStack Local works here -> https://www.browserstack.com/docs/automate/selenium/local-testing-introduction browserstackLocal: true # (Default true) - #browserStackLocalOptions: +#browserStackLocalOptions: # Options to be passed to BrowserStack local in-case of advanced configurations -# - localIdentifier: browserStackSDK # (Default: null) Needed if you need to run multiple instances of local. -# - forceLocal: true # (Default: false) Set to true if you need to resolve all your traffic via BrowserStack Local tunnel. +# localIdentifier: browserStackSDK # (Default: null) Needed if you need to run multiple instances of local. +# forceLocal: true # (Default: false) Set to true if you need to resolve all your traffic via BrowserStack Local tunnel. # Entire list of arguments available here -> https://www.browserstack.com/docs/automate/selenium/manage-incoming-connections diff --git a/src/test/java/com/browserstack/app/JavaLocalSample.java b/src/test/java/com/browserstack/app/JavaLocalSample.java index 4b22d14..781ef7a 100644 --- a/src/test/java/com/browserstack/app/JavaLocalSample.java +++ b/src/test/java/com/browserstack/app/JavaLocalSample.java @@ -42,7 +42,7 @@ public static void main(String[] args) throws Exception { markTestStatus("passed", "Local Test is successful and up and running", driver); } } catch (Exception e) { - markTestStatus("failed", "Could'nt connect the local", driver); + markTestStatus("failed", "Couldn't connect the local", driver); } driver.quit(); } From 7701455028b6b01842fd9dfd19aa60539064f808 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Wed, 24 Aug 2022 18:04:49 +0530 Subject: [PATCH 10/15] fix access key placeholder name --- browserstack.yml | 2 +- src/test/java/com/browserstack/app/JavaSample.java | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/browserstack.yml b/browserstack.yml index 64e09d7..298a374 100644 --- a/browserstack.yml +++ b/browserstack.yml @@ -4,7 +4,7 @@ # Add your BrowserStack userName and accessKey here or set BROWSERSTACK_USERNAME and # BROWSERSTACK_ACCESS_KEY as env variables userName: BROWSERSTACK_USERNAME -accessKey: BROWSERSTACK_USERNAME +accessKey: BROWSERSTACK_ACCESS_KEY # ====================== # Organizing your tests diff --git a/src/test/java/com/browserstack/app/JavaSample.java b/src/test/java/com/browserstack/app/JavaSample.java index 8e6f16d..0905fb6 100644 --- a/src/test/java/com/browserstack/app/JavaSample.java +++ b/src/test/java/com/browserstack/app/JavaSample.java @@ -2,6 +2,7 @@ //Sample test in Java to run Automate session. +import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -10,7 +11,6 @@ import org.openqa.selenium.JavascriptExecutor; import java.net.URL; -import java.time.Duration; import java.util.HashMap; import org.openqa.selenium.support.ui.ExpectedConditions; @@ -20,8 +20,7 @@ public class JavaSample { public static final String AUTOMATE_USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; public static final String AUTOMATE_ACCESS_KEY = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : "BROWSERSTACK_ACCESS_KEY"; public static final String URL = "https://" + AUTOMATE_USERNAME + ":" + AUTOMATE_ACCESS_KEY + "@hub-cloud.browserstack.com/wd/hub"; - - public static void main(String[] args) throws Exception { + public void test() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("browserName", "Chrome"); capabilities.setCapability("browserVersion", "latest"); @@ -36,7 +35,7 @@ public static void main(String[] args) throws Exception { final WebDriver driver = new RemoteWebDriver(new URL(URL), capabilities); try { driver.get("https://bstackdemo.com/"); - final WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + final WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.titleIs("StackDemo")); // getting name of the product String product_name = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\'1\']/p"))).getText(); From bf96630d38b92897ea541b793dbdaecc8ebb4d9b Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Wed, 24 Aug 2022 18:08:23 +0530 Subject: [PATCH 11/15] revert JavaSample changes --- src/test/java/com/browserstack/app/JavaSample.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/browserstack/app/JavaSample.java b/src/test/java/com/browserstack/app/JavaSample.java index 0905fb6..dac8374 100644 --- a/src/test/java/com/browserstack/app/JavaSample.java +++ b/src/test/java/com/browserstack/app/JavaSample.java @@ -2,7 +2,6 @@ //Sample test in Java to run Automate session. -import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -12,6 +11,7 @@ import java.net.URL; import java.util.HashMap; +import java.time.Duration; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; @@ -20,7 +20,7 @@ public class JavaSample { public static final String AUTOMATE_USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; public static final String AUTOMATE_ACCESS_KEY = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : "BROWSERSTACK_ACCESS_KEY"; public static final String URL = "https://" + AUTOMATE_USERNAME + ":" + AUTOMATE_ACCESS_KEY + "@hub-cloud.browserstack.com/wd/hub"; - public void test() throws Exception { + public static void main(String[] args) throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("browserName", "Chrome"); capabilities.setCapability("browserVersion", "latest"); @@ -35,7 +35,7 @@ public void test() throws Exception { final WebDriver driver = new RemoteWebDriver(new URL(URL), capabilities); try { driver.get("https://bstackdemo.com/"); - final WebDriverWait wait = new WebDriverWait(driver, 10); + final WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); wait.until(ExpectedConditions.titleIs("StackDemo")); // getting name of the product String product_name = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\'1\']/p"))).getText(); From a577798c63373203b3dbbe274341e938c9a6268d Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Mon, 5 Sep 2022 15:18:30 +0530 Subject: [PATCH 12/15] modify tests and pom to run tests using command --- .gitignore | 4 + README.md | 2 +- browserstack.yml | 15 ++- pom.xml | 110 +----------------- .../com/browserstack/app/JavaLocalSample.java | 4 +- .../browserstack/app/JavaParallelSample.java | 99 ---------------- .../java/com/browserstack/app/JavaSample.java | 13 +-- 7 files changed, 27 insertions(+), 220 deletions(-) delete mode 100644 src/test/java/com/browserstack/app/JavaParallelSample.java diff --git a/.gitignore b/.gitignore index 16e923a..61017aa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,7 @@ target/ browserstack.err .idea/ logs/ +/bin/ +.classpath +.project +.settings diff --git a/README.md b/README.md index 04770f9..f904211 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ mvn --version ## Steps to run test -In every test file (JavaSample, JavaLocalSample, JavaParallelSample) make sure you set your credentials. +In every test file (JavaSample, JavaLocalSample) make sure you set your credentials. ```java public static final String AUTOMATE_USERNAME = "BROWSERSTACK_USERNAME"; public static final String AUTOMATE_ACCESS_KEY = "BROWSERSTACK_ACCESS_KEY"; diff --git a/browserstack.yml b/browserstack.yml index 298a374..ca750c9 100644 --- a/browserstack.yml +++ b/browserstack.yml @@ -20,13 +20,26 @@ buildName: browserstack-build-1 # Use `projectName` to set the name of your project. Example, Marketing Website projectName: BrowserStack Samples +platforms: + - os: OS X + osVersion: Big Sur + browserName: Chrome + browserVersion: latest + - os: Windows + osVersion: 10 + browserName: Edge + browserVersion: latest + - device: Samsung Galaxy S22 Ultra + browserName: chrome # Try 'samsung' for Samsung browser + osVersion: 12.0 + # ========================================== # BrowserStack Local # (For localhost, staging/private websites) # ========================================== # Set browserStackLocal to true if your website under test is not accessible publicly over the internet # Learn more about how BrowserStack Local works here -> https://www.browserstack.com/docs/automate/selenium/local-testing-introduction -browserstackLocal: true # (Default true) +browserstackLocal: true # (Default false) #browserStackLocalOptions: # Options to be passed to BrowserStack local in-case of advanced configurations # localIdentifier: browserStackSDK # (Default: null) Needed if you need to run multiple instances of local. diff --git a/pom.xml b/pom.xml index a9813e5..8e71437 100644 --- a/pom.xml +++ b/pom.xml @@ -23,119 +23,13 @@ org.seleniumhq.selenium selenium-java - 4.1.0 + 4.4.0 com.browserstack browserstack-java-sdk - ${browserstack.sdk.version} + LATEST compile - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 8 - 8 - - - - - - - sample-test - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - - - java - - - - - test - java - - -classpath - - com.browserstack.app.JavaSample - - - - - - - - - sample-local-test - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - - - java - - - - - test - java - - -classpath - - -javaagent:${settings.localRepository}/com/browserstack/browserstack-java-sdk/${browserstack.sdk.version}/browserstack-java-sdk-${browserstack.sdk.version}.jar - com.browserstack.app.JavaLocalSample - - - - - - - - - sample-parallel-test - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - - - java - - - - - test - java - - -classpath - - com.browserstack.app.JavaParallelSample - - - - - - - - diff --git a/src/test/java/com/browserstack/app/JavaLocalSample.java b/src/test/java/com/browserstack/app/JavaLocalSample.java index 781ef7a..84fa924 100644 --- a/src/test/java/com/browserstack/app/JavaLocalSample.java +++ b/src/test/java/com/browserstack/app/JavaLocalSample.java @@ -2,8 +2,8 @@ //Sample test in Java to run Automate session. import org.openqa.selenium.By; +import org.openqa.selenium.MutableCapabilities; import org.openqa.selenium.WebDriver; -import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.JavascriptExecutor; @@ -20,7 +20,7 @@ public class JavaLocalSample { public static final String URL = "https://" + AUTOMATE_USERNAME + ":" + AUTOMATE_ACCESS_KEY + "@hub-cloud.browserstack.com/wd/hub"; public static void main(String[] args) throws Exception { - DesiredCapabilities capabilities = new DesiredCapabilities(); + MutableCapabilities capabilities = new MutableCapabilities(); capabilities.setCapability("browserName", "Chrome"); capabilities.setCapability("browserVersion", "latest"); HashMap browserstackOptions = new HashMap(); diff --git a/src/test/java/com/browserstack/app/JavaParallelSample.java b/src/test/java/com/browserstack/app/JavaParallelSample.java deleted file mode 100644 index 60bd3a8..0000000 --- a/src/test/java/com/browserstack/app/JavaParallelSample.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.browserstack.app; - -import java.util.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.time.Duration; -import java.util.Hashtable; - -import org.openqa.selenium.By; -import org.openqa.selenium.JavascriptExecutor; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.DesiredCapabilities; -import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - -class ParallelTest implements Runnable { - public static final String USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; - public static final String AUTOMATE_KEY = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : "BROWSERSTACK_ACCESS_KEY"; - public static final String URL = "https://" + USERNAME + ":" + AUTOMATE_KEY + "@hub-cloud.browserstack.com/wd/hub"; - HashMap capsHashtable; - String sessionName; - - ParallelTest(HashMap cap, String sessionString) { - capsHashtable = cap; - sessionName = sessionString; - } - - public void run() { - DesiredCapabilities caps = new DesiredCapabilities(); - caps.setCapability("bstack:options", capsHashtable); - caps.setCapability("sessionName", sessionName); // test name - caps.setCapability("buildName", "BStack-[Java] Sample buildName"); // CI/CD job or build name - WebDriver driver; - try { - driver = new RemoteWebDriver(new URL(URL), caps); - final JavascriptExecutor jse = (JavascriptExecutor) driver; - try { - // Searching for 'BrowserStack' on google.com - driver.get("https://bstackdemo.com/"); - WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); - wait.until(ExpectedConditions.titleIs("StackDemo")); - // Getting name of the product - String product_name = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\'1\']/p"))).getText(); - //checking whether the Add to Cart button is clickable - WebElement cart_btn = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\'1\']/div[4]"))); - // clicking the 'Add to cart' button - cart_btn.click(); - // checking if the Cart pane is visible - wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("float-cart__content"))); - // getting the product's name added in the cart - final String product_in_cart = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\'__next\']/div/div/div[2]/div[2]/div[2]/div/div[3]/p[1]"))).getText(); - // checking if the product added to cart is available in the cart - if (product_name.equals(product_in_cart)) { - jse.executeScript("browserstack_executor: {\"action\": \"setSessionStatus\", \"arguments\": {\"status\": \"passed\", \"reason\": \"Product has been added to the cart!\"}}"); - } - } catch (Exception e) { - jse.executeScript("browserstack_executor: {\"action\": \"setSessionStatus\", \"arguments\": {\"status\": \"failed\", \"reason\": \"Some elements failed to load..\"}}"); - } - driver.quit(); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - } -} - -public class JavaParallelSample { - public static void main(String[] args) throws Exception { - List> caps = new ArrayList>(); - - //device 1 - HashMap cap1 = new HashMap(); - cap1.put("deviceName", "iPhone 12 Pro"); - cap1.put("realMobile", "true"); - caps.add(cap1); - - //device 2 - HashMap cap2 = new HashMap(); - cap2.put("deviceName", "Samsung Galaxy S20"); - cap2.put("realMobile", "true"); - caps.add(cap2); - - //device 3 - HashMap cap3 = new HashMap(); - cap3.put("os", "OS X"); - caps.add(cap3); - - //device 4 - HashMap cap4 = new HashMap(); - cap4.put("os", "windows"); - caps.add(cap4); - - for (HashMap cap : caps) { - Thread thread = new Thread(new ParallelTest(cap, "session name")); - thread.start(); - } - } -} diff --git a/src/test/java/com/browserstack/app/JavaSample.java b/src/test/java/com/browserstack/app/JavaSample.java index dac8374..b97cfd6 100644 --- a/src/test/java/com/browserstack/app/JavaSample.java +++ b/src/test/java/com/browserstack/app/JavaSample.java @@ -2,26 +2,21 @@ //Sample test in Java to run Automate session. -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.*; import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; import java.util.HashMap; import java.time.Duration; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - public class JavaSample { public static final String AUTOMATE_USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; public static final String AUTOMATE_ACCESS_KEY = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : "BROWSERSTACK_ACCESS_KEY"; public static final String URL = "https://" + AUTOMATE_USERNAME + ":" + AUTOMATE_ACCESS_KEY + "@hub-cloud.browserstack.com/wd/hub"; public static void main(String[] args) throws Exception { - DesiredCapabilities capabilities = new DesiredCapabilities(); + MutableCapabilities capabilities = new MutableCapabilities(); capabilities.setCapability("browserName", "Chrome"); capabilities.setCapability("browserVersion", "latest"); HashMap browserstackOptions = new HashMap(); From 89a56d0b6e25c7f5f9fefb4e29fabb9bafe04a01 Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Mon, 5 Sep 2022 16:02:55 +0530 Subject: [PATCH 13/15] README.md changes to add steps to run selenium tests --- README.md | 97 +++++-------------- .../com/browserstack/app/JavaLocalSample.java | 10 +- 2 files changed, 29 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index f904211..29ea20b 100644 --- a/README.md +++ b/README.md @@ -8,65 +8,44 @@ Make sure `maven` is installed in your system. See if it is properly installed. mvn --version ``` -## Steps to run test - -In every test file (JavaSample, JavaLocalSample) make sure you set your credentials. -```java - public static final String AUTOMATE_USERNAME = "BROWSERSTACK_USERNAME"; - public static final String AUTOMATE_ACCESS_KEY = "BROWSERSTACK_ACCESS_KEY"; -``` +## Steps to run local test (using Java SDK) 1. Clone and navigate to the repo. + ``` + git clone -b sdk https://github.com/browserstack/java-selenium-browserstack.git + cd java-selenium-browserstack + ``` -``` - git clone https://github.com/browserstack/java-selenium-browserstack.git - cd java-selenium-browserstack -``` - -2. Change capabilities of test. - -```java - HashMap browserstackOptions = new HashMap(); - browserstackOptions.put("os", "OS X"); - browserstackOptions.put("osVersion", "Sierra"); - browserstackOptions.put("local", "false"); - browserstackOptions.put("seleniumVersion", "4.0.0"); - browserstackOptions.put("sessionName", "BStack-[Java] Sample Test"); // test name - browserstackOptions.put("buildName", "BStack Build Number 1"); // CI/CD job or build name - capabilities.setCapability("bstack:options", browserstackOptions); -``` - -## Steps to run local test (using Java SDK) -1. Add `browserstack.sdk.version` property in `` tag. - ``` - - 1.0.6 - - ``` +2. Set your [BrowserStack Username and Access Key](https://www.browserstack.com/accounts/settings) in [browserstack.yml](browserstack.yml) -2. Add `browserstack-java-sdk` in your `pom.xml` as below. +3. Add `browserstack-java-sdk` in your `pom.xml` as below. ``` com.browserstack browserstack-java-sdk - ${browserstack.sdk.version} + LATEST compile ``` -3. Modify `exec-maven-plugin` in the profile by adding `browserstack-java-sdk` as an ``. - ``` - - test - java - - -classpath - - -javaagent:${settings.localRepository}/com/browserstack/browserstack-java-sdk/${browserstack.sdk.version}/browserstack-java-sdk-${browserstack.sdk.version}.jar - com.browserstack.app.JavaLocalSample - - - ``` +## Build and run test using maven. + +### Install Dependencies using maven. +``` +mvn install +``` + +### Run tests using maven. + +a. To run single test session. +``` +mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/browserstack-java-sdk-jar com.browserstack.app.JavaSample" +``` + +b. To run local test session. +``` +mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/browserstack-java-sdk-jar com.browserstack.app.JavaLocalSample" +``` ### Arguments @@ -107,27 +86,3 @@ If doing simultaneous multiple local testing connections, set this uniquely for browserStackLocalOptions: localIdentifier: randomstring ``` - -## Build and run test using maven. - -### Install Dependencies using maven. -``` -mvn install -``` - -### Run tests using maven. - -a. To run single test session. -``` -mvn exec:exec -P sample-test -``` - -b. To run parallel test session. -``` -mvn exec:exec -P sample-parallel-test -``` - -c. To run local test session. -``` -mvn exec:exec -P sample-local-test -``` diff --git a/src/test/java/com/browserstack/app/JavaLocalSample.java b/src/test/java/com/browserstack/app/JavaLocalSample.java index 84fa924..87f005d 100644 --- a/src/test/java/com/browserstack/app/JavaLocalSample.java +++ b/src/test/java/com/browserstack/app/JavaLocalSample.java @@ -1,19 +1,15 @@ package com.browserstack.app; //Sample test in Java to run Automate session. -import org.openqa.selenium.By; -import org.openqa.selenium.MutableCapabilities; -import org.openqa.selenium.WebDriver; +import org.openqa.selenium.*; import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; import java.time.Duration; import java.util.HashMap; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - public class JavaLocalSample { public static final String AUTOMATE_USERNAME = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : "BROWSERSTACK_USERNAME"; public static final String AUTOMATE_ACCESS_KEY = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : "BROWSERSTACK_ACCESS_KEY"; From c2303907fc5ec3f112de0fa9ec1d62ac7e306b5f Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Fri, 9 Sep 2022 13:39:42 +0530 Subject: [PATCH 14/15] README.md changes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 29ea20b..3ec63e9 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,12 @@ mvn install a. To run single test session. ``` -mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/browserstack-java-sdk-jar com.browserstack.app.JavaSample" +mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/.m2/repository/browserstack-java-sdk/jar com.browserstack.app.JavaSample" ``` b. To run local test session. ``` -mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/browserstack-java-sdk-jar com.browserstack.app.JavaLocalSample" +mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/.m2/repository/browserstack-java-sdk/jar com.browserstack.app.JavaLocalSample" ``` ### Arguments From 1dc926ade57daaf22987ac07067841e39ecd7c1e Mon Sep 17 00:00:00 2001 From: kamal-kaur04 <38219887+kamal-kaur04@users.noreply.github.com> Date: Tue, 13 Sep 2022 14:57:31 +0530 Subject: [PATCH 15/15] updated README and added profiles with maven-exec-plugin --- README.md | 1 + pom.xml | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ec63e9..32ef19e 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="- ``` b. To run local test session. +- Ensure that you have set `browserstackLocal: true` in your `browserstack.yml` config. ``` mvn exec:exec -Dexec.executable="java" -Dexec.classpathScope=test -Dexec.args="-cp %classpath -javaagent:/path/to/.m2/repository/browserstack-java-sdk/jar com.browserstack.app.JavaLocalSample" ``` diff --git a/pom.xml b/pom.xml index 8e71437..2fe9c4a 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ UTF-8 1.8 1.8 - 1.0.6 + 1.0.8 @@ -32,4 +32,70 @@ compile + + + + sample-test + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + java + + + + + test + java + + -classpath + + -javaagent:${settings.localRepository}/com/browserstack/browserstack-java-sdk/${browserstack.sdk.version}/browserstack-java-sdk-${browserstack.sdk.version}.jar + com.browserstack.app.JavaSample + + + + + + + + + + sample-local-test + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + java + + + + + test + java + + -classpath + + -javaagent:${settings.localRepository}/com/browserstack/browserstack-java-sdk/${browserstack.sdk.version}/browserstack-java-sdk-${browserstack.sdk.version}.jar + com.browserstack.app.JavaLocalSample + + + + + + + +