c457d20af13b779442df3984c1a69cca58dea756
[pub/Android/ownCloud.git] / automationTest / src / test / java / androidtest / tests / Common.java
1 package androidtest.tests;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.net.URL;
6 import java.text.SimpleDateFormat;
7 import java.util.Calendar;
8 import java.util.Date;
9 import java.util.concurrent.TimeUnit;
10
11 import org.apache.commons.io.FileUtils;
12 import org.openqa.selenium.By;
13 import org.openqa.selenium.NoSuchElementException;
14 import org.openqa.selenium.OutputType;
15 import org.openqa.selenium.TimeoutException;
16 import org.openqa.selenium.WebDriver;
17 import org.openqa.selenium.remote.Augmenter;
18 import org.openqa.selenium.remote.DesiredCapabilities;
19 import org.openqa.selenium.remote.RemoteWebDriver;
20 import org.openqa.selenium.support.ui.WebDriverWait;
21
22 import io.appium.java_client.android.AndroidDriver;
23 import io.appium.java_client.android.AndroidElement;
24 import junit.framework.TestCase;
25
26 public class Common extends TestCase{
27 AndroidDriver driver;
28 static int waitingTime = 30;
29
30 WebDriverWait wait;
31
32 protected void setUpCommonDriver () throws Exception {
33 File rootPath = new File(System.getProperty("user.dir"));
34 File appDir = new File(rootPath,"src/test/resources");
35 File app = new File(appDir,"ownCloud.apk");
36 DesiredCapabilities capabilities = new DesiredCapabilities();
37 capabilities.setCapability("platformName", "Android");
38 capabilities.setCapability("deviceName", "Device");
39 capabilities.setCapability("app", app.getAbsolutePath());
40 capabilities.setCapability("app-package", "com.owncloud.android");
41 capabilities.setCapability("app-activity", ".ui.activity.FileDisplayActivity");
42 capabilities.setCapability("appWaitActivity", ".authentication.AuthenticatorActivity");
43 driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
44 driver.manage().timeouts().implicitlyWait(waitingTime, TimeUnit.SECONDS);
45 wait = new WebDriverWait(driver, waitingTime, 50);
46
47 }
48
49 protected boolean waitForTextPresent(String text, AndroidElement element) throws InterruptedException{
50 for (int second = 0;;second++){
51 if (second >= waitingTime)
52 return false;
53 try{
54 if (text.equals(element.getText()))
55 break;
56 } catch (Exception e){
57
58 }
59 Thread.sleep(1000);
60 }
61 return true;
62 }
63
64 protected boolean isElementPresent(AndroidElement element, By by) {
65 try {
66 element.findElement(by);
67 return true;
68 } catch (NoSuchElementException e) {
69 return false;
70 }
71 }
72
73 protected boolean isElementPresent(AndroidElement element) {
74 try{
75 element.isDisplayed();
76 } catch (NoSuchElementException e){
77 return false;
78 }
79 return true;
80 }
81
82 //pollingTime in milliseconds
83 public static void waitTillElementIsNotPresent (AndroidElement element, int pollingTime) throws Exception {
84 for (int time = 0;;time += pollingTime){
85 if (time >= waitingTime * 1000) //convert to milliseconds
86 break;
87 try{
88 element.isDisplayed();
89 } catch (NoSuchElementException e){
90 return;
91 }
92 Thread.sleep(pollingTime);
93 }
94 throw new TimeoutException();
95 }
96
97 protected void takeScreenShotOnFailed (String testName) throws IOException {
98 File file = ((RemoteWebDriver) driver).getScreenshotAs(OutputType.FILE);
99 SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd");
100 Date today = Calendar.getInstance().getTime();
101 String screenShotName = "ScreenShots/" + dt1.format(today) + "/" + testName + ".png";
102 FileUtils.copyFile(file, new File(screenShotName));
103 }
104
105 }