From 65092c5c5b2480dc3c69604c2aed8b48e26bafea Mon Sep 17 00:00:00 2001 From: Hani Date: Sat, 23 Jun 2018 18:19:05 +0530 Subject: [PATCH 1/2] Adding support for BrowserStack Cloud platform --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 37003e0..97ecfe0 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,8 @@ Running test Go to your project directory from terminal and hit following commands * `mvn test (defualt will run on local firefox browser)` * `mvn test "-Dbrowser=chrome" (to use any other browser)` -* `mvn test "-Dcloud_config=saucelab_windows_chrome52" (to run test on cloud test platforms)` +* `mvn test "-Dcloud_config=saucelab_windows_chrome52" (to run test on SauceLabs cloud platform)` +* `mvn test "-Dcloud_config=browserstack_windows_chrome67" (to run test on BrowserStack cloud platform)` Using canned tests in your project ---------------------------------- From 08a4efe925af0623c11673c05b90b8cb9e855154 Mon Sep 17 00:00:00 2001 From: Hani Date: Sat, 23 Jun 2018 18:20:04 +0530 Subject: [PATCH 2/2] Adding support for BrowserStack Cloud platform --- .../browserstack_windows_chrome67.properties | 5 + .../browserstack.properties | 4 + src/main/java/env/Env.java | 133 ++++++++++++------ 3 files changed, 102 insertions(+), 40 deletions(-) create mode 100644 src/main/java/cloudBrowserConfigs/browserstack_windows_chrome67.properties create mode 100644 src/main/java/cloudPlatformConfigs/browserstack.properties diff --git a/src/main/java/cloudBrowserConfigs/browserstack_windows_chrome67.properties b/src/main/java/cloudBrowserConfigs/browserstack_windows_chrome67.properties new file mode 100644 index 0000000..000bf7f --- /dev/null +++ b/src/main/java/cloudBrowserConfigs/browserstack_windows_chrome67.properties @@ -0,0 +1,5 @@ +name=Win10-Chrome67 +os=Windows +os_version=10 +browserName=Chrome +browserVersion=67 \ No newline at end of file diff --git a/src/main/java/cloudPlatformConfigs/browserstack.properties b/src/main/java/cloudPlatformConfigs/browserstack.properties new file mode 100644 index 0000000..2b3ea5a --- /dev/null +++ b/src/main/java/cloudPlatformConfigs/browserstack.properties @@ -0,0 +1,4 @@ +username=your_username +access_key=your_access_key +url=@hub-cloud.browserstack.com/wd/hub +protocol=http \ No newline at end of file diff --git a/src/main/java/env/Env.java b/src/main/java/env/Env.java index 0b8393f..198a854 100644 --- a/src/main/java/env/Env.java +++ b/src/main/java/env/Env.java @@ -17,7 +17,7 @@ import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.safari.SafariDriver; -public class Env +public class Env { static WebDriver driver = null; static String browserName = null; @@ -25,12 +25,12 @@ public class Env static String cloudPlatformConfigFile = null; static String currentPath = System.getProperty("user.dir"); static Properties prop = new Properties(); - + public static String getBrowserName() { browserName = System.getProperty("browser"); cloudBrowserConfigFile = System.getProperty("cloud_config"); - + if(cloudBrowserConfigFile != null) { System.out.println("reading config file"); @@ -38,7 +38,7 @@ public static String getBrowserName() browserName = cloudBrowserConfigFile.split("_")[0]; InputStream input = new FileInputStream(currentPath+"/src/main/java/cloudBrowserConfigs/"+cloudBrowserConfigFile+".properties"); input.close(); - + }catch (Exception e) { e.printStackTrace(); System.exit(0); @@ -47,10 +47,10 @@ public static String getBrowserName() browserName = "ff"; return browserName; } - + public static WebDriver SaucelabDriver(){ System.out.println("Creating Saucelab Driver"); - + try { InputStream input = new FileInputStream(currentPath+"/src/main/java/cloudPlatformConfigs/saucelab.properties"); prop.load(input); @@ -63,19 +63,19 @@ public static WebDriver SaucelabDriver(){ } input.close(); prop.clear(); - + String url = saucelabConfig.get("protocol")+ - "://"+ - saucelabConfig.get("username")+ - ":"+ - saucelabConfig.get("access_key")+ - saucelabConfig.get("url"); - - System.out.println("url :"+url); - URL remoteDriverURL = new URL(url); - - DesiredCapabilities capability = new DesiredCapabilities(); - input = new FileInputStream(currentPath+"/src/main/java/cloudBrowserConfigs/"+cloudBrowserConfigFile+".properties"); + "://"+ + saucelabConfig.get("username")+ + ":"+ + saucelabConfig.get("access_key")+ + saucelabConfig.get("url"); + + System.out.println("url :"+url); + URL remoteDriverURL = new URL(url); + + DesiredCapabilities capability = new DesiredCapabilities(); + input = new FileInputStream(currentPath+"/src/main/java/cloudBrowserConfigs/"+cloudBrowserConfigFile+".properties"); prop.load(input); enuKeys = prop.keys(); while (enuKeys.hasMoreElements()) { @@ -85,22 +85,70 @@ public static WebDriver SaucelabDriver(){ capability.setCapability(key, value); } input.close(); - - driver = new RemoteWebDriver(remoteDriverURL, capability); - + + driver = new RemoteWebDriver(remoteDriverURL, capability); + } catch (Exception e) { e.printStackTrace(); System.exit(0); } - + return driver; } - + + public static WebDriver BrowserStackDriver(){ + System.out.println("Creating BrowserStack Driver"); + + try { + InputStream input = new FileInputStream(currentPath+"/src/main/java/cloudPlatformConfigs/browserstack.properties"); + prop.load(input); + HashMap browserstackConfig = new HashMap(); + Enumeration enuKeys = prop.keys(); + while (enuKeys.hasMoreElements()) { + String key = (String) enuKeys.nextElement(); + String value = prop.getProperty(key); + browserstackConfig.put(key, value); + } + input.close(); + prop.clear(); + + String url = browserstackConfig.get("protocol")+ + "://"+ + browserstackConfig.get("username")+ + ":"+ + browserstackConfig.get("access_key")+ + browserstackConfig.get("url"); + + System.out.println("url :"+url); + URL remoteDriverURL = new URL(url); + + DesiredCapabilities capability = new DesiredCapabilities(); + input = new FileInputStream(currentPath+"/src/main/java/cloudBrowserConfigs/"+cloudBrowserConfigFile+".properties"); + prop.load(input); + enuKeys = prop.keys(); + while (enuKeys.hasMoreElements()) { + String key = (String) enuKeys.nextElement(); + String value = prop.getProperty(key); + System.out.println("key :"+key + " Value :"+value); + capability.setCapability(key, value); + } + input.close(); + + driver = new RemoteWebDriver(remoteDriverURL, capability); + + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + + return driver; + } + public static WebDriver CreateWebDriver(String browser) { - System.out.println("Browser: " + browser); + System.out.println("Browser: " + browser); - switch (browser.toLowerCase()) { + switch (browser.toLowerCase()) { case "ff": case "firefox": //ProfilesIni allProfiles = new ProfilesIni(); @@ -122,22 +170,27 @@ public static WebDriver CreateWebDriver(String browser) case "safari": driver = new SafariDriver(); break; - + case "saucelab": driver = SaucelabDriver(); break; - default: - System.out.println("Invalid browser name "+browser); - System.exit(0); - break; - }//switch - - driver.manage().deleteAllCookies(); - driver.manage().window().maximize(); - driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS); - driver.manage().timeouts().setScriptTimeout(60, TimeUnit.SECONDS); - driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); - - return driver; - } + + case "browserstack": + driver = BrowserStackDriver(); + break; + + default: + System.out.println("Invalid browser name "+browser); + System.exit(0); + break; + }//switch + + driver.manage().deleteAllCookies(); + driver.manage().window().maximize(); + driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS); + driver.manage().timeouts().setScriptTimeout(60, TimeUnit.SECONDS); + driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); + + return driver; } +}