add new test cases
[pub/Android/ownCloud.git] / automationTest / src / test / java / androidtest / actions / Actions.java
1 package androidtest.actions;
2
3 import java.util.HashMap;
4
5 import org.openqa.selenium.NoSuchElementException;
6 import org.openqa.selenium.remote.RemoteWebElement;
7
8 import io.appium.java_client.android.AndroidDriver;
9 import io.appium.java_client.android.AndroidElement;
10
11 import org.openqa.selenium.support.ui.ExpectedConditions;
12 import org.openqa.selenium.support.ui.WebDriverWait;
13
14 import androidtest.models.CertificatePopUp;
15 import androidtest.models.ElementMenuOptions;
16 import androidtest.models.FilesView;
17 import androidtest.models.LoginForm;
18 import androidtest.models.MainView;
19 import androidtest.models.MenuList;
20 import androidtest.models.NewFolderPopUp;
21 import androidtest.models.RemoveConfirmationView;
22 import androidtest.models.SettingsView;
23 import androidtest.models.WaitAMomentPopUp;
24 import androidtest.tests.Common;
25
26 public class Actions {
27
28 public static MainView login(String url, String user, String password, Boolean isTrusted, AndroidDriver driver) throws InterruptedException {
29 LoginForm loginForm = new LoginForm(driver);
30 CertificatePopUp certificatePopUp = loginForm.typeHostUrl(url);
31 if(!isTrusted){
32 driver.runAppInBackground(3);
33 WebDriverWait wait = new WebDriverWait(driver, 30);
34 wait.until(ExpectedConditions.visibilityOf(certificatePopUp.getOkButtonElement()));
35 certificatePopUp.clickOnOkButton();
36 }
37 loginForm.typeUserName(user);
38 loginForm.typePassword(password);
39 //TODO. Assert related to check the connection?
40 return loginForm.clickOnConnectButton();
41 }
42
43 public static WaitAMomentPopUp createFolder(String folderName, MainView mainView){
44 NewFolderPopUp newFolderPopUp = mainView.clickOnNewFolderButton();
45 newFolderPopUp.typeNewFolderName(folderName);
46 WaitAMomentPopUp waitAMomentPopUp = newFolderPopUp.clickOnNewFolderOkButton();
47 //TODO. assert here
48 return waitAMomentPopUp;
49 }
50
51
52 public static AndroidElement scrollTillFindElement (String elementName, AndroidElement element, AndroidDriver driver) {
53 AndroidElement fileElement;
54
55 if(element.getAttribute("scrollable").equals("true")){
56 HashMap<String, String> scrollObject = new HashMap<String, String>();
57 scrollObject.put("text", elementName);
58 scrollObject.put("element", ( (RemoteWebElement) element).getId());
59 driver.executeScript("mobile: scrollTo", scrollObject);
60 }
61 try {
62 fileElement = (AndroidElement) driver.findElementByName(elementName);
63 } catch (NoSuchElementException e) {
64 fileElement = null;
65 }
66 return fileElement;
67 }
68
69
70 public static void deleteAccount (MainView mainView) {
71 MenuList menulist = mainView.clickOnMenuButton();
72 SettingsView settingView = menulist.clickOnSettingsButton();
73 deleteAccount(settingView);
74 }
75
76 public static void deleteAccount (SettingsView settingsView) {
77 settingsView.tapOnAccountElement(1, 1000);
78 settingsView.clickOnDeleteAccountElement();
79 }
80
81 public static void clickOnMainLayout(AndroidDriver driver){
82 driver.tap(1, 0, 0, 1);
83 }
84
85 //TODO. convert deleteFodler and deleteFile in deleteElement
86 public static AndroidElement deleteElement(String elementName, MainView mainView, AndroidDriver driver) throws Exception{
87 AndroidElement fileElement;
88 WaitAMomentPopUp waitAMomentPopUp;
89 try{
90 fileElement = (AndroidElement) driver.findElementByName(elementName);
91 ElementMenuOptions menuOptions = mainView.longPressOnElement(elementName);
92 RemoveConfirmationView removeConfirmationView = menuOptions.clickOnRemove();;
93 waitAMomentPopUp = removeConfirmationView.clickOnRemoteAndLocalButton();
94 Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100);
95 }catch(NoSuchElementException e){
96 fileElement=null;
97 }
98 return fileElement;
99 }
100
101 public static MainView uploadFile(String elementName, MainView mainView) throws InterruptedException{
102 mainView.clickOnUploadButton();
103 FilesView filesView = mainView.clickOnFilesElementUploadFile();
104 filesView.clickOnFileName(elementName);
105 MainView mainViewAfterUploadFile = filesView.clickOnUploadButton();
106 //TO DO. detect when the file is successfully uploaded
107 Thread.sleep(15000);
108 return mainViewAfterUploadFile;
109 }
110
111
112 }