Skip to content

Commit 9e93054

Browse files
committed
Adding Local script files
1 parent ee60227 commit 9e93054

File tree

5 files changed

+172
-7
lines changed

5 files changed

+172
-7
lines changed

java-browserstack/.classpath

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<attribute name="test" value="true"/>
2525
</attributes>
2626
</classpathentry>
27-
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
27+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
2828
<attributes>
2929
<attribute name="maven.pomderived" value="true"/>
3030
</attributes>

java-browserstack/src/test/java/android/BrowserStackAndroid.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ public static void main(String[] args) throws MalformedURLException, Interrupted
2121
DesiredCapabilities capabilities = new DesiredCapabilities();
2222

2323
// Set your access credentials
24-
capabilities.setCapability("browserstack.user", "neerajkumar42");
25-
capabilities.setCapability("browserstack.key", "MXmmyxNzZTYmXyyA8xyB");
24+
capabilities.setCapability("browserstack.user", "YOUR_USERNAME");
25+
capabilities.setCapability("browserstack.key", "YOUR_ACCESS_KEY");
2626

2727
// Set URL of the application under test
28-
capabilities.setCapability("app", "bs://d318ec55142bf92b1fec9fce6904109294db6678");
28+
capabilities.setCapability("app", "bs://<app-id>");
2929

3030
// Specify device and os_version for testing
3131
capabilities.setCapability("device", "Google Pixel 3");
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package android;
2+
3+
import com.browserstack.local.Local;
4+
5+
import java.net.URL;
6+
import java.util.Map;
7+
import java.util.List;
8+
import java.util.HashMap;
9+
10+
import io.appium.java_client.MobileBy;
11+
import io.appium.java_client.android.AndroidDriver;
12+
import io.appium.java_client.android.AndroidElement;
13+
14+
import org.openqa.selenium.support.ui.ExpectedConditions;
15+
import org.openqa.selenium.support.ui.WebDriverWait;
16+
import org.openqa.selenium.remote.DesiredCapabilities;
17+
18+
public class BrowserStackAndroidLocal {
19+
20+
private static Local localInstance;
21+
public static String accessKey = "BROWSERSTACK_USERNAME";
22+
public static String userName = "BROWSERSTACK_ACCESS_KEY";
23+
24+
25+
public static void setupLocal() throws Exception {
26+
localInstance = new Local();
27+
Map<String, String> options = new HashMap<String, String>();
28+
options.put("key", accessKey);
29+
localInstance.start(options);
30+
}
31+
32+
public static void tearDownLocal() throws Exception {
33+
localInstance.stop();
34+
}
35+
36+
37+
38+
public static void main(String[] args) throws Exception {
39+
setupLocal();
40+
41+
DesiredCapabilities capabilities = new DesiredCapabilities();
42+
43+
capabilities.setCapability("browserstack.local", true);
44+
capabilities.setCapability("device", "Samsung Galaxy S7");
45+
capabilities.setCapability("app", "bs://<hashed app-id>");
46+
47+
AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new URL("https://"+userName+":"+accessKey+"@hub.browserstack.com/wd/hub"), capabilities);
48+
49+
AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
50+
ExpectedConditions.elementToBeClickable(MobileBy.id("com.example.android.basicnetworking:id/test_action")));
51+
searchElement.click();
52+
AndroidElement insertTextElement = (AndroidElement) new WebDriverWait(driver, 30).until(
53+
ExpectedConditions.elementToBeClickable(MobileBy.className("android.widget.TextView")));
54+
55+
AndroidElement testElement = null;
56+
List<AndroidElement> allTextViewElements = driver.findElementsByClassName("android.widget.TextView");
57+
Thread.sleep(10);
58+
for(AndroidElement textElement : allTextViewElements) {
59+
if(textElement.getText().contains("The active connection is")) {
60+
testElement = textElement;
61+
}
62+
}
63+
64+
if(testElement == null) {
65+
throw new Error("Cannot find the needed TextView element from app");
66+
}
67+
String matchedString = testElement.getText();
68+
System.out.println(matchedString);
69+
assert(matchedString.contains("The active connection is wifi"));
70+
assert(matchedString.contains("Up and running"));
71+
72+
driver.quit();
73+
74+
tearDownLocal();
75+
76+
}
77+
78+
}

