From 2f1e6343428d0c2fceaf221326bd632ea510f1e6 Mon Sep 17 00:00:00 2001 From: purigarcia Date: Mon, 11 May 2015 11:45:49 +0200 Subject: [PATCH] rename the package, changes some files names, more config variables --- automationTest/.classpath | 5 + .../src/test/java/androidtest/tests/Config.java | 20 --- .../java/androidtest/tests/MoveFileTestSuite.java | 92 -------------- .../androidtest/tests/RenameFileTestSuite.java | 84 ------------ .../java/androidtest/tests/UploadTestSuite.java | 123 ------------------ .../owncloud/android/test/ui}/actions/Actions.java | 50 ++++---- .../test/ui/groups/FailingTestCategory.java | 3 + .../android/test/ui/groups/FlexibleCategories.java | 138 ++++++++++++++++++++ .../android/test/ui/groups/IgnoreTestCategory.java | 4 + .../test/ui/groups/NoIgnoreTestCategory.java | 5 + .../android/test/ui/groups/OtherTestCategory.java | 3 + .../ui/groups/PatternClasspathClassesFinder.java | 141 +++++++++++++++++++++ .../android/test/ui/groups/SmokeTestCategory.java | 5 + .../test/ui/groups/UnfinishedTestCategory.java | 5 + .../android/test/ui}/models/CertificatePopUp.java | 2 +- .../test/ui}/models/ElementMenuOptions.java | 8 +- .../android/test/ui/models/FileDetailsView.java} | 6 +- .../android/test/ui/models/FileListView.java} | 20 +-- .../android/test/ui/models/GmailEmailListView.java | 27 ++++ .../android/test/ui/models/GmailEmailView.java | 30 +++++ .../android/test/ui/models/GmailSendMailView.java | 43 +++++++ .../owncloud/android/test/ui/models/ImageView.java | 56 ++++++++ .../android/test/ui}/models/LoginForm.java | 8 +- .../owncloud/android/test/ui}/models/MenuList.java | 2 +- .../owncloud/android/test/ui}/models/MoveView.java | 4 +- .../android/test/ui}/models/NewFolderPopUp.java | 2 +- .../test/ui/models/PassCodeRequestView.java | 34 +++++ .../android/test/ui/models/PassCodeView.java | 43 +++++++ .../test/ui}/models/RemoveConfirmationView.java | 2 +- .../android/test/ui}/models/SettingsView.java | 4 +- .../owncloud/android/test/ui/models/ShareView.java | 28 ++++ .../android/test/ui/models/UploadFilesView.java} | 16 ++- .../android/test/ui/models/UploadView.java | 26 ++++ .../android/test/ui}/models/WaitAMomentPopUp.java | 2 +- .../android/test/ui/testSuites}/.gitignore | 0 .../android/test/ui/testSuites}/Common.java | 6 +- .../test/ui/testSuites}/CreateFolderTestSuite.java | 32 ++--- .../test/ui/testSuites}/DeleteFileTestSuite.java | 28 ++-- .../test/ui/testSuites}/DeleteFolderTestSuite.java | 30 ++--- .../test/ui/testSuites}/LoginTestSuite.java | 46 +++---- .../test/ui/testSuites}/LogoutTestSuite.java | 22 ++-- .../test/ui/testSuites/MoveFileTestSuite.java | 92 ++++++++++++++ .../test/ui/testSuites}/MoveFolderTestSuite.java | 54 ++++---- .../test/ui/testSuites/PasscodeTestSuite.java | 70 ++++++++++ .../test/ui/testSuites/RefreshFolderTestSuite.java | 55 ++++++++ .../test/ui/testSuites/RenameFileTestSuite.java | 84 ++++++++++++ .../test/ui/testSuites}/RenameFolderTestSuite.java | 42 +++--- .../test/ui/testSuites/RunFailingTests.java | 24 ++++ .../test/ui/testSuites/RunNoIgnoreTests.java | 22 ++++ .../android/test/ui/testSuites/RunSmokeTests.java | 22 ++++ .../test/ui/testSuites/ShareLinkFileTestSuite.java | 72 +++++++++++ .../test/ui/testSuites/UploadTestSuite.java | 124 ++++++++++++++++++ 52 files changed, 1358 insertions(+), 508 deletions(-) delete mode 100644 automationTest/src/test/java/androidtest/tests/Config.java delete mode 100644 automationTest/src/test/java/androidtest/tests/MoveFileTestSuite.java delete mode 100644 automationTest/src/test/java/androidtest/tests/RenameFileTestSuite.java delete mode 100644 automationTest/src/test/java/androidtest/tests/UploadTestSuite.java rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/actions/Actions.java (67%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/FailingTestCategory.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/FlexibleCategories.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/IgnoreTestCategory.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/NoIgnoreTestCategory.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/OtherTestCategory.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/PatternClasspathClassesFinder.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/SmokeTestCategory.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/groups/UnfinishedTestCategory.java rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/CertificatePopUp.java (93%) rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/ElementMenuOptions.java (89%) rename automationTest/src/test/java/{androidtest/models/AppDetailsView.java => com/owncloud/android/test/ui/models/FileDetailsView.java} (89%) rename automationTest/src/test/java/{androidtest/models/MainView.java => com/owncloud/android/test/ui/models/FileListView.java} (90%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailListView.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailView.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailSendMailView.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/ImageView.java rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/LoginForm.java (93%) rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/MenuList.java (94%) rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/MoveView.java (91%) rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/NewFolderPopUp.java (96%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeRequestView.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeView.java rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/RemoveConfirmationView.java (94%) rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/SettingsView.java (95%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/ShareView.java rename automationTest/src/test/java/{androidtest/models/FilesView.java => com/owncloud/android/test/ui/models/UploadFilesView.java} (77%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadView.java rename automationTest/src/test/java/{androidtest => com/owncloud/android/test/ui}/models/WaitAMomentPopUp.java (93%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/.gitignore (100%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/Common.java (95%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/CreateFolderTestSuite.java (59%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/DeleteFileTestSuite.java (50%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/DeleteFolderTestSuite.java (59%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/LoginTestSuite.java (63%) rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/LogoutTestSuite.java (64%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFileTestSuite.java rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/MoveFolderTestSuite.java (51%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/PasscodeTestSuite.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RefreshFolderTestSuite.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFileTestSuite.java rename automationTest/src/test/java/{androidtest/tests => com/owncloud/android/test/ui/testSuites}/RenameFolderTestSuite.java (58%) create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunFailingTests.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunNoIgnoreTests.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunSmokeTests.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/ShareLinkFileTestSuite.java create mode 100644 automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/UploadTestSuite.java diff --git a/automationTest/.classpath b/automationTest/.classpath index 069344d3..c52bcedc 100644 --- a/automationTest/.classpath +++ b/automationTest/.classpath @@ -23,5 +23,10 @@ + + + + + diff --git a/automationTest/src/test/java/androidtest/tests/Config.java b/automationTest/src/test/java/androidtest/tests/Config.java deleted file mode 100644 index 928e27c2..00000000 --- a/automationTest/src/test/java/androidtest/tests/Config.java +++ /dev/null @@ -1,20 +0,0 @@ -package androidtest.tests; - -public final class Config { - - //without http or https - public static final String URL = "owncloudServerVar"; - public static boolean isTrusted = true; - - //without http or https - public static final String URL2 = "owncloudServer2Var"; - public static boolean isTrusted2 = true; - - public static final String user = "owncloudUserVar"; - public static final String password = "owncloudPasswordVar"; - public static final String user2 = "owncloudUser2Var"; - public static final String password2 = "owncloudPassword2Var"; - public static final String userAccount = user + "@"+ URL; - public static final String userAccount2 = user2 + "@"+ URL2; - -} diff --git a/automationTest/src/test/java/androidtest/tests/MoveFileTestSuite.java b/automationTest/src/test/java/androidtest/tests/MoveFileTestSuite.java deleted file mode 100644 index 3d57ee07..00000000 --- a/automationTest/src/test/java/androidtest/tests/MoveFileTestSuite.java +++ /dev/null @@ -1,92 +0,0 @@ -package androidtest.tests; - -import static org.junit.Assert.*; -import io.appium.java_client.android.AndroidDriver; - -import org.junit.After; -import org.junit.Before; -import org.junit.FixMethodOrder; -import org.junit.Rule; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.junit.rules.TestName; -import org.junit.runners.MethodSorters; - -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.ElementMenuOptions; -import androidtest.models.MainView; -import androidtest.models.MoveView; -import androidtest.models.WaitAMomentPopUp; - - - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class MoveFileTestSuite{ - AndroidDriver driver; - Common common; - private String FOLDER_WHERE_MOVE = "folderWhereMove"; - private String FILE_NAME = "test"; - @Rule public TestName name = new TestName(); - - @Before - public void setUp() throws Exception { - common=new Common(); - driver=common.setUpCommonDriver(); - } - - @Test - @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) - public void testMoveFile () throws Exception { - WaitAMomentPopUp waitAMomentPopUp; - - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); - - Common.waitTillElementIsNotPresent(mainView.getProgressCircular(), 1000); - - //check if the folder already exists and if true, delete them - Actions.deleteElement(FOLDER_WHERE_MOVE, mainView, driver); - Actions.deleteElement(FILE_NAME, mainView, driver); - - //Create the folder where the other is gone to be moved - waitAMomentPopUp = Actions.createFolder(FOLDER_WHERE_MOVE, mainView); - Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(FOLDER_WHERE_MOVE); - assertTrue(mainView.getFileElement().isDisplayed()); - - MainView mainViewAfterUploadFile = Actions.uploadFile(FILE_NAME, mainView); - mainViewAfterUploadFile.scrollTillFindElement(FILE_NAME); - assertTrue(mainViewAfterUploadFile.getFileElement().isDisplayed()); - - //select to move the file - ElementMenuOptions menuOptions = mainView.longPressOnElement(FILE_NAME); - MoveView moveView = menuOptions.clickOnMove(); - - //to move to a folder - moveView.scrollTillFindElement(FOLDER_WHERE_MOVE).tap(1,1); - waitAMomentPopUp = moveView.clickOnChoose(); - Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - - //check that the folder moved is inside the other - mainView.scrollTillFindElement(FOLDER_WHERE_MOVE).tap(1,1); - Common.waitTillElementIsNotPresent(mainView.getProgressCircular(), 1000); - Thread.sleep(1000); - mainView.scrollTillFindElement(FILE_NAME); - assertEquals(FILE_NAME , mainView.getFileElement().getText()); - - } - - @After - public void tearDown() throws Exception { - common.takeScreenShotOnFailed(name.getMethodName()); - MainView mainView = new MainView(driver); - driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK); - Actions.deleteElement(FOLDER_WHERE_MOVE, mainView, driver); - Actions.deleteElement(FILE_NAME, mainView, driver); - driver.removeApp("com.owncloud.android"); - driver.quit(); - } - -} diff --git a/automationTest/src/test/java/androidtest/tests/RenameFileTestSuite.java b/automationTest/src/test/java/androidtest/tests/RenameFileTestSuite.java deleted file mode 100644 index 8a07e034..00000000 --- a/automationTest/src/test/java/androidtest/tests/RenameFileTestSuite.java +++ /dev/null @@ -1,84 +0,0 @@ -package androidtest.tests; - -import static org.junit.Assert.*; -import io.appium.java_client.android.AndroidDriver; - -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.experimental.categories.Category; -import org.junit.rules.TestName; -import org.junit.runners.MethodSorters; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.support.ui.ExpectedConditions; - -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.ElementMenuOptions; -import androidtest.models.MainView; -import androidtest.models.NewFolderPopUp; -import androidtest.models.WaitAMomentPopUp; - - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class RenameFileTestSuite{ - - AndroidDriver driver; - Common common; - private Boolean fileHasBeenCreated = false; - private final String OLD_FILE_NAME = "test"; - private final String FILE_NAME = "newNameFile"; - private String CurrentCreatedFile = ""; - - @Rule public TestName name = new TestName(); - - @Before - public void setUp() throws Exception { - common=new Common(); - driver=common.setUpCommonDriver(); - } - - @Test - @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) - public void testRenameFile () throws Exception { - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); - - //TODO. if the file already exists, do not upload - MainView mainViewAfterUploadFile = Actions.uploadFile(OLD_FILE_NAME, mainView); - - //check if the file with the new name already exists, if true delete it - Actions.deleteElement(FILE_NAME, mainView, driver); - - mainViewAfterUploadFile.scrollTillFindElement(OLD_FILE_NAME); - assertTrue(fileHasBeenCreated = mainViewAfterUploadFile.getFileElement().isDisplayed()); - CurrentCreatedFile = OLD_FILE_NAME; - Common.waitTillElementIsNotPresent(mainViewAfterUploadFile.getProgressCircular(), 1000); - common.wait.until(ExpectedConditions.visibilityOf(mainViewAfterUploadFile.getFileElementLayout().findElement(By.id(MainView.getLocalFileIndicator())))); - ElementMenuOptions menuOptions = mainViewAfterUploadFile.longPressOnElement(OLD_FILE_NAME); - NewFolderPopUp newFolderPopUp = menuOptions.clickOnRename(); - newFolderPopUp.typeNewFolderName(FILE_NAME); - WaitAMomentPopUp waitAMomentPopUp = newFolderPopUp.clickOnNewFolderOkButton(); - Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainViewAfterUploadFile.scrollTillFindElement(FILE_NAME); - assertNotNull(mainViewAfterUploadFile.getFileElement()); - assertTrue(mainViewAfterUploadFile.getFileElement().isDisplayed()); - assertEquals(FILE_NAME , mainViewAfterUploadFile.getFileElement().getText()); - CurrentCreatedFile = FILE_NAME; - } - - @After - public void tearDown() throws Exception { - common.takeScreenShotOnFailed(name.getMethodName()); - if (fileHasBeenCreated) { - MainView mainView = new MainView(driver); - Actions.deleteElement(CurrentCreatedFile,mainView, driver); - } - driver.removeApp("com.owncloud.android"); - driver.quit(); - } - -} diff --git a/automationTest/src/test/java/androidtest/tests/UploadTestSuite.java b/automationTest/src/test/java/androidtest/tests/UploadTestSuite.java deleted file mode 100644 index 358024d7..00000000 --- a/automationTest/src/test/java/androidtest/tests/UploadTestSuite.java +++ /dev/null @@ -1,123 +0,0 @@ -package androidtest.tests; - - -import static org.junit.Assert.*; -import io.appium.java_client.MobileBy; -import io.appium.java_client.android.AndroidDriver; - -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.experimental.categories.Category; -import org.junit.rules.TestName; -import org.junit.runners.MethodSorters; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.support.ui.ExpectedConditions; - -import androidtest.actions.Actions; -import androidtest.groups.FailingTestCategory; -import androidtest.groups.IgnoreTestCategory; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.models.AppDetailsView; -import androidtest.models.ElementMenuOptions; -import androidtest.models.GmailEmailListView; -import androidtest.models.GmailEmailView; -import androidtest.models.ImageView; -import androidtest.models.MainView; -import androidtest.models.UploadView; - - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@Category({NoIgnoreTestCategory.class}) -public class UploadTestSuite{ - - AndroidDriver driver; - Common common; - String FILE_NAME = "test"; - - @Rule public TestName name = new TestName(); - - - @Before - public void setUp() throws Exception { - common=new Common(); - driver=common.setUpCommonDriver(); - } - - @Test - @Category(NoIgnoreTestCategory.class) - public void testUploadFile () throws Exception { - - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); - - //check if the file already exists and if true, delete it - Actions.deleteElement(FILE_NAME, mainView, driver); - - MainView mainViewAfterUploadFile = Actions.uploadFile(FILE_NAME, mainView); - - mainViewAfterUploadFile.scrollTillFindElement(FILE_NAME); - assertTrue(mainViewAfterUploadFile.getFileElement().isDisplayed()); - Common.waitTillElementIsNotPresent(mainViewAfterUploadFile.getProgressCircular(), 1000); - common.wait.until(ExpectedConditions.visibilityOf(mainViewAfterUploadFile.getFileElementLayout().findElement(By.id(MainView.getLocalFileIndicator())))); - - - } - - @Test - @Category(IgnoreTestCategory.class) - public void testUploadFromGmail () throws Exception { - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - driver.startActivity("com.google.android.gm", ".ConversationListActivityGmail"); - GmailEmailListView gmailEmailListView = new GmailEmailListView(driver); - GmailEmailView gmailEmailView = gmailEmailListView.clickOnEmail(); - ImageView imageView = gmailEmailView.clickOnfileButton(); - imageView.clickOnOptionsButton(); - imageView.clickOnShareButton(); - imageView.clickOnOwnCloudButton(); - imageView.clickOnJustOnceButton(); - UploadView uploadView = new UploadView(driver); - uploadView.clickOUploadButton(); - driver.startActivity("com.owncloud.android", ".ui.activity.FileDisplayActivity"); - common.wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.name("test.jpg"))); - assertEquals("test.jpg" , driver.findElementByName("test.jpg").getText()); - } - - - @Test - @Category({IgnoreTestCategory.class, FailingTestCategory.class}) - public void testKeepFileUpToDate () throws Exception { - - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); - - Common.waitTillElementIsNotPresent(mainView.getProgressCircular(), 1000); - - MainView mainViewAfterUploadFile = Actions.uploadFile(FILE_NAME, mainView); - mainViewAfterUploadFile.scrollTillFindElement(FILE_NAME); - assertTrue(mainViewAfterUploadFile.getFileElement().isDisplayed()); - - ElementMenuOptions menuOptions = mainViewAfterUploadFile.longPressOnElement(FILE_NAME); - AppDetailsView appDetailsView = menuOptions.clickOnDetails(); - appDetailsView.checkKeepFileUpToDateCheckbox(); - Thread.sleep(3000); - driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK); - assertTrue(common.isElementPresent(mainViewAfterUploadFile.getFileElementLayout(), MobileBy.id(MainView.getFavoriteFileIndicator()))); - - } - - - @After - public void tearDown() throws Exception { - common.takeScreenShotOnFailed(name.getMethodName()); - MainView mainView = new MainView(driver); - Actions.deleteElement(FILE_NAME,mainView, driver); - driver.removeApp("com.owncloud.android"); - driver.quit(); - } - - -} - diff --git a/automationTest/src/test/java/androidtest/actions/Actions.java b/automationTest/src/test/java/com/owncloud/android/test/ui/actions/Actions.java similarity index 67% rename from automationTest/src/test/java/androidtest/actions/Actions.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/actions/Actions.java index b5bebb19..ae41573c 100644 --- a/automationTest/src/test/java/androidtest/actions/Actions.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/actions/Actions.java @@ -1,4 +1,4 @@ -package androidtest.actions; +package com.owncloud.android.test.ui.actions; import java.util.HashMap; @@ -12,21 +12,21 @@ import io.appium.java_client.android.AndroidElement; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import androidtest.models.CertificatePopUp; -import androidtest.models.ElementMenuOptions; -import androidtest.models.FilesView; -import androidtest.models.LoginForm; -import androidtest.models.MainView; -import androidtest.models.MenuList; -import androidtest.models.NewFolderPopUp; -import androidtest.models.RemoveConfirmationView; -import androidtest.models.SettingsView; -import androidtest.models.WaitAMomentPopUp; -import androidtest.tests.Common; +import com.owncloud.android.test.ui.models.CertificatePopUp; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.UploadFilesView; +import com.owncloud.android.test.ui.models.LoginForm; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.MenuList; +import com.owncloud.android.test.ui.models.NewFolderPopUp; +import com.owncloud.android.test.ui.models.RemoveConfirmationView; +import com.owncloud.android.test.ui.models.SettingsView; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; +import com.owncloud.android.test.ui.testSuites.Common; public class Actions { - public static MainView login(String url, String user, String password, Boolean isTrusted, AndroidDriver driver) throws InterruptedException { + public static FileListView login(String url, String user, String password, Boolean isTrusted, AndroidDriver driver) throws InterruptedException { LoginForm loginForm = new LoginForm(driver); CertificatePopUp certificatePopUp = loginForm.typeHostUrl(url); if(!isTrusted){ @@ -49,8 +49,8 @@ public class Actions { return loginForm.clickOnConnectButton(); } - public static WaitAMomentPopUp createFolder(String folderName, MainView mainView){ - NewFolderPopUp newFolderPopUp = mainView.clickOnNewFolderButton(); + public static WaitAMomentPopUp createFolder(String folderName, FileListView fileListView){ + NewFolderPopUp newFolderPopUp = fileListView.clickOnNewFolderButton(); newFolderPopUp.typeNewFolderName(folderName); WaitAMomentPopUp waitAMomentPopUp = newFolderPopUp.clickOnNewFolderOkButton(); //TODO. assert here @@ -76,8 +76,8 @@ public class Actions { } - public static void deleteAccount (MainView mainView) { - MenuList menulist = mainView.clickOnMenuButton(); + public static void deleteAccount (FileListView fileListView) { + MenuList menulist = fileListView.clickOnMenuButton(); SettingsView settingView = menulist.clickOnSettingsButton(); deleteAccount(settingView); } @@ -92,14 +92,14 @@ public class Actions { } //TODO. convert deleteFodler and deleteFile in deleteElement - public static AndroidElement deleteElement(String elementName, MainView mainView, AndroidDriver driver) throws Exception{ + public static AndroidElement deleteElement(String elementName, FileListView fileListView, AndroidDriver driver) throws Exception{ AndroidElement fileElement; WaitAMomentPopUp waitAMomentPopUp; try{ //To open directly the "file list view" and we don't need to know in which view we are driver.startActivity("com.owncloud.android", ".ui.activity.FileDisplayActivity"); fileElement = (AndroidElement) driver.findElementByName(elementName); - ElementMenuOptions menuOptions = mainView.longPressOnElement(elementName); + ElementMenuOptions menuOptions = fileListView.longPressOnElement(elementName); RemoveConfirmationView removeConfirmationView = menuOptions.clickOnRemove();; waitAMomentPopUp = removeConfirmationView.clickOnRemoteAndLocalButton(); Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); @@ -109,14 +109,14 @@ public class Actions { return fileElement; } - public static MainView uploadFile(String elementName, MainView mainView) throws InterruptedException{ - mainView.clickOnUploadButton(); - FilesView filesView = mainView.clickOnFilesElementUploadFile(); - filesView.clickOnFileName(elementName); - MainView mainViewAfterUploadFile = filesView.clickOnUploadButton(); + public static FileListView uploadFile(String elementName, FileListView fileListView) throws InterruptedException{ + fileListView.clickOnUploadButton(); + UploadFilesView uploadFilesView = fileListView.clickOnFilesElementUploadFile(); + uploadFilesView.clickOnFileName(elementName); + FileListView fileListViewAfterUploadFile = uploadFilesView.clickOnUploadButton(); //TO DO. detect when the file is successfully uploaded Thread.sleep(15000); - return mainViewAfterUploadFile; + return fileListViewAfterUploadFile; } diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/FailingTestCategory.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/FailingTestCategory.java new file mode 100644 index 00000000..b8f6eae5 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/FailingTestCategory.java @@ -0,0 +1,3 @@ +package com.owncloud.android.test.ui.groups; + +public interface FailingTestCategory extends IgnoreTestCategory {} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/FlexibleCategories.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/FlexibleCategories.java new file mode 100644 index 00000000..94a019af --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/FlexibleCategories.java @@ -0,0 +1,138 @@ +package com.owncloud.android.test.ui.groups; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import org.junit.Test; +import org.junit.experimental.categories.Categories.CategoryFilter; +import org.junit.experimental.categories.Categories.ExcludeCategory; +import org.junit.experimental.categories.Categories.IncludeCategory; +import org.junit.experimental.categories.Category; +import org.junit.runner.Description; +import org.junit.runner.manipulation.NoTestsRemainException; +import org.junit.runners.Suite; +import org.junit.runners.model.InitializationError; +import org.junit.runners.model.RunnerBuilder; + +/** + * This class is based on org.junit.experimental.categories.Categories from JUnit 4.10. + * + * All anotations and inner classes from the original class Categories are removed, + * since they will be re-used. + * Unfortunately sub-classing Categories did not work. + */ +public class FlexibleCategories extends Suite { + + /** + * Specifies the package which should be scanned for test classes (e.g. @TestScanPackage("my.package")). + * This annotation is required. + */ + @Retention(RetentionPolicy.RUNTIME) + public @interface TestScanPackage { + public String value(); + } + + /** + * Specifies the prefix of matching class names (e.g. @TestClassPrefix("Test")). + * This annotation is optional (default: ""). + */ + @Retention(RetentionPolicy.RUNTIME) + public @interface TestClassPrefix { + public String value(); + } + + /** + * Specifies the suffix of matching class names (e.g. @TestClassSuffix("Test")). + * This annotation is optional (default: "Test"). + */ + @Retention(RetentionPolicy.RUNTIME) + public @interface TestClassSuffix { + public String value(); + } + + /** + * Specifies an annotation for methods which must be present in a matching class (e.g. @TestMethodAnnotationFilter(Test.class)). + * This annotation is optional (default: org.junit.Test.class). + */ + @Retention(RetentionPolicy.RUNTIME) + public @interface TestMethodAnnotation { + public Class value(); + } + + public FlexibleCategories(Class clazz, RunnerBuilder builder) + throws InitializationError { + this(builder, clazz, PatternClasspathClassesFinder.getSuiteClasses( + getTestScanPackage(clazz), getTestClassPrefix(clazz), getTestClassSuffix(clazz), + getTestMethodAnnotation(clazz))); + try { + filter(new CategoryFilter(getIncludedCategory(clazz), + getExcludedCategory(clazz))); + } catch (NoTestsRemainException e) { + // Ignore all classes with no matching tests. + } + assertNoCategorizedDescendentsOfUncategorizeableParents(getDescription()); + } + + public FlexibleCategories(RunnerBuilder builder, Class clazz, + Class[] suiteClasses) throws InitializationError { + super(builder, clazz, suiteClasses); + } + + private static String getTestScanPackage(Class clazz) throws InitializationError { + TestScanPackage annotation = clazz.getAnnotation(TestScanPackage.class); + if (annotation == null) { + throw new InitializationError("No package given to scan for tests!\nUse the annotation @TestScanPackage(\"my.package\") on the test suite " + clazz + "."); + } + return annotation.value(); + } + + private static String getTestClassPrefix(Class clazz) { + TestClassPrefix annotation = clazz.getAnnotation(TestClassPrefix.class); + return annotation == null ? "" : annotation.value(); + } + + private static String getTestClassSuffix(Class clazz) { + TestClassSuffix annotation = clazz.getAnnotation(TestClassSuffix.class); + return annotation == null ? "Test" : annotation.value(); + } + + private static Class getTestMethodAnnotation(Class clazz) { + TestMethodAnnotation annotation = clazz.getAnnotation(TestMethodAnnotation.class); + return annotation == null ? Test.class : annotation.value(); + } + + private Class getIncludedCategory(Class clazz) { + IncludeCategory annotation= clazz.getAnnotation(IncludeCategory.class); + return annotation == null ? null : annotation.value(); + } + + private Class getExcludedCategory(Class clazz) { + ExcludeCategory annotation= clazz.getAnnotation(ExcludeCategory.class); + return annotation == null ? null : annotation.value(); + } + + private void assertNoCategorizedDescendentsOfUncategorizeableParents(Description description) throws InitializationError { + if (!canHaveCategorizedChildren(description)) + assertNoDescendantsHaveCategoryAnnotations(description); + for (Description each : description.getChildren()) + assertNoCategorizedDescendentsOfUncategorizeableParents(each); + } + + private void assertNoDescendantsHaveCategoryAnnotations(Description description) throws InitializationError { + for (Description each : description.getChildren()) { + if (each.getAnnotation(Category.class) != null) + throw new InitializationError("Category annotations on Parameterized classes are not supported on individual methods."); + assertNoDescendantsHaveCategoryAnnotations(each); + } + } + + // If children have names like [0], our current magical category code can't determine their + // parentage. + private static boolean canHaveCategorizedChildren(Description description) { + for (Description each : description.getChildren()) + if (each.getTestClass() == null) + return false; + return true; + } +} \ No newline at end of file diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/IgnoreTestCategory.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/IgnoreTestCategory.java new file mode 100644 index 00000000..6d252f3e --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/IgnoreTestCategory.java @@ -0,0 +1,4 @@ +package com.owncloud.android.test.ui.groups; + +public interface IgnoreTestCategory {} + diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/NoIgnoreTestCategory.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/NoIgnoreTestCategory.java new file mode 100644 index 00000000..50d41701 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/NoIgnoreTestCategory.java @@ -0,0 +1,5 @@ +package com.owncloud.android.test.ui.groups; + +public interface NoIgnoreTestCategory { + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/OtherTestCategory.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/OtherTestCategory.java new file mode 100644 index 00000000..8f0094e3 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/OtherTestCategory.java @@ -0,0 +1,3 @@ +package com.owncloud.android.test.ui.groups; + +public interface OtherTestCategory extends IgnoreTestCategory {} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/PatternClasspathClassesFinder.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/PatternClasspathClassesFinder.java new file mode 100644 index 00000000..b5988830 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/PatternClasspathClassesFinder.java @@ -0,0 +1,141 @@ +package com.owncloud.android.test.ui.groups; + +import java.io.File; +import java.io.IOException; +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +/** + * + * Modified version of ClasspathClassesFinder from: + * http://linsolas.free.fr/wordpress/index.php/2011/02/how-to-categorize-junit-tests-with-maven/ + * + * The difference is, that it does not search for annotated classes but for classes with a certain + * class name prefix and suffix. + */ +public final class PatternClasspathClassesFinder { + + /** + * Get the list of classes of a given package name, and that are annotated + * by a given annotation. + * + * @param packageName + * The package name of the classes. + * @param classPrefix + * The prefix of the class name. + * @param classSuffix + * The suffix of the class name. + * @param methodAnnotation + * Only return classes containing methods annotated with methodAnnotation. + * @return The List of classes that matches the requirements. + */ + public static Class[] getSuiteClasses(String packageName, + String classPrefix, String classSuffix, + Class methodAnnotation) { + try { + return getClasses(packageName, classPrefix, classSuffix, methodAnnotation); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * Get the list of classes of a given package name, and that are annotated + * by a given annotation. + * + * @param packageName + * The package name of the classes. + * @param classPrefix + * The prefix of the class name. + * @param classSuffix + * The suffix of the class name. + * @param methodAnnotation + * Only return classes containing methods annotated with methodAnnotation. + * @return The List of classes that matches the requirements. + * @throws ClassNotFoundException + * If something goes wrong... + * @throws IOException + * If something goes wrong... + */ + private static Class[] getClasses(String packageName, + String classPrefix, String classSuffix, + Class methodAnnotation) + throws ClassNotFoundException, IOException { + ClassLoader classLoader = Thread.currentThread() + .getContextClassLoader(); + String path = packageName.replace('.', '/'); + // Get classpath + Enumeration resources = classLoader.getResources(path); + List dirs = new ArrayList(); + while (resources.hasMoreElements()) { + URL resource = resources.nextElement(); + dirs.add(new File(resource.getFile())); + } + // For each classpath, get the classes. + ArrayList> classes = new ArrayList>(); + for (File directory : dirs) { + classes.addAll(findClasses(directory, packageName, classPrefix, classSuffix, methodAnnotation)); + } + return classes.toArray(new Class[classes.size()]); + } + + /** + * Find classes, in a given directory (recursively), for a given package + * name, that are annotated by a given annotation. + * + * @param directory + * The directory where to look for. + * @param packageName + * The package name of the classes. + * @param classPrefix + * The prefix of the class name. + * @param classSuffix + * The suffix of the class name. + * @param methodAnnotation + * Only return classes containing methods annotated with methodAnnotation. + * @return The List of classes that matches the requirements. + * @throws ClassNotFoundException + * If something goes wrong... + */ + private static List> findClasses(File directory, + String packageName, String classPrefix, String classSuffix, + Class methodAnnotation) + throws ClassNotFoundException { + List> classes = new ArrayList>(); + if (!directory.exists()) { + return classes; + } + File[] files = directory.listFiles(); + for (File file : files) { + if (file.isDirectory()) { + classes.addAll(findClasses(file, + packageName + "." + file.getName(), classPrefix, classSuffix, methodAnnotation)); + } else if (file.getName().startsWith(classPrefix) && file.getName().endsWith(classSuffix + ".class")) { + // We remove the .class at the end of the filename to get the + // class name... + Class clazz = Class.forName(packageName + + '.' + + file.getName().substring(0, + file.getName().length() - 6)); + + // Check, if class contains test methods (prevent "No runnable methods" exception): + boolean classHasTest = false; + for (Method method : clazz.getMethods()) { + if (method.getAnnotation(methodAnnotation) != null) { + classHasTest = true; + break; + } + } + if (classHasTest) { + classes.add(clazz); + } + } + } + return classes; + } +} \ No newline at end of file diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/SmokeTestCategory.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/SmokeTestCategory.java new file mode 100644 index 00000000..69f3ad10 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/SmokeTestCategory.java @@ -0,0 +1,5 @@ +package com.owncloud.android.test.ui.groups; + +public interface SmokeTestCategory { + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/groups/UnfinishedTestCategory.java b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/UnfinishedTestCategory.java new file mode 100644 index 00000000..8d66b2bd --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/groups/UnfinishedTestCategory.java @@ -0,0 +1,5 @@ +package com.owncloud.android.test.ui.groups; + +public interface UnfinishedTestCategory extends IgnoreTestCategory{ + +} diff --git a/automationTest/src/test/java/androidtest/models/CertificatePopUp.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/CertificatePopUp.java similarity index 93% rename from automationTest/src/test/java/androidtest/models/CertificatePopUp.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/CertificatePopUp.java index dbcffcc5..41cd4ae4 100644 --- a/automationTest/src/test/java/androidtest/models/CertificatePopUp.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/CertificatePopUp.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; diff --git a/automationTest/src/test/java/androidtest/models/ElementMenuOptions.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/ElementMenuOptions.java similarity index 89% rename from automationTest/src/test/java/androidtest/models/ElementMenuOptions.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/ElementMenuOptions.java index a809d47e..844ad1fe 100644 --- a/automationTest/src/test/java/androidtest/models/ElementMenuOptions.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/ElementMenuOptions.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; @@ -31,10 +31,10 @@ public class ElementMenuOptions { PageFactory.initElements(new AppiumFieldDecorator(driver), this); } - public AppDetailsView clickOnDetails () { + public FileDetailsView clickOnDetails () { detailsFileElement.click(); - AppDetailsView appDetailsView = new AppDetailsView(driver); - return appDetailsView; + FileDetailsView fileDetailsView = new FileDetailsView(driver); + return fileDetailsView; } public RemoveConfirmationView clickOnRemove () { diff --git a/automationTest/src/test/java/androidtest/models/AppDetailsView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/FileDetailsView.java similarity index 89% rename from automationTest/src/test/java/androidtest/models/AppDetailsView.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/FileDetailsView.java index 75ce4d9f..1410d958 100644 --- a/automationTest/src/test/java/androidtest/models/AppDetailsView.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/FileDetailsView.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; @@ -8,7 +8,7 @@ import io.appium.java_client.pagefactory.AppiumFieldDecorator; import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; -public class AppDetailsView { +public class FileDetailsView { final AndroidDriver driver; @CacheLookup @@ -18,7 +18,7 @@ public class AppDetailsView { @AndroidFindBy(id = "com.owncloud.android:id/fdProgressBar") private AndroidElement progressBar; - public AppDetailsView (AndroidDriver driver) { + public FileDetailsView (AndroidDriver driver) { this.driver = driver; PageFactory.initElements(new AppiumFieldDecorator(driver), this); } diff --git a/automationTest/src/test/java/androidtest/models/MainView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/FileListView.java similarity index 90% rename from automationTest/src/test/java/androidtest/models/MainView.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/FileListView.java index 0c28bf09..f7534747 100644 --- a/automationTest/src/test/java/androidtest/models/MainView.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/FileListView.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import java.util.List; @@ -11,11 +11,11 @@ import io.appium.java_client.pagefactory.AppiumFieldDecorator; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; - import org.openqa.selenium.Point; -import androidtest.actions.Actions; -public class MainView { +import com.owncloud.android.test.ui.actions.Actions; + +public class FileListView { final AndroidDriver driver; @AndroidFindBy(uiAutomator = "new UiSelector().description(\"More options\")") @@ -61,9 +61,10 @@ public class MainView { private static String localFileIndicator = "com.owncloud.android:id/localFileIndicator"; private static String favoriteFileIndicator = "com.owncloud.android:id/favoriteIcon"; + private static String sharedElementIndicator = "com.owncloud.android:id/sharedIcon"; - public MainView (AndroidDriver driver) { + public FileListView (AndroidDriver driver) { this.driver = driver; PageFactory.initElements(new AppiumFieldDecorator(driver), this); } @@ -94,10 +95,10 @@ public class MainView { uploadButton.click(); } - public FilesView clickOnFilesElementUploadFile () { + public UploadFilesView clickOnFilesElementUploadFile () { filesElementUploadFile.click(); - FilesView filesView = new FilesView(driver); - return filesView; + UploadFilesView uploadFilesView = new UploadFilesView(driver); + return uploadFilesView; } public AndroidElement getTitleTextElement () { @@ -157,6 +158,9 @@ public class MainView { return favoriteFileIndicator; } + public static String getSharedElementIndicator() { + return sharedElementIndicator; + } public void pulldownToRefresh () throws InterruptedException { Point listLocation = listLayout.getLocation(); driver.swipe(listLocation.getX(),listLocation.getY(), listLocation.getX(),listLocation.getY()+1000, 5000); diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailListView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailListView.java new file mode 100644 index 00000000..5bf36901 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailListView.java @@ -0,0 +1,27 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; +import org.openqa.selenium.support.PageFactory; + +public class GmailEmailListView { + + final AndroidDriver driver; + + @AndroidFindBy(uiAutomator = "new UiSelector().description(\"me about UploadFile, at 9:53 AM, conversation read\")") + private AndroidElement email; + + public GmailEmailListView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public GmailEmailView clickOnEmail (){ + email.click(); + GmailEmailView gmailEmailView = new GmailEmailView(driver); + return gmailEmailView; + } + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailView.java new file mode 100644 index 00000000..a5797014 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailEmailView.java @@ -0,0 +1,30 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +import org.openqa.selenium.support.CacheLookup; +import org.openqa.selenium.support.PageFactory; + +import com.owncloud.android.test.ui.testSuites.Config; + +public class GmailEmailView { + final AndroidDriver driver; + + @CacheLookup + @AndroidFindBy(name = Config.fileToTestSendByEmailName) + private AndroidElement fileButton; + + public GmailEmailView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public ImageView clickOnfileButton (){ + fileButton.click(); + ImageView imageView = new ImageView(driver); + return imageView; + } +} \ No newline at end of file diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailSendMailView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailSendMailView.java new file mode 100644 index 00000000..264a61c4 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/GmailSendMailView.java @@ -0,0 +1,43 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +import org.openqa.selenium.support.CacheLookup; +import org.openqa.selenium.support.PageFactory; + +public class GmailSendMailView { + final AndroidDriver driver; + + @CacheLookup + @AndroidFindBy(uiAutomator = "new UiSelector().description(\"To\")") + private AndroidElement toTextField; + + @CacheLookup + @AndroidFindBy(name = "Subject") + private AndroidElement subjectTextField; + + @CacheLookup + @AndroidFindBy(uiAutomator = "new UiSelector().description(\"Send\")") + private AndroidElement sendButton; + + public GmailSendMailView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public void typeToEmailAdress (String email) { + toTextField.sendKeys(email + "\n"); + } + + public void clickOnSendButton () { + sendButton.click(); + } + + public void typeSubject (String subject) { + subjectTextField.clear(); + subjectTextField.sendKeys(subject); + } +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/ImageView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/ImageView.java new file mode 100644 index 00000000..da8c30b6 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/ImageView.java @@ -0,0 +1,56 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +import org.openqa.selenium.support.CacheLookup; +import org.openqa.selenium.support.PageFactory; + +import com.owncloud.android.test.ui.actions.Actions; + + +public class ImageView { + final AndroidDriver driver; + + @CacheLookup + @AndroidFindBy(uiAutomator = "new UiSelector().description(\"More options\")") + private AndroidElement optionsButton; + + @AndroidFindBy(name = "Share") + private AndroidElement shareButton; + + @AndroidFindBy(name = "ownCloud") + private AndroidElement ownCloudButton; + + @AndroidFindBy(name = "Just once") + private AndroidElement justOnceButton; + + @AndroidFindBy(id = "android:id/resolver_list") + private AndroidElement sharingAppsLayout; + + public ImageView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public void clickOnOptionsButton(){ + optionsButton.click(); + } + + public void clickOnShareButton(){ + shareButton.click(); + } + + public void clickOnOwnCloudButton(){ + if (! ownCloudButton.isDisplayed()) { + Actions.scrollTillFindElement("ownCloud", sharingAppsLayout, driver); + } + ownCloudButton.click(); + } + + public void clickOnJustOnceButton(){ + justOnceButton.click(); + } +} diff --git a/automationTest/src/test/java/androidtest/models/LoginForm.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/LoginForm.java similarity index 93% rename from automationTest/src/test/java/androidtest/models/LoginForm.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/LoginForm.java index 11755d6f..6971cc23 100644 --- a/automationTest/src/test/java/androidtest/models/LoginForm.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/LoginForm.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; @@ -62,10 +62,10 @@ public class LoginForm { //driver.hideKeyboard(); } - public MainView clickOnConnectButton () { + public FileListView clickOnConnectButton () { connectButton.click(); - MainView mainView = new MainView(driver); - return mainView; + FileListView fileListView = new FileListView(driver); + return fileListView; } public AndroidElement gethostUrlInput () { diff --git a/automationTest/src/test/java/androidtest/models/MenuList.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/MenuList.java similarity index 94% rename from automationTest/src/test/java/androidtest/models/MenuList.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/MenuList.java index 466fa1c7..9dade478 100644 --- a/automationTest/src/test/java/androidtest/models/MenuList.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/MenuList.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import org.openqa.selenium.support.PageFactory; diff --git a/automationTest/src/test/java/androidtest/models/MoveView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/MoveView.java similarity index 91% rename from automationTest/src/test/java/androidtest/models/MoveView.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/MoveView.java index f54ba284..5be7b69d 100644 --- a/automationTest/src/test/java/androidtest/models/MoveView.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/MoveView.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; @@ -8,7 +8,7 @@ import io.appium.java_client.pagefactory.AppiumFieldDecorator; import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; -import androidtest.actions.Actions; +import com.owncloud.android.test.ui.actions.Actions; public class MoveView { final AndroidDriver driver; diff --git a/automationTest/src/test/java/androidtest/models/NewFolderPopUp.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/NewFolderPopUp.java similarity index 96% rename from automationTest/src/test/java/androidtest/models/NewFolderPopUp.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/NewFolderPopUp.java index 31a2124a..560c9abe 100644 --- a/automationTest/src/test/java/androidtest/models/NewFolderPopUp.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/NewFolderPopUp.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import org.openqa.selenium.support.PageFactory; diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeRequestView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeRequestView.java new file mode 100644 index 00000000..05d52487 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeRequestView.java @@ -0,0 +1,34 @@ +package com.owncloud.android.test.ui.models; + +import org.openqa.selenium.support.PageFactory; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +public class PassCodeRequestView { +final AndroidDriver driver; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(0)") + private AndroidElement codeElement1; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(1)") + private AndroidElement codeElement2; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(2)") + private AndroidElement codeElement3; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(3)") + private AndroidElement codeElement4; + + public PassCodeRequestView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public void enterPasscode(String codeNumber1, String codeNumber2, String codeNumber3, String codeNumber4){ + codeElement1.sendKeys(codeNumber1 + codeNumber1 + codeNumber1 + codeNumber1); + } + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeView.java new file mode 100644 index 00000000..a101823f --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/PassCodeView.java @@ -0,0 +1,43 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +import org.openqa.selenium.support.PageFactory; + +public class PassCodeView { + final AndroidDriver driver; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(0)") + private AndroidElement codeElement1; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(1)") + private AndroidElement codeElement2; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(2)") + private AndroidElement codeElement3; + + @AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.EditText\").index(3)") + private AndroidElement codeElement4; + + @AndroidFindBy(name = "Cancel") + private AndroidElement cancelButton; + + public PassCodeView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public PassCodeView enterPasscode(String codeNumber1, String codeNumber2, String codeNumber3, String codeNumber4){ + codeElement1.sendKeys(codeNumber1 + codeNumber1 + codeNumber1 + codeNumber1); + return this; + } + public SettingsView reenterPasscode(String codeNumber1, String codeNumber2, String codeNumber3, String codeNumber4){ + codeElement1.sendKeys(codeNumber1 + codeNumber1 + codeNumber1 + codeNumber1); + SettingsView settingsView = new SettingsView(driver); + return settingsView; + } + +} diff --git a/automationTest/src/test/java/androidtest/models/RemoveConfirmationView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/RemoveConfirmationView.java similarity index 94% rename from automationTest/src/test/java/androidtest/models/RemoveConfirmationView.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/RemoveConfirmationView.java index e9a1ba9d..1458e4fe 100644 --- a/automationTest/src/test/java/androidtest/models/RemoveConfirmationView.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/RemoveConfirmationView.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; diff --git a/automationTest/src/test/java/androidtest/models/SettingsView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/SettingsView.java similarity index 95% rename from automationTest/src/test/java/androidtest/models/SettingsView.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/SettingsView.java index 4e3aa48e..eeea7bf3 100644 --- a/automationTest/src/test/java/androidtest/models/SettingsView.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/SettingsView.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; @@ -8,7 +8,7 @@ import io.appium.java_client.pagefactory.AppiumFieldDecorator; import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; -import androidtest.tests.Config; +import com.owncloud.android.test.ui.testSuites.Config; public class SettingsView { final AndroidDriver driver; diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/ShareView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/ShareView.java new file mode 100644 index 00000000..b9258bd4 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/ShareView.java @@ -0,0 +1,28 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +import org.openqa.selenium.support.CacheLookup; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; + +public class ShareView { + final AndroidDriver driver; + + @CacheLookup + @FindBy(id = "android:id/select_dialog_listview") + private AndroidElement listViewLayout; + + public ShareView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public AndroidElement getListViewLayout () { + return listViewLayout; + } + + +} diff --git a/automationTest/src/test/java/androidtest/models/FilesView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadFilesView.java similarity index 77% rename from automationTest/src/test/java/androidtest/models/FilesView.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadFilesView.java index c913b104..f2af739e 100644 --- a/automationTest/src/test/java/androidtest/models/FilesView.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadFilesView.java @@ -1,14 +1,16 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.pagefactory.AndroidFindBy; import io.appium.java_client.pagefactory.AppiumFieldDecorator; + import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; -import androidtest.actions.Actions; -public class FilesView{ +import com.owncloud.android.test.ui.actions.Actions; + +public class UploadFilesView{ final AndroidDriver driver; @CacheLookup @@ -21,15 +23,15 @@ public class FilesView{ private AndroidElement fileElement; - public FilesView (AndroidDriver driver) { + public UploadFilesView (AndroidDriver driver) { this.driver = driver; PageFactory.initElements(new AppiumFieldDecorator(driver), this); } - public MainView clickOnUploadButton () { + public FileListView clickOnUploadButton () { uploadButton.click(); - MainView mainView = new MainView (driver); - return mainView; + FileListView fileListView = new FileListView (driver); + return fileListView; } //change to scrollTillFindElement diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadView.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadView.java new file mode 100644 index 00000000..26397f55 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/UploadView.java @@ -0,0 +1,26 @@ +package com.owncloud.android.test.ui.models; + +import io.appium.java_client.android.AndroidDriver; +import io.appium.java_client.android.AndroidElement; +import io.appium.java_client.pagefactory.AndroidFindBy; +import io.appium.java_client.pagefactory.AppiumFieldDecorator; + +import org.openqa.selenium.support.CacheLookup; +import org.openqa.selenium.support.PageFactory; + +public class UploadView { + final AndroidDriver driver; + + @CacheLookup + @AndroidFindBy(name = "Upload") + private AndroidElement uploadButton; + + public UploadView (AndroidDriver driver) { + this.driver = driver; + PageFactory.initElements(new AppiumFieldDecorator(driver), this); + } + + public void clickOUploadButton () { + uploadButton.click(); + } +} diff --git a/automationTest/src/test/java/androidtest/models/WaitAMomentPopUp.java b/automationTest/src/test/java/com/owncloud/android/test/ui/models/WaitAMomentPopUp.java similarity index 93% rename from automationTest/src/test/java/androidtest/models/WaitAMomentPopUp.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/models/WaitAMomentPopUp.java index f566e4a2..edef1d17 100644 --- a/automationTest/src/test/java/androidtest/models/WaitAMomentPopUp.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/models/WaitAMomentPopUp.java @@ -1,4 +1,4 @@ -package androidtest.models; +package com.owncloud.android.test.ui.models; import org.openqa.selenium.support.PageFactory; diff --git a/automationTest/src/test/java/androidtest/tests/.gitignore b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/.gitignore similarity index 100% rename from automationTest/src/test/java/androidtest/tests/.gitignore rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/.gitignore diff --git a/automationTest/src/test/java/androidtest/tests/Common.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/Common.java similarity index 95% rename from automationTest/src/test/java/androidtest/tests/Common.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/Common.java index aeab97d6..d34e6e22 100644 --- a/automationTest/src/test/java/androidtest/tests/Common.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/Common.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import java.io.File; @@ -99,12 +99,12 @@ public class Common{ FileUtils.copyFile(file, new File(screenShotName)); } - protected void assertIsInMainView() throws InterruptedException { + protected void assertIsInFileListView() throws InterruptedException { assertTrue(waitForTextPresent("ownCloud", (AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"android:id/action_bar_title\")"))); assertTrue(isElementPresent((AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().description(\"Upload\")"))); } - protected void assertIsNotInMainView() throws InterruptedException { + protected void assertIsNotInFileListView() throws InterruptedException { AndroidElement fileElement; assertTrue(waitForTextPresent("ownCloud", (AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"android:id/action_bar_title\")"))); try { diff --git a/automationTest/src/test/java/androidtest/tests/CreateFolderTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/CreateFolderTestSuite.java similarity index 59% rename from automationTest/src/test/java/androidtest/tests/CreateFolderTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/CreateFolderTestSuite.java index feaeb0ab..a2bdab33 100644 --- a/automationTest/src/test/java/androidtest/tests/CreateFolderTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/CreateFolderTestSuite.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver; @@ -12,11 +12,11 @@ import org.junit.runners.MethodSorters; import org.junit.FixMethodOrder; import org.junit.Test; -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.MainView; -import androidtest.models.WaitAMomentPopUp; +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @@ -41,27 +41,27 @@ public class CreateFolderTestSuite{ public void testCreateNewFolder () throws Exception { String NEW_FOLDER_NAME = "testCreateFolder"; - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); //check if the folder already exists and if true, delete them - Actions.deleteElement(NEW_FOLDER_NAME, mainView, driver); + Actions.deleteElement(NEW_FOLDER_NAME, fileListView, driver); - WaitAMomentPopUp waitAMomentPopUp = Actions.createFolder(NEW_FOLDER_NAME, mainView); + WaitAMomentPopUp waitAMomentPopUp = Actions.createFolder(NEW_FOLDER_NAME, fileListView); Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(FOLDER_NAME); - assertNotNull(mainView.getFileElement()); - assertTrue(folderHasBeenCreated=mainView.getFileElement().isDisplayed()); + fileListView.scrollTillFindElement(FOLDER_NAME); + assertNotNull(fileListView.getFileElement()); + assertTrue(folderHasBeenCreated=fileListView.getFileElement().isDisplayed()); CurrentCreatedFolder = FOLDER_NAME; - assertEquals(FOLDER_NAME , mainView.getFileElement().getText()); + assertEquals(FOLDER_NAME , fileListView.getFileElement().getText()); } @After public void tearDown() throws Exception { common.takeScreenShotOnFailed(name.getMethodName()); if (folderHasBeenCreated) { - MainView mainView = new MainView(driver); - Actions.deleteElement(CurrentCreatedFolder, mainView, driver); + FileListView fileListView = new FileListView(driver); + Actions.deleteElement(CurrentCreatedFolder, fileListView, driver); } driver.removeApp("com.owncloud.android"); driver.quit(); diff --git a/automationTest/src/test/java/androidtest/tests/DeleteFileTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/DeleteFileTestSuite.java similarity index 50% rename from automationTest/src/test/java/androidtest/tests/DeleteFileTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/DeleteFileTestSuite.java index d30b4c6c..28e6b251 100644 --- a/automationTest/src/test/java/androidtest/tests/DeleteFileTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/DeleteFileTestSuite.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver; @@ -14,10 +14,10 @@ import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.support.ui.ExpectedConditions; -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.MainView; +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.FileListView; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @@ -25,7 +25,7 @@ public class DeleteFileTestSuite{ AndroidDriver driver; Common common; - private final String FILE_NAME = "test"; + private final String FILE_NAME = Config.fileToTestName; @Rule public TestName name = new TestName(); @@ -38,18 +38,18 @@ public class DeleteFileTestSuite{ @Test @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) public void testDeleteFile () throws Exception { - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); //TODO. if the file already exists, do not upload - MainView mainViewAfterUploadFile = Actions.uploadFile(FILE_NAME, mainView); + FileListView fileListViewAfterUploadFile = Actions.uploadFile(FILE_NAME, fileListView); - mainViewAfterUploadFile.scrollTillFindElement(FILE_NAME); - Common.waitTillElementIsNotPresent(mainViewAfterUploadFile.getProgressCircular(), 1000); - common.wait.until(ExpectedConditions.visibilityOf(mainViewAfterUploadFile.getFileElementLayout().findElement(By.id(MainView.getLocalFileIndicator())))); + fileListViewAfterUploadFile.scrollTillFindElement(FILE_NAME); + Common.waitTillElementIsNotPresent(fileListViewAfterUploadFile.getProgressCircular(), 1000); + common.wait.until(ExpectedConditions.visibilityOf(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getLocalFileIndicator())))); - Actions.deleteElement(FILE_NAME,mainViewAfterUploadFile, driver); - assertFalse(mainViewAfterUploadFile.getFileElement().isDisplayed()); + Actions.deleteElement(FILE_NAME,fileListViewAfterUploadFile, driver); + assertFalse(fileListViewAfterUploadFile.getFileElement().isDisplayed()); } @After diff --git a/automationTest/src/test/java/androidtest/tests/DeleteFolderTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/DeleteFolderTestSuite.java similarity index 59% rename from automationTest/src/test/java/androidtest/tests/DeleteFolderTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/DeleteFolderTestSuite.java index fe7aabda..105a42dc 100644 --- a/automationTest/src/test/java/androidtest/tests/DeleteFolderTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/DeleteFolderTestSuite.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver; @@ -12,11 +12,11 @@ import org.junit.runners.MethodSorters; import org.junit.FixMethodOrder; import org.junit.Test; -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.MainView; -import androidtest.models.WaitAMomentPopUp; +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @@ -38,27 +38,27 @@ public class DeleteFolderTestSuite{ @Test @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) public void testDeleteFolder () throws Exception { - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); //TODO. if the folder already exists, do no created //create the folder - WaitAMomentPopUp waitAMomentPopUp = Actions.createFolder(FOLDER_NAME, mainView); + WaitAMomentPopUp waitAMomentPopUp = Actions.createFolder(FOLDER_NAME, fileListView); Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(FOLDER_NAME); - assertTrue(folderHasBeenCreated = mainView.getFileElement().isDisplayed()); + fileListView.scrollTillFindElement(FOLDER_NAME); + assertTrue(folderHasBeenCreated = fileListView.getFileElement().isDisplayed()); //delete the folder - Actions.deleteElement(FOLDER_NAME, mainView, driver); - assertFalse(folderHasBeenCreated =mainView.getFileElement().isDisplayed()); + Actions.deleteElement(FOLDER_NAME, fileListView, driver); + assertFalse(folderHasBeenCreated =fileListView.getFileElement().isDisplayed()); } @After public void tearDown() throws Exception { common.takeScreenShotOnFailed(name.getMethodName()); if(folderHasBeenCreated){ - MainView mainView = new MainView(driver); - Actions.deleteElement(FOLDER_NAME, mainView, driver); + FileListView fileListView = new FileListView(driver); + Actions.deleteElement(FOLDER_NAME, fileListView, driver); } driver.removeApp("com.owncloud.android"); driver.quit(); diff --git a/automationTest/src/test/java/androidtest/tests/LoginTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/LoginTestSuite.java similarity index 63% rename from automationTest/src/test/java/androidtest/tests/LoginTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/LoginTestSuite.java index 6aa6c2bb..4083e8ed 100644 --- a/automationTest/src/test/java/androidtest/tests/LoginTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/LoginTestSuite.java @@ -1,7 +1,8 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver; + import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -11,12 +12,13 @@ import org.junit.runners.MethodSorters; import org.junit.FixMethodOrder; import org.junit.Test; import org.openqa.selenium.ScreenOrientation; -import androidtest.actions.Actions; -import androidtest.groups.*; -import androidtest.models.LoginForm; -import androidtest.models.MainView; -import androidtest.models.MenuList; -import androidtest.models.SettingsView; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.*; +import com.owncloud.android.test.ui.models.LoginForm; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.MenuList; +import com.owncloud.android.test.ui.models.SettingsView; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class LoginTestSuite{ @@ -36,16 +38,16 @@ public class LoginTestSuite{ public void test1LoginPortrait () throws Exception { driver.rotate(ScreenOrientation.PORTRAIT); - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); } @Test @Category({NoIgnoreTestCategory.class}) public void test2LoginLandscape () throws Exception { driver.rotate(ScreenOrientation.LANDSCAPE); - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); } @@ -53,15 +55,15 @@ public class LoginTestSuite{ @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) public void test3MultiAccountRotate () throws Exception { driver.rotate(ScreenOrientation.LANDSCAPE); - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); driver.rotate(ScreenOrientation.PORTRAIT); - MenuList menu = mainView.clickOnMenuButton(); + MenuList menu = fileListView.clickOnMenuButton(); SettingsView settingsView = menu.clickOnSettingsButton(); settingsView.tapOnAddAccount(1, 1000); - mainView = Actions.login(Config.URL2, Config.user2,Config.password2, Config.isTrusted2, driver); + fileListView = Actions.login(Config.URL2, Config.user2,Config.password2, Config.isTrusted2, driver); common.assertIsInSettingsView(); } @@ -69,16 +71,16 @@ public class LoginTestSuite{ @Category({NoIgnoreTestCategory.class}) public void test4ExistingAccountRotate () throws Exception { driver.rotate(ScreenOrientation.PORTRAIT); - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); driver.rotate(ScreenOrientation.LANDSCAPE); - MenuList menu = mainView.clickOnMenuButton(); + MenuList menu = fileListView.clickOnMenuButton(); SettingsView settingsView = menu.clickOnSettingsButton(); settingsView.tapOnAddAccount(1, 1000); LoginForm loginForm = new LoginForm(driver); - mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); assertTrue(common.waitForTextPresent("An account for the same user and server already exists in the device", loginForm.getAuthStatusText())); } @@ -86,9 +88,9 @@ public class LoginTestSuite{ @Category({NoIgnoreTestCategory.class}) public void test5ChangePasswordWrong () throws Exception { driver.rotate(ScreenOrientation.PORTRAIT); - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); - MenuList menu = mainView.clickOnMenuButton(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + MenuList menu = fileListView.clickOnMenuButton(); SettingsView settingsView = menu.clickOnSettingsButton(); settingsView.tapOnAccountElement(1, 1000); LoginForm changePasswordForm = settingsView.clickOnChangePasswordElement(); diff --git a/automationTest/src/test/java/androidtest/tests/LogoutTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/LogoutTestSuite.java similarity index 64% rename from automationTest/src/test/java/androidtest/tests/LogoutTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/LogoutTestSuite.java index 876c0ce4..6ebfb635 100644 --- a/automationTest/src/test/java/androidtest/tests/LogoutTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/LogoutTestSuite.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; @@ -11,13 +11,13 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TestName; -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.LoginForm; -import androidtest.models.MainView; -import androidtest.models.MenuList; -import androidtest.models.SettingsView; +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.LoginForm; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.MenuList; +import com.owncloud.android.test.ui.models.SettingsView; public class LogoutTestSuite{ @@ -35,9 +35,9 @@ public class LogoutTestSuite{ @Test @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) public void testLogout () throws Exception { - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); - MenuList menulist = mainView.clickOnMenuButton(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + MenuList menulist = fileListView.clickOnMenuButton(); SettingsView settingsView = menulist.clickOnSettingsButton(); settingsView.tapOnAccountElement(1, 1000); LoginForm loginForm = settingsView.clickOnDeleteAccountElement(); diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFileTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFileTestSuite.java new file mode 100644 index 00000000..c5070a0a --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFileTestSuite.java @@ -0,0 +1,92 @@ +package com.owncloud.android.test.ui.testSuites; + +import static org.junit.Assert.*; +import io.appium.java_client.android.AndroidDriver; + +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.junit.runners.MethodSorters; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.MoveView; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; + + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class MoveFileTestSuite{ + AndroidDriver driver; + Common common; + private String FOLDER_WHERE_MOVE = "folderWhereMove"; + private String FILE_NAME = Config.fileToTestName; + @Rule public TestName name = new TestName(); + + @Before + public void setUp() throws Exception { + common=new Common(); + driver=common.setUpCommonDriver(); + } + + @Test + @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) + public void testMoveFile () throws Exception { + WaitAMomentPopUp waitAMomentPopUp; + + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + + //Common.waitTillElementIsNotPresent(fileListView.getProgressCircular(), 1000); + + //check if the folder already exists and if true, delete them + Actions.deleteElement(FOLDER_WHERE_MOVE, fileListView, driver); + Actions.deleteElement(FILE_NAME, fileListView, driver); + + //Create the folder where the other is gone to be moved + waitAMomentPopUp = Actions.createFolder(FOLDER_WHERE_MOVE, fileListView); + Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); + fileListView.scrollTillFindElement(FOLDER_WHERE_MOVE); + assertTrue(fileListView.getFileElement().isDisplayed()); + + FileListView fileListViewAfterUploadFile = Actions.uploadFile(FILE_NAME, fileListView); + fileListViewAfterUploadFile.scrollTillFindElement(FILE_NAME); + assertTrue(fileListViewAfterUploadFile.getFileElement().isDisplayed()); + + //select to move the file + ElementMenuOptions menuOptions = fileListView.longPressOnElement(FILE_NAME); + MoveView moveView = menuOptions.clickOnMove(); + + //to move to a folder + moveView.scrollTillFindElement(FOLDER_WHERE_MOVE).tap(1,1); + waitAMomentPopUp = moveView.clickOnChoose(); + Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); + + //check that the folder moved is inside the other + fileListView.scrollTillFindElement(FOLDER_WHERE_MOVE).tap(1,1); + Common.waitTillElementIsNotPresent(fileListView.getProgressCircular(), 1000); + Thread.sleep(1000); + fileListView.scrollTillFindElement(FILE_NAME); + assertEquals(FILE_NAME , fileListView.getFileElement().getText()); + + } + + @After + public void tearDown() throws Exception { + common.takeScreenShotOnFailed(name.getMethodName()); + FileListView fileListView = new FileListView(driver); + driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK); + Actions.deleteElement(FOLDER_WHERE_MOVE, fileListView, driver); + Actions.deleteElement(FILE_NAME, fileListView, driver); + driver.removeApp("com.owncloud.android"); + driver.quit(); + } + +} diff --git a/automationTest/src/test/java/androidtest/tests/MoveFolderTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFolderTestSuite.java similarity index 51% rename from automationTest/src/test/java/androidtest/tests/MoveFolderTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFolderTestSuite.java index 532eff21..d7439040 100644 --- a/automationTest/src/test/java/androidtest/tests/MoveFolderTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/MoveFolderTestSuite.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver; @@ -12,13 +12,13 @@ import org.junit.runners.MethodSorters; import org.junit.FixMethodOrder; import org.junit.Test; -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.ElementMenuOptions; -import androidtest.models.MainView; -import androidtest.models.MoveView; -import androidtest.models.WaitAMomentPopUp; +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.MoveView; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @@ -41,29 +41,29 @@ public class MoveFolderTestSuite{ public void testMoveFolder () throws Exception { WaitAMomentPopUp waitAMomentPopUp; - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); - Common.waitTillElementIsNotPresent(mainView.getProgressCircular(), 1000); + //Common.waitTillElementIsNotPresent(fileListView.getProgressCircular(), 1000); //check if the folder already exists and if true, delete them - Actions.deleteElement(FOLDER_WHERE_MOVE, mainView, driver); - Actions.deleteElement(FOLDER_TO_MOVE, mainView, driver); + Actions.deleteElement(FOLDER_WHERE_MOVE, fileListView, driver); + Actions.deleteElement(FOLDER_TO_MOVE, fileListView, driver); //Create the folder where the other is gone to be moved - waitAMomentPopUp = Actions.createFolder(FOLDER_WHERE_MOVE, mainView); + waitAMomentPopUp = Actions.createFolder(FOLDER_WHERE_MOVE, fileListView); Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(FOLDER_WHERE_MOVE); - assertTrue(mainView.getFileElement().isDisplayed()); + fileListView.scrollTillFindElement(FOLDER_WHERE_MOVE); + assertTrue(fileListView.getFileElement().isDisplayed()); //Create the folder which is going to be moved - waitAMomentPopUp = Actions.createFolder(FOLDER_TO_MOVE, mainView); + waitAMomentPopUp = Actions.createFolder(FOLDER_TO_MOVE, fileListView); Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(FOLDER_TO_MOVE); - assertTrue(mainView.getFileElement().isDisplayed()); + fileListView.scrollTillFindElement(FOLDER_TO_MOVE); + assertTrue(fileListView.getFileElement().isDisplayed()); //select to move the folder - ElementMenuOptions menuOptions = mainView.longPressOnElement(FOLDER_TO_MOVE); + ElementMenuOptions menuOptions = fileListView.longPressOnElement(FOLDER_TO_MOVE); MoveView moveView = menuOptions.clickOnMove(); //to move to a folder @@ -72,20 +72,20 @@ public class MoveFolderTestSuite{ Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); //check that the folder moved is inside the other - mainView.scrollTillFindElement(FOLDER_WHERE_MOVE).tap(1,1); - Common.waitTillElementIsNotPresent(mainView.getProgressCircular(), 1000); + fileListView.scrollTillFindElement(FOLDER_WHERE_MOVE).tap(1,1); + Common.waitTillElementIsNotPresent(fileListView.getProgressCircular(), 1000); Thread.sleep(1000); - mainView.scrollTillFindElement(FOLDER_TO_MOVE); - assertEquals(FOLDER_TO_MOVE , mainView.getFileElement().getText()); + fileListView.scrollTillFindElement(FOLDER_TO_MOVE); + assertEquals(FOLDER_TO_MOVE , fileListView.getFileElement().getText()); } @After public void tearDown() throws Exception { common.takeScreenShotOnFailed(name.getMethodName()); - MainView mainView = new MainView(driver); + FileListView fileListView = new FileListView(driver); driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK); - Actions.deleteElement(FOLDER_WHERE_MOVE, mainView, driver); - Actions.deleteElement(FOLDER_TO_MOVE, mainView, driver); + Actions.deleteElement(FOLDER_WHERE_MOVE, fileListView, driver); + Actions.deleteElement(FOLDER_TO_MOVE, fileListView, driver); driver.removeApp("com.owncloud.android"); driver.quit(); } diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/PasscodeTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/PasscodeTestSuite.java new file mode 100644 index 00000000..7b50af88 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/PasscodeTestSuite.java @@ -0,0 +1,70 @@ +package com.owncloud.android.test.ui.testSuites; + +import io.appium.java_client.android.AndroidDriver; + +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.junit.runners.MethodSorters; +import org.openqa.selenium.ScreenOrientation; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.MenuList; +import com.owncloud.android.test.ui.models.PassCodeRequestView; +import com.owncloud.android.test.ui.models.PassCodeView; +import com.owncloud.android.test.ui.models.SettingsView; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class PasscodeTestSuite { + AndroidDriver driver; + Common common; + + @Rule public TestName name = new TestName(); + + @Before + public void setUp() throws Exception { + common=new Common(); + driver=common.setUpCommonDriver(); + } + + @Test + @Category({NoIgnoreTestCategory.class}) + public void testPincodeEnable () throws Exception { + driver.rotate(ScreenOrientation.PORTRAIT); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + + MenuList menu = fileListView.clickOnMenuButton(); + SettingsView settingsView = menu.clickOnSettingsButton(); + + PassCodeView passCodeview = settingsView.EnablePassCode(); + PassCodeView passCodeview2 = passCodeview.enterPasscode(Config.passcode1, Config.passcode2, Config.passcode3, Config.passcode4); + passCodeview2.reenterPasscode(Config.passcode1, Config.passcode2, Config.passcode3, Config.passcode4); + + driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_HOME); + //TO DO. Open the app instead of start an activity + driver.startActivity("com.owncloud.android", ".ui.activity.FileDisplayActivity"); + //here we check that we are not in the fileDisplayActivity, because pincode is asked + common.assertIsNotInFileListView(); + common.assertIsPasscodeRequestView(); + + PassCodeRequestView passCodeReequestView = new PassCodeRequestView(driver); + passCodeReequestView.enterPasscode(Config.passcode1, Config.passcode2, Config.passcode3, Config.passcode4); + common.assertIsInFileListView(); + } + + + @After + public void tearDown() throws Exception { + common.takeScreenShotOnFailed(name.getMethodName()); + driver.removeApp("com.owncloud.android"); + driver.quit(); + } + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RefreshFolderTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RefreshFolderTestSuite.java new file mode 100644 index 00000000..15015c06 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RefreshFolderTestSuite.java @@ -0,0 +1,55 @@ +package com.owncloud.android.test.ui.testSuites; + +import static org.junit.Assert.*; +import io.appium.java_client.android.AndroidDriver; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.junit.runners.MethodSorters; +import org.junit.FixMethodOrder; +import org.junit.Test; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.UnfinishedTestCategory; +import com.owncloud.android.test.ui.models.FileListView; + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class RefreshFolderTestSuite{ + AndroidDriver driver; + Common common; + + @Rule public TestName name = new TestName(); + + @Before + public void setUp() throws Exception { + common=new Common(); + driver=common.setUpCommonDriver(); + } + + + @Test + @Category({UnfinishedTestCategory.class}) + public void testPulldownToRefreshFolder () throws Exception { + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + //TODO. Remove the sleep and check why is not working the assert when using waitTillElementIsNotPresent + Thread.sleep(5000); + //waitTillElementIsNotPresent(fileListView.getProgressCircular(), 1000); + fileListView.pulldownToRefresh(); + assertTrue(fileListView.getProgressCircular().isDisplayed()); + //TODO insert a file in the web, and check that it's shown here + } + + + @After + public void tearDown() throws Exception { + common.takeScreenShotOnFailed(name.getMethodName()); + driver.removeApp("com.owncloud.android"); + driver.quit(); + } + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFileTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFileTestSuite.java new file mode 100644 index 00000000..4c9b293b --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFileTestSuite.java @@ -0,0 +1,84 @@ +package com.owncloud.android.test.ui.testSuites; + +import static org.junit.Assert.*; +import io.appium.java_client.android.AndroidDriver; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.junit.runners.MethodSorters; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.support.ui.ExpectedConditions; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.NewFolderPopUp; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class RenameFileTestSuite{ + + AndroidDriver driver; + Common common; + private Boolean fileHasBeenCreated = false; + private final String OLD_FILE_NAME = Config.fileToTestName; + private final String FILE_NAME = "newNameFile"; + private String CurrentCreatedFile = ""; + + @Rule public TestName name = new TestName(); + + @Before + public void setUp() throws Exception { + common=new Common(); + driver=common.setUpCommonDriver(); + } + + @Test + @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) + public void testRenameFile () throws Exception { + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + + //TODO. if the file already exists, do not upload + FileListView fileListViewAfterUploadFile = Actions.uploadFile(OLD_FILE_NAME, fileListView); + + //check if the file with the new name already exists, if true delete it + Actions.deleteElement(FILE_NAME, fileListView, driver); + + fileListViewAfterUploadFile.scrollTillFindElement(OLD_FILE_NAME); + assertTrue(fileHasBeenCreated = fileListViewAfterUploadFile.getFileElement().isDisplayed()); + CurrentCreatedFile = OLD_FILE_NAME; + Common.waitTillElementIsNotPresent(fileListViewAfterUploadFile.getProgressCircular(), 1000); + common.wait.until(ExpectedConditions.visibilityOf(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getLocalFileIndicator())))); + ElementMenuOptions menuOptions = fileListViewAfterUploadFile.longPressOnElement(OLD_FILE_NAME); + NewFolderPopUp newFolderPopUp = menuOptions.clickOnRename(); + newFolderPopUp.typeNewFolderName(FILE_NAME); + WaitAMomentPopUp waitAMomentPopUp = newFolderPopUp.clickOnNewFolderOkButton(); + Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); + fileListViewAfterUploadFile.scrollTillFindElement(FILE_NAME); + assertNotNull(fileListViewAfterUploadFile.getFileElement()); + assertTrue(fileListViewAfterUploadFile.getFileElement().isDisplayed()); + assertEquals(FILE_NAME , fileListViewAfterUploadFile.getFileElement().getText()); + CurrentCreatedFile = FILE_NAME; + } + + @After + public void tearDown() throws Exception { + common.takeScreenShotOnFailed(name.getMethodName()); + if (fileHasBeenCreated) { + FileListView fileListView = new FileListView(driver); + Actions.deleteElement(CurrentCreatedFile,fileListView, driver); + } + driver.removeApp("com.owncloud.android"); + driver.quit(); + } + +} diff --git a/automationTest/src/test/java/androidtest/tests/RenameFolderTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFolderTestSuite.java similarity index 58% rename from automationTest/src/test/java/androidtest/tests/RenameFolderTestSuite.java rename to automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFolderTestSuite.java index c97c3e0b..0983f017 100644 --- a/automationTest/src/test/java/androidtest/tests/RenameFolderTestSuite.java +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RenameFolderTestSuite.java @@ -1,4 +1,4 @@ -package androidtest.tests; +package com.owncloud.android.test.ui.testSuites; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver; @@ -12,13 +12,13 @@ import org.junit.runners.MethodSorters; import org.junit.FixMethodOrder; import org.junit.Test; -import androidtest.actions.Actions; -import androidtest.groups.NoIgnoreTestCategory; -import androidtest.groups.SmokeTestCategory; -import androidtest.models.ElementMenuOptions; -import androidtest.models.MainView; -import androidtest.models.NewFolderPopUp; -import androidtest.models.WaitAMomentPopUp; +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.NewFolderPopUp; +import com.owncloud.android.test.ui.models.WaitAMomentPopUp; @FixMethodOrder(MethodSorters.NAME_ASCENDING) @@ -43,39 +43,39 @@ public class RenameFolderTestSuite{ @Test @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) public void testRenameFolder () throws Exception { - MainView mainView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); - common.assertIsInMainView(); + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); //TODO. if the folder already exists, do no created //create the folder to rename - WaitAMomentPopUp waitAMomentPopUp = Actions.createFolder(OLD_FOLDER_NAME, mainView); + WaitAMomentPopUp waitAMomentPopUp = Actions.createFolder(OLD_FOLDER_NAME, fileListView); Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(OLD_FOLDER_NAME); + fileListView.scrollTillFindElement(OLD_FOLDER_NAME); - assertTrue(folderHasBeenCreated = mainView.getFileElement().isDisplayed()); + assertTrue(folderHasBeenCreated = fileListView.getFileElement().isDisplayed()); //check if the folder with the new name already exists and if true, delete them - Actions.deleteElement(FOLDER_NAME, mainView, driver); + Actions.deleteElement(FOLDER_NAME, fileListView, driver); CurrentCreatedFolder = OLD_FOLDER_NAME; - ElementMenuOptions menuOptions = mainView.longPressOnElement(OLD_FOLDER_NAME); + ElementMenuOptions menuOptions = fileListView.longPressOnElement(OLD_FOLDER_NAME); NewFolderPopUp FolderPopUp = menuOptions.clickOnRename(); FolderPopUp.typeNewFolderName(FOLDER_NAME); FolderPopUp.clickOnNewFolderOkButton(); CurrentCreatedFolder = FOLDER_NAME; Common.waitTillElementIsNotPresent(waitAMomentPopUp.getWaitAMomentTextElement(), 100); - mainView.scrollTillFindElement(FOLDER_NAME); - assertNotNull(mainView.getFileElement()); - assertTrue(folderHasBeenCreated = mainView.getFileElement().isDisplayed()); - assertEquals(FOLDER_NAME , mainView.getFileElement().getText()); + fileListView.scrollTillFindElement(FOLDER_NAME); + assertNotNull(fileListView.getFileElement()); + assertTrue(folderHasBeenCreated = fileListView.getFileElement().isDisplayed()); + assertEquals(FOLDER_NAME , fileListView.getFileElement().getText()); } @After public void tearDown() throws Exception { common.takeScreenShotOnFailed(name.getMethodName()); if(folderHasBeenCreated){ - MainView mainView = new MainView(driver); - Actions.deleteElement(CurrentCreatedFolder, mainView, driver); + FileListView fileListView = new FileListView(driver); + Actions.deleteElement(CurrentCreatedFolder, fileListView, driver); } driver.removeApp("com.owncloud.android"); driver.quit(); diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunFailingTests.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunFailingTests.java new file mode 100644 index 00000000..53d69fd0 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunFailingTests.java @@ -0,0 +1,24 @@ +package com.owncloud.android.test.ui.testSuites; + + +import org.junit.experimental.categories.Categories.ExcludeCategory; +import org.junit.experimental.categories.Categories.IncludeCategory; +import org.junit.runner.RunWith; + +import com.owncloud.android.test.ui.groups.FailingTestCategory; +import com.owncloud.android.test.ui.groups.FlexibleCategories; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestClassPrefix; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestClassSuffix; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestScanPackage; + + +@RunWith(FlexibleCategories.class) +@ExcludeCategory(NoIgnoreTestCategory.class) +@IncludeCategory(FailingTestCategory.class) +@TestScanPackage("com.owncloud.android.test.ui.testSuites") +@TestClassPrefix("") +@TestClassSuffix("TestSuite") +public class RunFailingTests { + +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunNoIgnoreTests.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunNoIgnoreTests.java new file mode 100644 index 00000000..bfa7dbf5 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunNoIgnoreTests.java @@ -0,0 +1,22 @@ +package com.owncloud.android.test.ui.testSuites; + +import org.junit.experimental.categories.Categories.ExcludeCategory; +import org.junit.experimental.categories.Categories.IncludeCategory; +import org.junit.runner.RunWith; + +import com.owncloud.android.test.ui.groups.FlexibleCategories; +import com.owncloud.android.test.ui.groups.IgnoreTestCategory; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestClassPrefix; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestClassSuffix; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestScanPackage; + + +@RunWith(FlexibleCategories.class) +@ExcludeCategory(IgnoreTestCategory.class) +@IncludeCategory(NoIgnoreTestCategory.class) +@TestScanPackage("com.owncloud.android.test.ui.testSuites") +@TestClassPrefix("") +@TestClassSuffix("TestSuite") +public class RunNoIgnoreTests { +} \ No newline at end of file diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunSmokeTests.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunSmokeTests.java new file mode 100644 index 00000000..ad4738f0 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/RunSmokeTests.java @@ -0,0 +1,22 @@ +package com.owncloud.android.test.ui.testSuites; + +import org.junit.experimental.categories.Categories.ExcludeCategory; +import org.junit.experimental.categories.Categories.IncludeCategory; +import org.junit.runner.RunWith; + +import com.owncloud.android.test.ui.groups.FlexibleCategories; +import com.owncloud.android.test.ui.groups.IgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestClassPrefix; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestClassSuffix; +import com.owncloud.android.test.ui.groups.FlexibleCategories.TestScanPackage; + + +@RunWith(FlexibleCategories.class) +@ExcludeCategory(IgnoreTestCategory.class) +@IncludeCategory(SmokeTestCategory.class) +@TestScanPackage("com.owncloud.android.test.ui.testSuites") +@TestClassPrefix("") +@TestClassSuffix("TestSuite") +public class RunSmokeTests { +} \ No newline at end of file diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/ShareLinkFileTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/ShareLinkFileTestSuite.java new file mode 100644 index 00000000..147801f8 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/ShareLinkFileTestSuite.java @@ -0,0 +1,72 @@ +package com.owncloud.android.test.ui.testSuites; + +import static org.junit.Assert.assertTrue; +import io.appium.java_client.android.AndroidDriver; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.openqa.selenium.By; +import org.openqa.selenium.support.ui.ExpectedConditions; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.groups.SmokeTestCategory; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.GmailSendMailView; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.ShareView; + +public class ShareLinkFileTestSuite{ + + AndroidDriver driver; + Common common; + private final String FILE_NAME = Config.fileToTestName; + private Boolean fileHasBeenCreated = false; + + @Rule public TestName name = new TestName(); + + @Before + public void setUp() throws Exception { + common=new Common(); + driver=common.setUpCommonDriver(); + } + + @Test + @Category({NoIgnoreTestCategory.class, SmokeTestCategory.class}) + public void testShareLinkFile () throws Exception { + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + + //TODO. if the file already exists, do not upload + FileListView fileListViewAfterUploadFile = Actions.uploadFile(FILE_NAME, fileListView); + + fileListViewAfterUploadFile.scrollTillFindElement(FILE_NAME); + assertTrue(fileHasBeenCreated = fileListViewAfterUploadFile.getFileElement().isDisplayed()); + + ElementMenuOptions elementMenuOption = fileListViewAfterUploadFile.longPressOnElement(FILE_NAME); + ShareView shareView = elementMenuOption.clickOnShareLinkElement(); + Actions.scrollTillFindElement("Gmail", shareView.getListViewLayout(), driver).click(); + GmailSendMailView gmailSendMailView = new GmailSendMailView(driver); + gmailSendMailView.typeToEmailAdress(Config.gmailAccount); + gmailSendMailView.clickOnSendButton(); + Common.waitTillElementIsNotPresent(fileListViewAfterUploadFile.getProgressCircular(), 1000); + common.wait.until(ExpectedConditions.visibilityOf(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getSharedElementIndicator())))); + assertTrue(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getSharedElementIndicator())).isDisplayed()); + + } + + @After + public void tearDown() throws Exception { + common.takeScreenShotOnFailed(name.getMethodName()); + if (fileHasBeenCreated) { + FileListView fileListView = new FileListView(driver); + Actions.deleteElement(FILE_NAME,fileListView, driver); + } + driver.removeApp("com.owncloud.android"); + driver.quit(); + } +} diff --git a/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/UploadTestSuite.java b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/UploadTestSuite.java new file mode 100644 index 00000000..cbea9785 --- /dev/null +++ b/automationTest/src/test/java/com/owncloud/android/test/ui/testSuites/UploadTestSuite.java @@ -0,0 +1,124 @@ +package com.owncloud.android.test.ui.testSuites; + + +import static org.junit.Assert.*; +import io.appium.java_client.MobileBy; +import io.appium.java_client.android.AndroidDriver; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.experimental.categories.Category; +import org.junit.rules.TestName; +import org.junit.runners.MethodSorters; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.support.ui.ExpectedConditions; + +import com.owncloud.android.test.ui.actions.Actions; +import com.owncloud.android.test.ui.groups.FailingTestCategory; +import com.owncloud.android.test.ui.groups.IgnoreTestCategory; +import com.owncloud.android.test.ui.groups.NoIgnoreTestCategory; +import com.owncloud.android.test.ui.models.FileDetailsView; +import com.owncloud.android.test.ui.models.ElementMenuOptions; +import com.owncloud.android.test.ui.models.GmailEmailListView; +import com.owncloud.android.test.ui.models.GmailEmailView; +import com.owncloud.android.test.ui.models.ImageView; +import com.owncloud.android.test.ui.models.FileListView; +import com.owncloud.android.test.ui.models.UploadView; + + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +@Category({NoIgnoreTestCategory.class}) +public class UploadTestSuite{ + + AndroidDriver driver; + Common common; + String FILE_NAME = Config.fileToTestName; + + @Rule public TestName name = new TestName(); + + + @Before + public void setUp() throws Exception { + common=new Common(); + driver=common.setUpCommonDriver(); + } + + @Test + @Category(NoIgnoreTestCategory.class) + public void testUploadFile () throws Exception { + + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + + //check if the file already exists and if true, delete it + Actions.deleteElement(FILE_NAME, fileListView, driver); + + FileListView fileListViewAfterUploadFile = Actions.uploadFile(FILE_NAME, fileListView); + + fileListViewAfterUploadFile.scrollTillFindElement(FILE_NAME); + assertTrue(fileListViewAfterUploadFile.getFileElement().isDisplayed()); + Common.waitTillElementIsNotPresent(fileListViewAfterUploadFile.getProgressCircular(), 1000); + common.wait.until(ExpectedConditions.visibilityOf(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getLocalFileIndicator())))); + assertTrue(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getLocalFileIndicator())).isDisplayed()); + + } + + @Test + @Category(IgnoreTestCategory.class) + public void testUploadFromGmail () throws Exception { + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + driver.startActivity("com.google.android.gm", ".ConversationListActivityGmail"); + GmailEmailListView gmailEmailListView = new GmailEmailListView(driver); + GmailEmailView gmailEmailView = gmailEmailListView.clickOnEmail(); + ImageView imageView = gmailEmailView.clickOnfileButton(); + imageView.clickOnOptionsButton(); + imageView.clickOnShareButton(); + imageView.clickOnOwnCloudButton(); + imageView.clickOnJustOnceButton(); + UploadView uploadView = new UploadView(driver); + uploadView.clickOUploadButton(); + driver.startActivity("com.owncloud.android", ".ui.activity.FileDisplayActivity"); + common.wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.name(Config.fileToTestSendByEmailName))); + assertEquals(Config.fileToTestSendByEmailName , driver.findElementByName(Config.fileToTestSendByEmailName).getText()); + } + + + @Test + @Category({IgnoreTestCategory.class, FailingTestCategory.class}) + public void testKeepFileUpToDate () throws Exception { + + FileListView fileListView = Actions.login(Config.URL, Config.user,Config.password, Config.isTrusted, driver); + common.assertIsInFileListView(); + + Common.waitTillElementIsNotPresent(fileListView.getProgressCircular(), 1000); + + FileListView fileListViewAfterUploadFile = Actions.uploadFile(FILE_NAME, fileListView); + fileListViewAfterUploadFile.scrollTillFindElement(FILE_NAME); + assertTrue(fileListViewAfterUploadFile.getFileElement().isDisplayed()); + + ElementMenuOptions menuOptions = fileListViewAfterUploadFile.longPressOnElement(FILE_NAME); + FileDetailsView fileDetailsView = menuOptions.clickOnDetails(); + fileDetailsView.checkKeepFileUpToDateCheckbox(); + Thread.sleep(3000); + driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK); + //assertTrue(common.isElementPresent(fileListViewAfterUploadFile.getFileElementLayout(), MobileBy.id(FileListView.getFavoriteFileIndicator()))); + assertTrue(fileListViewAfterUploadFile.getFileElementLayout().findElement(By.id(FileListView.getFavoriteFileIndicator())).isDisplayed()); + + } + + + @After + public void tearDown() throws Exception { + common.takeScreenShotOnFailed(name.getMethodName()); + FileListView fileListView = new FileListView(driver); + Actions.deleteElement(FILE_NAME,fileListView, driver); + driver.removeApp("com.owncloud.android"); + driver.quit(); + } + + +} + -- 2.11.0