Skip to content

Commit 710de75

Browse files
authored
Merge pull request appium-boneyard#157 from padmakarsrinivas/master
Added Appium Browser Tests
2 parents ebc8a47 + 44776f4 commit 710de75

12 files changed

Lines changed: 622 additions & 149 deletions
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
3+
import java.net.MalformedURLException;
4+
import java.net.URL;
5+
6+
import org.openqa.selenium.remote.DesiredCapabilities;
7+
import org.testng.Assert;
8+
import org.testng.annotations.AfterTest;
9+
import org.testng.annotations.BeforeTest;
10+
import org.testng.annotations.Test;
11+
import io.appium.java_client.android.AndroidDriver;
12+
import io.appium.java_client.remote.MobileCapabilityType;
13+
14+
/**
15+
* Android Browser Local Test.
16+
*/
17+
public class AndoridBrowserLocalTest
18+
{
19+
public static AndroidDriver<?> mobiledriver;
20+
@BeforeTest
21+
public void beforeTest( ) throws MalformedURLException {
22+
DesiredCapabilities capabilities = new DesiredCapabilities();
23+
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2");
24+
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
25+
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
26+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");
27+
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
28+
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");
29+
capabilities.setCapability("newCommandTimeout", 2000);
30+
mobiledriver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
31+
}
32+
33+
@AfterTest
34+
public void afterTest( ) {
35+
mobiledriver.quit();
36+
}
37+
38+
@Test
39+
public void launchBrowser() {
40+
mobiledriver.get("http://appium.io/");
41+
Assert.assertEquals(mobiledriver.getCurrentUrl(), "http://appium.io/", "URL Mismatch");
42+
Assert.assertEquals(mobiledriver.getTitle(), "Appium: Mobile App Automation Made Awesome.", "Title Mismatch");
43+
}
44+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
2+
3+
import java.net.MalformedURLException;
4+
import java.net.URL;
5+
6+
import org.openqa.selenium.remote.DesiredCapabilities;
7+
import org.testng.Assert;
8+
import org.testng.annotations.AfterTest;
9+
import org.testng.annotations.BeforeTest;
10+
import org.testng.annotations.Test;
11+
12+
import io.appium.java_client.android.AndroidDriver;
13+
import io.appium.java_client.remote.MobileCapabilityType;
14+
15+
/**
16+
* Android Browser Sauce Labs Test.
17+
*/
18+
public class AndroidBrowserSaucelabsTest{
19+
public static final String USERNAME = "YOUR_USERNAME";
20+
public static final String ACCESS_KEY = "YOUR_ACESS_KEY";
21+
public static final String URL = "https://"+USERNAME+":" + ACCESS_KEY + "@ondemand.saucelabs.com:443/wd/hub";
22+
public static AndroidDriver<?> mobiledriver;
23+
24+
@BeforeTest
25+
public void beforeTest( ) throws MalformedURLException {
26+
DesiredCapabilities capabilities = new DesiredCapabilities();
27+
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2");
28+
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
29+
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
30+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");
31+
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Samsung Galaxy S4 Emulator");
32+
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");
33+
capabilities.setCapability("newCommandTimeout", 2000);
34+
mobiledriver = new AndroidDriver<>(new URL(URL), capabilities);
35+
}
36+
37+
@AfterTest
38+
public void afterTest( ){
39+
mobiledriver.quit();
40+
}
41+
42+
@Test
43+
public static void launchBrowser(){
44+
mobiledriver.get("http://appium.io/");
45+
Assert.assertEquals(mobiledriver.getCurrentUrl(), "http://appium.io/", "URL Mismatch");
46+
Assert.assertEquals(mobiledriver.getTitle(), "Appium: Mobile App Automation Made Awesome.", "Title Mismatch");
47+
}
48+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
2+
3+
import java.net.MalformedURLException;
4+
import java.net.URL;
5+
6+
import org.openqa.selenium.remote.DesiredCapabilities;
7+
import org.testng.Assert;
8+
import org.testng.annotations.AfterTest;
9+
import org.testng.annotations.BeforeTest;
10+
import org.testng.annotations.Test;
11+
12+
import io.appium.java_client.ios.IOSDriver;
13+
import io.appium.java_client.remote.MobileCapabilityType;
14+
15+
/**
16+
* IOS Browser Local Test.
17+
*/
18+
public class IOSBrowserLocalTest
19+
{
20+
public static IOSDriver<?> mobiledriver;
21+
22+
@BeforeTest
23+
public void beforeTest( ) throws MalformedURLException
24+
{
25+
DesiredCapabilities capabilities = new DesiredCapabilities();
26+
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2");
27+
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11.2");
28+
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"iOS");
29+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"XCUITest");
30+
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 7");
31+
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
32+
capabilities.setCapability("newCommandTimeout", 2000);
33+
mobiledriver = new IOSDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
34+
}
35+
36+
@AfterTest
37+
public void afterTest( )
38+
{
39+
mobiledriver.quit();
40+
}
41+
@Test
42+
public static void launchBrowser() throws InterruptedException
43+
{
44+
mobiledriver.get("http://appium.io/");
45+
Assert.assertEquals(mobiledriver.getCurrentUrl(), "http://appium.io/", "URL Mismatch");
46+
Assert.assertEquals(mobiledriver.getTitle(), "Appium: Mobile App Automation Made Awesome.", "Title Mismatch");
47+
}
48+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
3+
import java.net.MalformedURLException;
4+
import java.net.URL;
5+
6+
import org.openqa.selenium.remote.DesiredCapabilities;
7+
import org.testng.Assert;
8+
import org.testng.annotations.AfterTest;
9+
import org.testng.annotations.BeforeTest;
10+
import org.testng.annotations.Test;
11+
12+
import io.appium.java_client.ios.IOSDriver;
13+
import io.appium.java_client.remote.MobileCapabilityType;
14+
15+
/**
16+
* IOS Browser Sauce Labs Test.
17+
*/
18+
public class IOSBrowserSaucelabsTest
19+
{
20+
public static final String USERNAME = "YOUR_USERNAME";
21+
public static final String ACCESS_KEY = "YOUR_ACESS_KEY";
22+
public static final String URL = "https://"+USERNAME+":" + ACCESS_KEY + "@ondemand.saucelabs.com:443/wd/hub";
23+
public static IOSDriver<?> mobiledriver;
24+
25+
@BeforeTest
26+
public void beforeTest( ) throws MalformedURLException {
27+
DesiredCapabilities capabilities = new DesiredCapabilities();
28+
29+
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2");
30+
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11.2.2");
31+
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"iOS");
32+
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"XCUITest");
33+
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone Simulator");
34+
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");
35+
capabilities.setCapability("newCommandTimeout", 2000);
36+
mobiledriver = new IOSDriver<>(new URL(URL), capabilities);
37+
38+
}
39+
40+
@AfterTest
41+
public void afterTest( ) {
42+
mobiledriver.quit();
43+
}
44+
45+
@Test
46+
public static void launchBrowser(){
47+
mobiledriver.get("http://appium.io/");
48+
Assert.assertEquals(mobiledriver.getCurrentUrl(), "http://appium.io/", "URL Mismatch");
49+
Assert.assertEquals(mobiledriver.getTitle(), "Appium: Mobile App Automation Made Awesome.", "Title Mismatch");
50+
}
51+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import com.saucelabs.common.SauceOnDemandAuthentication;
2+
import com.saucelabs.common.SauceOnDemandSessionIdProvider;
3+
import com.saucelabs.junit.SauceOnDemandTestWatcher;
4+
import io.appium.java_client.MobileElement;
5+
import io.appium.java_client.ios.IOSDriver;
6+
import io.appium.java_client.remote.MobileCapabilityType;
7+
import junit.framework.TestCase;
8+
import org.junit.After;
9+
import org.junit.Before;
10+
import org.junit.Rule;
11+
import org.junit.Test;
12+
import org.junit.rules.TestName;
13+
import org.openqa.selenium.remote.DesiredCapabilities;
14+
15+
import java.net.MalformedURLException;
16+
import java.net.URL;
17+
import java.util.concurrent.TimeUnit;
18+
19+
import static junit.framework.Assert.assertEquals;
20+
import static junit.framework.TestCase.assertTrue;
21+
22+
public class SimpleIOSSauceTests implements SauceOnDemandSessionIdProvider {
23+
final private String USERNAME = System.getenv("SAUCE_USERNAME");
24+
final private String ACCESS_KEY = System.getenv("SAUCE_ACCESS_KEY");
25+
private SauceOnDemandAuthentication authentication = new SauceOnDemandAuthentication(USERNAME, ACCESS_KEY);
26+
27+
private IOSDriver<?> driver;
28+
private String sessionId;
29+
30+
@Rule
31+
public SauceOnDemandTestWatcher resultReportingTestWatcher = new SauceOnDemandTestWatcher(this, authentication);
32+
@Override
33+
public String getSessionId() {
34+
return sessionId;
35+
}
36+
37+
public @Rule TestName name = new TestName();
38+
39+
@Before
40+
public void setUp() throws MalformedURLException {
41+
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
42+
desiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1");
43+
desiredCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone Simulator");
44+
desiredCapabilities.setCapability(MobileCapabilityType.APP, "http://appium.s3.amazonaws.com/TestApp6.0.app.zip");
45+
desiredCapabilities.setCapability("appiumVersion", "1.3.4");
46+
desiredCapabilities.setCapability("name", name.getMethodName());
47+
48+
URL sauceUrl = new URL("http://" + authentication.getUsername() + ":"+ authentication.getAccessKey() + "@ondemand.saucelabs.com:80/wd/hub");
49+
50+
driver = new IOSDriver<>(sauceUrl, desiredCapabilities);
51+
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
52+
sessionId = driver.getSessionId().toString();
53+
}
54+
55+
@After
56+
public void tearDown() {
57+
System.out.println("Link to your job: https://saucelabs.com/jobs/" + this.getSessionId());
58+
driver.quit();
59+
}
60+
61+
@SuppressWarnings("deprecation")
62+
@Test
63+
public void testUIComputation() {
64+
65+
// populate text fields with values
66+
MobileElement fieldOne = (MobileElement) driver.findElementByAccessibilityId("TextField1");
67+
fieldOne.sendKeys("12");
68+
69+
MobileElement fieldTwo = (MobileElement) driver.findElementsByClassName("UIATextField").get(1);
70+
fieldTwo.sendKeys("8");
71+
72+
// they should be the same size, and the first should be above the second
73+
assertTrue(fieldOne.getLocation().getY() < fieldTwo.getLocation().getY());
74+
assertEquals(fieldOne.getSize(), fieldTwo.getSize());
75+
76+
// trigger computation by using the button
77+
driver.findElementByAccessibilityId("ComputeSumButton").click();
78+
79+
// is sum equal?
80+
String sum = driver.findElementsByClassName("UIAStaticText").get(0).getText();
81+
TestCase.assertEquals(Integer.parseInt(sum), 20);
82+
}
83+
84+
}