java-browserstack/src/test/java/ios/BrowserStackiOS.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ public static void main(String[] args) throws MalformedURLException, Interrupted
1818
DesiredCapabilities capabilities = new DesiredCapabilities();
1919

2020
// Set your access credentials
21-
capabilities.setCapability("browserstack.user", "neerajkumar42");
22-
capabilities.setCapability("browserstack.key", "MXmmyxNzZTYmXyyA8xyB");
21+
capabilities.setCapability("browserstack.user", "YOUR_USERNAME");
22+
capabilities.setCapability("browserstack.key", "YOUR_ACCESS_KEY");
2323

2424
// Set URL of the application under test
25-
capabilities.setCapability("app", "bs://a2c4c0bd114ce9765af0988a632982cb42688b81");
25+
capabilities.setCapability("app", "bs://<app-id>");
2626

2727
// Specify device and os_version for testing
2828
capabilities.setCapability("device", "iPhone 11 Pro");
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package ios;
2+
3+
import com.browserstack.local.Local;
4+
5+
import java.net.URL;
6+
import java.io.File;
7+
import java.util.Map;
8+
import java.util.HashMap;
9+
import org.apache.commons.io.FileUtils;
10+
11+
import io.appium.java_client.MobileBy;
12+
import io.appium.java_client.ios.IOSDriver;
13+
import io.appium.java_client.ios.IOSElement;
14+
15+
import org.openqa.selenium.WebDriver;
16+
import org.openqa.selenium.OutputType;
17+
import org.openqa.selenium.TakesScreenshot;
18+
import org.openqa.selenium.support.ui.WebDriverWait;
19+
import org.openqa.selenium.remote.DesiredCapabilities;
20+
import org.openqa.selenium.support.ui.ExpectedCondition;
21+
import org.openqa.selenium.support.ui.ExpectedConditions;
22+
23+
24+
public class BrowserStackiOSLocal {
25+
26+
private static Local localInstance;
27+
public static String accessKey = "BROWSERSTACK_USERNAME";
28+
public static String userName = "BROWSERSTACK_ACCESS_KEY";
29+
30+
31+
public static void setupLocal() throws Exception {
32+
localInstance = new Local();
33+
Map<String, String> options = new HashMap<String, String>();
34+
options.put("key", accessKey);
35+
localInstance.start(options);
36+
}
37+
38+
public static void tearDownLocal() throws Exception {
39+
localInstance.stop();
40+
}
41+
42+
43+
public static void main(String[] args) throws Exception {
44+
45+
setupLocal();
46+
47+
DesiredCapabilities capabilities = new DesiredCapabilities();
48+
49+
capabilities.setCapability("browserstack.local", true);
50+
capabilities.setCapability("device", "iPhone 7");
51+
capabilities.setCapability("app", "bs://<hashed app-id>");
52+
53+
IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(new URL("http://"+userName+":"+accessKey+"@hub.browserstack.com/wd/hub"), capabilities);
54+
55+
IOSElement testButton = (IOSElement) new WebDriverWait(driver, 30).until(
56+
ExpectedConditions.elementToBeClickable(MobileBy.AccessibilityId("TestBrowserStackLocal")));
57+
testButton.click();
58+
59+
WebDriverWait wait = new WebDriverWait(driver, 30);
60+
wait.until(new ExpectedCondition<Boolean>() {
61+
@Override
62+
public Boolean apply(WebDriver d) {
63+
String result = d.findElement(MobileBy.AccessibilityId("ResultBrowserStackLocal")).getAttribute("value");
64+
return result != null && result.length() > 0;
65+
}
66+
});
67+
IOSElement resultElement = (IOSElement) driver.findElement(MobileBy.AccessibilityId("ResultBrowserStackLocal"));
68+
69+
String resultString = resultElement.getText().toLowerCase();
70+
System.out.println(resultString);
71+
if(resultString.contains("not working")) {
72+
File scrFile = (File) ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
73+
FileUtils.copyFile(scrFile, new File(System.getProperty("user.dir") + "/screenshot.png"));
74+
System.out.println("Screenshot stored at " + System.getProperty("user.dir") + "/screenshot.png");
75+
throw new Error("Unexpected BrowserStackLocal test result");
76+
}
77+
78+
String expectedString = "Up and running";
79+
assert(resultString.contains(expectedString.toLowerCase()));
80+
81+
driver.quit();
82+
83+
tearDownLocal();
84+
85+
}
86+
87+
}

0 commit comments

Comments
 (0)