add new testCases. prepare the test to have them into categories
[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.ScreenOrientation;
7 import org.openqa.selenium.remote.RemoteWebElement;
8
9 import io.appium.java_client.android.AndroidDriver;
10 import io.appium.java_client.android.AndroidElement;
11
12 import org.openqa.selenium.support.ui.ExpectedConditions;
13 import org.openqa.selenium.support.ui.WebDriverWait;
14
15 import androidtest.models.CertificatePopUp;
16 import androidtest.models.ElementMenuOptions;
17 import androidtest.models.FilesView;
18 import androidtest.models.LoginForm;
19 import androidtest.models.MainView;
20 import androidtest.models.MenuList;
21 import androidtest.models.NewFolderPopUp;
22 import androidtest.models.RemoveConfirmationView;
23 import androidtest.models.SettingsView;
24 import androidtest.models.WaitAMomentPopUp;
25 import androidtest.tests.Common;
26
27 public class Actions {
28
29 public static MainView login(String url, String user, String password, Boolean isTrusted, AndroidDriver driver) throws InterruptedException {
30 LoginForm loginForm = new LoginForm(driver);
31 CertificatePopUp certificatePopUp = loginForm.typeHostUrl(url);
32 if(!isTrusted){
33 WebDriverWait wait = new WebDriverWait(driver, 30);
34 //sometimes the certificate has been already accept and it doesn't appear again
35 try {
36 wait.until(ExpectedConditions.visibilityOf(certificatePopUp.getOkButtonElement()));
37 //we need to repaint the screen because of some element are misplaced
38 driver.rotate(ScreenOrientation.LANDSCAPE);
39 driver.rotate(ScreenOrientation.PORTRAIT);
40 certificatePopUp.clickOnOkButton();
41 }catch (NoSuchElementException e) {
42
43 }
44
45 }
46 loginForm.typeUserName(user);
47 loginForm.typePassword(password);
48 //TODO. Assert related to check the connection?
49 return loginForm.clickOnConnectButton();
50 }
51
52 public static WaitAMomentPopUp createFolder(String folderName, MainView mainView){
53 NewFolderPopUp newFolderPopUp = mainView.clickOnNewFolderButton();
54 newFolderPopUp.typeNewFolderName(folderName);
55 WaitAMomentPopUp waitAMomentPopUp = newFolderPopUp.clickOnNewFolderOkButton();
56 //TODO. assert here
57 return waitAMomentPopUp;
58 }
59
60
61 public static AndroidElement scrollTillFindElement (String elementName, AndroidElement element, AndroidDriver driver) {
62 AndroidElement fileElement;
63
64 if(element.getAttribute("scrollable").equals("true")){
65 HashMap<String, String> scrollObject = new HashMap<String, String>();
66 scrollObject.put("text", elementName);
67 scrollObject.put("element", ( (RemoteWebElement) element).getId());
68 driver.executeScript("mobile: scrollTo", scrollObject);
69 }
70 try {
71 fileElement = (AndroidElement) driver.findElementByName(elementName);
72 } catch (NoSuchElementException e) {
73 fileElement = null;
74 }
75 return fileElement;
76 }
77
78
79 public static void deleteAccount (MainView mainView) {
80 MenuList menulist = mainView.clickOnMenuButton();
81 SettingsView settingView = menulist.clickOnSettingsButton();
82 deleteAccount(settingView);
83 }
84
85 public static void deleteAccount (SettingsView settingsView) {
86 settingsView.tapOnAccountElement(1, 1000);
87 settingsView.clickOnDeleteAccountElement();
88 }
89
90 public static void clickOnMainLayout(AndroidDriver driver){
91 driver.tap(1, 0, 0, 1);
92 }
93
94 //TODO. convert deleteFodler and deleteFile in deleteElement
95 public static AndroidElement deleteElement(String elementName, MainView mainView, AndroidDriver driver) throws Exception{
96 AndroidElement fileElement;
97 WaitAMomentPopUp waitAMomentPopUp;
98 try{
99 //To open directly the "file list view" and we don't need to know in which view we are
100 driver.startActivity("com.owncloud.android", ".ui.activity.FileDisplayActivity");
101 fileElement = (AndroidElement) driver.findElementByName(elementName);
102 ElementMenuOptions menuOptions = mainView.longPressOnElement(elementName);
103 RemoveConfirmationView removeConfirmationView = menuOptions.clickOnRemove();;
104 waitAMomentPopUp = removeConfirmationView.clickOnRemoteAndLocalButton();
105 Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100);
106 }catch(NoSuchElementException e){
107 fileElement=null;
108 }
109 return fileElement;
110 }
111
112 public static MainView uploadFile(String elementName, MainView mainView) throws InterruptedException{
113 mainView.clickOnUploadButton();
114 FilesView filesView = mainView.clickOnFilesElementUploadFile();
115 filesView.clickOnFileName(elementName);
116 MainView mainViewAfterUploadFile = filesView.clickOnUploadButton();
117 //TO DO. detect when the file is successfully uploaded
118 Thread.sleep(15000);
119 return mainViewAfterUploadFile;
120 }
121
122
123 }