sample-code/examples/java/generic/pom.xml

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,44 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5-
<modelVersion>4.0.0</modelVersion>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
65

7-
<groupId>io.appium</groupId>
8-
<artifactId>appium-generic-test</artifactId>
9-
<version>1.0-SNAPSHOT</version>
6+
<groupId>io.appium</groupId>
7+
<artifactId>appium-generic-test</artifactId>
8+
<version>1.0-SNAPSHOT</version>
109

11-
<repositories>
12-
<repository>
13-
<id>saucelabs-repository</id>
14-
<url>https://repository-saucelabs.forge.cloudbees.com/release</url>
15-
<releases>
16-
<enabled>true</enabled>
17-
</releases>
18-
<snapshots>
19-
<enabled>true</enabled>
20-
</snapshots>
21-
</repository>
22-
</repositories>
10+
<repositories>
11+
<repository>
12+
<id>saucelabs-repository</id>
13+
<url>https://repository-saucelabs.forge.cloudbees.com/release</url>
14+
<releases>
15+
<enabled>true</enabled>
16+
</releases>
17+
<snapshots>
18+
<enabled>true</enabled>
19+
</snapshots>
20+
</repository>
21+
</repositories>
2322

24-
<dependencies>
25-
<dependency>
26-
<groupId>io.appium</groupId>
27-
<artifactId>java-client</artifactId>
28-
<version>3.4.1</version>
29-
</dependency>
30-
<dependency>
31-
<groupId>com.saucelabs</groupId>
32-
<artifactId>sauce_junit</artifactId>
33-
<version>2.1.11</version>
34-
<scope>test</scope>
35-
</dependency>
36-
</dependencies>
23+
<dependencies>
24+
<dependency>
25+
<groupId>io.appium</groupId>
26+
<artifactId>java-client</artifactId>
27+
<version>5.0.1</version>
28+
</dependency>
29+
<dependency>
30+
<groupId>org.testng</groupId>
31+
<artifactId>testng</artifactId>
32+
<scope>compile</scope>
33+
<version>6.10</version>
34+
</dependency>
35+
<dependency>
36+
<groupId>com.saucelabs</groupId>
37+
<artifactId>sauce_junit</artifactId>
38+
<version>2.1.11</version>
39+
<scope>test</scope>
40+
</dependency>
41+
</dependencies>
3742

3843

3944

0 commit comments

Comments
 (0)