Browse Source

Merge pull request #6487 from nextcloud/fixScreenshotFDA

update FileDisplayActivityIT
Tobias Kaminsky 4 years ago
parent
commit
8a2bd6370d
24 changed files with 225 additions and 137 deletions
  1. BIN
      screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityIT_open.png
  2. 0 0
      screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityScreenshotIT_drawer.png
  3. BIN
      screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityScreenshotIT_open.png
  4. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.ManageAccountsActivityIT_open.png
  5. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testAccountChooserDialog.png
  6. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog.png
  7. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog.png
  8. 6 4
      scripts/androidScreenshotTest
  9. 2 2
      src/androidTest/java/com/nextcloud/client/EndToEndRandomIT.java
  10. 2 27
      src/androidTest/java/com/nextcloud/client/FileDisplayActivityIT.java
  11. 75 0
      src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.java
  12. 1 1
      src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.java
  13. 2 2
      src/androidTest/java/com/nextcloud/client/account/OwnCloudClientManagerTest.java
  14. 2 2
      src/androidTest/java/com/nextcloud/client/account/UserAccountManagerImplTest.java
  15. 8 3
      src/androidTest/java/com/owncloud/android/AbstractIT.java
  16. 12 1
      src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java
  17. 1 1
      src/androidTest/java/com/owncloud/android/FileIT.java
  18. 1 1
      src/androidTest/java/com/owncloud/android/ScreenshotsIT.java
  19. 1 4
      src/androidTest/java/com/owncloud/android/UploadIT.java
  20. 2 2
      src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt
  21. 52 57
      src/androidTest/java/com/owncloud/android/ui/activity/ConflictsResolveActivityIT.java
  22. 36 14
      src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.java
  23. 10 3
      src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.java
  24. 12 13
      src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentIT.kt

BIN
screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityIT_open.png


+ 0 - 0
screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityIT_drawer.png → screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityScreenshotIT_drawer.png


BIN
screenshots/gplay/debug/com.nextcloud.client.FileDisplayActivityScreenshotIT_open.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.ManageAccountsActivityIT_open.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testAccountChooserDialog.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog.png


+ 6 - 4
scripts/androidScreenshotTest

@@ -3,8 +3,8 @@
 if [ $# -lt 2 ]; then
     echo "1: record: true/false
 2: class name
-3: method name" 
-    
+3: method name"
+
     exit
 fi
 
@@ -20,7 +20,7 @@ cd ../../../
 
 if [ $1 == "true" ] ; then
     record="-Precord"
-else 
+else
     record=""
 fi
 
@@ -30,6 +30,8 @@ else
     method="#$3"
 fi
 
-./gradlew gplayDebugExecuteScreenshotTests $record -Pandroid.testInstrumentationRunnerArguments.class=$class$method
+./gradlew gplayDebugExecuteScreenshotTests $record \
+-Pandroid.testInstrumentationRunnerArguments.annotation=com.owncloud.android.utils.ScreenshotTest \
+-Pandroid.testInstrumentationRunnerArguments.class=$class$method
 
 sed -i s'#<bool name="is_beta">true</bool>#<bool name="is_beta">false</bool>#'g src/main/res/values/setup.xml

+ 2 - 2
src/androidTest/java/com/nextcloud/client/EndToEndRandomIT.java

@@ -24,7 +24,7 @@ package com.nextcloud.client;
 
 import android.accounts.AccountManager;
 
-import com.owncloud.android.AbstractIT;
+import com.owncloud.android.AbstractOnServerIT;
 import com.owncloud.android.datamodel.ArbitraryDataProvider;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.db.OCUpload;
@@ -59,7 +59,7 @@ import static junit.framework.TestCase.assertNotNull;
 import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assume.assumeTrue;
 
-public class EndToEndRandomIT extends AbstractIT {
+public class EndToEndRandomIT extends AbstractOnServerIT {
     public enum Action {
         CREATE_FOLDER,
         GO_INTO_FOLDER,

+ 2 - 27
src/androidTest/java/com/nextcloud/client/FileDisplayActivityIT.java

@@ -26,7 +26,7 @@ import android.Manifest;
 import android.app.Activity;
 
 import com.facebook.testing.screenshot.Screenshot;
-import com.owncloud.android.AbstractIT;
+import com.owncloud.android.AbstractOnServerIT;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation;
@@ -38,7 +38,6 @@ import com.owncloud.android.lib.resources.shares.ShareType;
 import com.owncloud.android.operations.CreateFolderOperation;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.events.SearchEvent;
-import com.owncloud.android.utils.ScreenshotTest;
 
 import org.greenrobot.eventbus.EventBus;
 import org.junit.Assert;
@@ -56,7 +55,7 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
 
-public class FileDisplayActivityIT extends AbstractIT {
+public class FileDisplayActivityIT extends AbstractOnServerIT {
     @Rule public IntentsTestRule<FileDisplayActivity> activityRule = new IntentsTestRule<>(FileDisplayActivity.class,
                                                                                            true,
                                                                                            false);
@@ -65,30 +64,6 @@ public class FileDisplayActivityIT extends AbstractIT {
     public final GrantPermissionRule permissionRule = GrantPermissionRule.grant(
         Manifest.permission.WRITE_EXTERNAL_STORAGE);
 
-    @Test
-    @ScreenshotTest
-    public void open() {
-        Activity sut = activityRule.launchActivity(null);
-
-        shortSleep();
-
-        Screenshot.snapActivity(sut).record();
-    }
-
-    @Test
-    @ScreenshotTest
-    public void drawer() {
-        FileDisplayActivity sut = activityRule.launchActivity(null);
-
-        onView(withId(R.id.drawer_layout)).perform(DrawerActions.open());
-
-        waitForIdleSync();
-        shortSleep();
-        sut.getListOfFilesFragment().setFabEnabled(false);
-
-        Screenshot.snapActivity(sut).record();
-    }
-
     @Test
     // @ScreenshotTest // todo run without real server
     public void showShares() {

+ 75 - 0
src/androidTest/java/com/nextcloud/client/FileDisplayActivityScreenshotIT.java

@@ -0,0 +1,75 @@
+/*
+ *
+ * Nextcloud Android client application
+ *
+ * @author Tobias Kaminsky
+ * Copyright (C) 2019 Tobias Kaminsky
+ * Copyright (C) 2019 Nextcloud GmbH
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package com.nextcloud.client;
+
+import android.Manifest;
+
+import com.facebook.testing.screenshot.Screenshot;
+import com.owncloud.android.AbstractIT;
+import com.owncloud.android.R;
+import com.owncloud.android.ui.activity.FileDisplayActivity;
+import com.owncloud.android.utils.ScreenshotTest;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import androidx.test.espresso.contrib.DrawerActions;
+import androidx.test.espresso.intent.rule.IntentsTestRule;
+import androidx.test.rule.GrantPermissionRule;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+
+public class FileDisplayActivityScreenshotIT extends AbstractIT {
+    @Rule public IntentsTestRule<FileDisplayActivity> activityRule = new IntentsTestRule<>(FileDisplayActivity.class,
+                                                                                           true,
+                                                                                           false);
+
+    @Rule
+    public final GrantPermissionRule permissionRule = GrantPermissionRule.grant(
+        Manifest.permission.WRITE_EXTERNAL_STORAGE);
+
+    @Test
+    @ScreenshotTest
+    public void open() {
+        FileDisplayActivity sut = activityRule.launchActivity(null);
+
+        sut.getListOfFilesFragment().setFabEnabled(false);
+        sut.getListOfFilesFragment().setEmptyListLoadingMessage();
+
+        Screenshot.snapActivity(sut).record();
+    }
+
+    @Test
+    @ScreenshotTest
+    public void drawer() {
+        FileDisplayActivity sut = activityRule.launchActivity(null);
+
+        onView(withId(R.id.drawer_layout)).perform(DrawerActions.open());
+
+        sut.getListOfFilesFragment().setFabEnabled(false);
+        sut.getListOfFilesFragment().setEmptyListLoadingMessage();
+
+        Screenshot.snapActivity(sut).record();
+    }
+}

+ 1 - 1
src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.java

@@ -69,7 +69,7 @@ public class SyncedFoldersActivityIT extends AbstractIT {
                                                                    false,
                                                                    false,
                                                                    true,
-                                                                   "test@server.com",
+                                                                   "test@https://server.com",
                                                                    0,
                                                                    0,
                                                                    true,

+ 2 - 2
src/androidTest/java/com/nextcloud/client/account/OwnCloudClientManagerTest.java

@@ -34,7 +34,7 @@ import android.accounts.OperationCanceledException;
 import android.net.Uri;
 import android.os.Bundle;
 
-import com.owncloud.android.AbstractIT;
+import com.owncloud.android.AbstractOnServerIT;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientManager;
@@ -48,7 +48,7 @@ import androidx.test.platform.app.InstrumentationRegistry;
 
 import static org.junit.Assert.assertEquals;
 
-public class OwnCloudClientManagerTest extends AbstractIT {
+public class OwnCloudClientManagerTest extends AbstractOnServerIT {
 
     /**
      * Like on files app we create & store an account in Android's account manager.

+ 2 - 2
src/androidTest/java/com/nextcloud/client/account/UserAccountManagerImplTest.java

@@ -6,7 +6,7 @@ import android.os.Bundle;
 
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.preferences.AppPreferencesImpl;
-import com.owncloud.android.AbstractIT;
+import com.owncloud.android.AbstractOnServerIT;
 import com.owncloud.android.lib.common.accounts.AccountUtils;
 
 import org.junit.Before;
@@ -17,7 +17,7 @@ import static junit.framework.TestCase.assertNull;
 import static junit.framework.TestCase.assertTrue;
 import static org.junit.Assert.assertFalse;
 
-public class UserAccountManagerImplTest extends AbstractIT {
+public class UserAccountManagerImplTest extends AbstractOnServerIT {
 
     private AccountManager accountManager;
 

+ 8 - 3
src/androidTest/java/com/owncloud/android/AbstractIT.java

@@ -76,16 +76,21 @@ public abstract class AbstractIT {
     @BeforeClass
     public static void beforeAll() {
         try {
+            // clean up
             targetContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
-            Account temp = new Account("test@server.com", MainApp.getAccountType(targetContext));
             AccountManager platformAccountManager = AccountManager.get(targetContext);
+
+            for (Account account : platformAccountManager.getAccounts()) {
+                platformAccountManager.removeAccountExplicitly(account);
+            }
+
+            Account temp = new Account("test@https://server.com", MainApp.getAccountType(targetContext));
             platformAccountManager.addAccountExplicitly(temp, "password", null);
             platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_BASE_URL, "https://server.com");
             platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_USER_ID, "test");
 
             final UserAccountManager userAccountManager = UserAccountManagerImpl.fromContext(targetContext);
-            account = userAccountManager.getAccountByName("test@server.com");
+            account = userAccountManager.getAccountByName("test@https://server.com");
 
             if (account == null) {
                 throw new ActivityNotFoundException();

+ 12 - 1
src/androidTest/java/com/owncloud/android/AbstractOnServerIT.java

@@ -8,12 +8,14 @@ import android.content.ActivityNotFoundException;
 import android.net.Uri;
 import android.os.Bundle;
 
+import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.account.UserAccountManagerImpl;
 import com.nextcloud.client.device.BatteryStatus;
 import com.nextcloud.client.device.PowerManagementService;
 import com.nextcloud.client.network.Connectivity;
 import com.nextcloud.client.network.ConnectivityService;
+import com.nextcloud.java.util.Optional;
 import com.owncloud.android.datamodel.UploadsStorageManager;
 import com.owncloud.android.db.OCUpload;
 import com.owncloud.android.files.services.FileUploader;
@@ -52,7 +54,14 @@ public abstract class AbstractOnServerIT extends AbstractIT {
     @BeforeClass
     public static void beforeAll() {
         try {
+            // clean up
             targetContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+            AccountManager platformAccountManager = AccountManager.get(targetContext);
+
+            for (Account account : platformAccountManager.getAccounts()) {
+                platformAccountManager.removeAccountExplicitly(account);
+            }
+
             Bundle arguments = androidx.test.platform.app.InstrumentationRegistry.getArguments();
 
             Uri baseUrl = Uri.parse(arguments.getString("TEST_SERVER_URL"));
@@ -62,7 +71,6 @@ public abstract class AbstractOnServerIT extends AbstractIT {
             Account temp = new Account(loginName + "@" + baseUrl, MainApp.getAccountType(targetContext));
             UserAccountManager accountManager = UserAccountManagerImpl.fromContext(targetContext);
             if (!accountManager.exists(temp)) {
-                AccountManager platformAccountManager = AccountManager.get(targetContext);
                 platformAccountManager.addAccountExplicitly(temp, password, null);
                 platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_ACCOUNT_VERSION,
                                                    Integer.toString(UserAccountManager.ACCOUNT_VERSION));
@@ -78,6 +86,9 @@ public abstract class AbstractOnServerIT extends AbstractIT {
                 throw new ActivityNotFoundException();
             }
 
+            Optional<User> optionalUser = userAccountManager.getUser(account.name);
+            user = optionalUser.orElseThrow(IllegalAccessError::new);
+
             client = OwnCloudClientFactory.createOwnCloudClient(account, targetContext);
 
             createDummyFiles();

+ 1 - 1
src/androidTest/java/com/owncloud/android/FileIT.java

@@ -18,7 +18,7 @@ import static org.junit.Assert.assertNull;
  * Tests related to file operations
  */
 @RunWith(AndroidJUnit4.class)
-public class FileIT extends AbstractIT {
+public class FileIT extends AbstractOnServerIT {
 
     @Test
     public void testCreateFolder() {

+ 1 - 1
src/androidTest/java/com/owncloud/android/ScreenshotsIT.java

@@ -39,7 +39,7 @@ import static org.junit.Assert.assertTrue;
 
 @LargeTest
 @RunWith(JUnit4.class)
-public class ScreenshotsIT extends AbstractIT {
+public class ScreenshotsIT extends AbstractOnServerIT {
     @ClassRule
     public static final LocaleTestRule localeTestRule = new LocaleTestRule();
 

+ 1 - 4
src/androidTest/java/com/owncloud/android/UploadIT.java

@@ -37,10 +37,8 @@ import com.owncloud.android.utils.FileStorageUtils;
 
 import org.junit.After;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 
 import androidx.annotation.NonNull;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import static junit.framework.TestCase.assertFalse;
 import static junit.framework.TestCase.assertTrue;
@@ -49,8 +47,7 @@ import static junit.framework.TestCase.assertTrue;
  * Tests related to file uploads
  */
 
-@RunWith(AndroidJUnit4.class)
-public class UploadIT extends AbstractIT {
+public class UploadIT extends AbstractOnServerIT {
     private static final String FOLDER = "/testUpload/";
 
     private UploadsStorageManager uploadsStorageManager =

+ 2 - 2
src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt

@@ -28,7 +28,7 @@ import com.nextcloud.client.device.BatteryStatus
 import com.nextcloud.client.device.PowerManagementService
 import com.nextcloud.client.network.Connectivity
 import com.nextcloud.client.network.ConnectivityService
-import com.owncloud.android.AbstractIT
+import com.owncloud.android.AbstractOnServerIT
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.datamodel.UploadsStorageManager
 import com.owncloud.android.db.OCUpload
@@ -43,7 +43,7 @@ import org.junit.Before
 import org.junit.Test
 import java.io.File
 
-class FileUploaderIT : AbstractIT() {
+class FileUploaderIT : AbstractOnServerIT() {
     var uploadsStorageManager: UploadsStorageManager? = null
 
     val connectivityServiceMock: ConnectivityService = object : ConnectivityService {

+ 52 - 57
src/androidTest/java/com/owncloud/android/ui/activity/ConflictsResolveActivityIT.java

@@ -31,8 +31,6 @@ import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.db.OCUpload;
-import com.owncloud.android.lib.resources.files.UploadFileRemoteOperation;
-import com.owncloud.android.operations.RefreshFolderOperation;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog;
 import com.owncloud.android.utils.FileStorageUtils;
 import com.owncloud.android.utils.ScreenshotTest;
@@ -40,9 +38,6 @@ import com.owncloud.android.utils.ScreenshotTest;
 import org.junit.Rule;
 import org.junit.Test;
 
-import java.io.File;
-import java.io.IOException;
-
 import androidx.fragment.app.DialogFragment;
 import androidx.test.espresso.intent.rule.IntentsTestRule;
 
@@ -95,59 +90,59 @@ public class ConflictsResolveActivityIT extends AbstractIT {
         Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record();
     }
 
-    @Test
+//    @Test
     // @ScreenshotTest // todo run without real server
-    public void screenshotImages() throws IOException {
-        FileDataStorageManager storageManager = new FileDataStorageManager(account,
-                                                                           targetContext.getContentResolver());
-
-        OCFile newFile = new OCFile("/newFile.txt");
-        newFile.setFileLength(56000);
-        newFile.setModificationTimestamp(1522019340);
-        newFile.setStoragePath(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt");
-
-        File image = getFile("image.jpg");
-
-        assertTrue(new UploadFileRemoteOperation(image.getAbsolutePath(),
-                                                 "/image.jpg",
-                                                 "image/jpg",
-                                                 "10000000").execute(client).isSuccess());
-
-        assertTrue(new RefreshFolderOperation(storageManager.getFileByPath("/"),
-                                              System.currentTimeMillis(),
-                                              false,
-                                              true,
-                                              storageManager,
-                                              account,
-                                              targetContext
-        ).execute(client).isSuccess());
-
-        OCFile existingFile = storageManager.getFileByPath("/image.jpg");
-
-        Intent intent = new Intent(targetContext, ConflictsResolveActivity.class);
-        intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, newFile);
-        intent.putExtra(ConflictsResolveActivity.EXTRA_EXISTING_FILE, existingFile);
-
-        ConflictsResolveActivity sut = activityRule.launchActivity(intent);
-
-        ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> {
-
-        };
-
-        ConflictsResolveDialog dialog = ConflictsResolveDialog.newInstance(existingFile,
-                                                                           newFile,
-                                                                           UserAccountManagerImpl
-                                                                               .fromContext(targetContext)
-                                                                               .getUser()
-                                                                          );
-        dialog.showDialog(sut);
-        dialog.listener = listener;
-
-        getInstrumentation().waitForIdleSync();
-        shortSleep();
-
-        Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record();
-    }
+//    public void screenshotImages() throws IOException {
+//        FileDataStorageManager storageManager = new FileDataStorageManager(account,
+//                                                                           targetContext.getContentResolver());
+//
+//        OCFile newFile = new OCFile("/newFile.txt");
+//        newFile.setFileLength(56000);
+//        newFile.setModificationTimestamp(1522019340);
+//        newFile.setStoragePath(FileStorageUtils.getSavePath(account.name) + "/nonEmpty.txt");
+//
+//        File image = getFile("image.jpg");
+//
+//        assertTrue(new UploadFileRemoteOperation(image.getAbsolutePath(),
+//                                                 "/image.jpg",
+//                                                 "image/jpg",
+//                                                 "10000000").execute(client).isSuccess());
+//
+//        assertTrue(new RefreshFolderOperation(storageManager.getFileByPath("/"),
+//                                              System.currentTimeMillis(),
+//                                              false,
+//                                              true,
+//                                              storageManager,
+//                                              account,
+//                                              targetContext
+//        ).execute(client).isSuccess());
+//
+//        OCFile existingFile = storageManager.getFileByPath("/image.jpg");
+//
+//        Intent intent = new Intent(targetContext, ConflictsResolveActivity.class);
+//        intent.putExtra(ConflictsResolveActivity.EXTRA_FILE, newFile);
+//        intent.putExtra(ConflictsResolveActivity.EXTRA_EXISTING_FILE, existingFile);
+//
+//        ConflictsResolveActivity sut = activityRule.launchActivity(intent);
+//
+//        ConflictsResolveDialog.OnConflictDecisionMadeListener listener = decision -> {
+//
+//        };
+//
+//        ConflictsResolveDialog dialog = ConflictsResolveDialog.newInstance(existingFile,
+//                                                                           newFile,
+//                                                                           UserAccountManagerImpl
+//                                                                               .fromContext(targetContext)
+//                                                                               .getUser()
+//                                                                          );
+//        dialog.showDialog(sut);
+//        dialog.listener = listener;
+//
+//        getInstrumentation().waitForIdleSync();
+//        shortSleep();
+//
+//        Screenshot.snap(dialog.getDialog().getWindow().getDecorView()).record();
+//    }
 
     @Test
     public void cancel() {

+ 36 - 14
src/androidTest/java/com/owncloud/android/ui/activity/DrawerActivityIT.java

@@ -28,6 +28,7 @@ import android.accounts.AccountManager;
 import android.net.Uri;
 import android.os.Bundle;
 
+import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.account.UserAccountManagerImpl;
 import com.owncloud.android.AbstractIT;
@@ -57,6 +58,8 @@ public class DrawerActivityIT extends AbstractIT {
     @Rule
     public final GrantPermissionRule permissionRule = GrantPermissionRule.grant(
         Manifest.permission.WRITE_EXTERNAL_STORAGE);
+    private static Account account1;
+    private static User user1;
     private static Account account2;
     private static String account2Name;
     private static String account2DisplayName;
@@ -65,32 +68,51 @@ public class DrawerActivityIT extends AbstractIT {
     public static void beforeClass() {
         Bundle arguments = androidx.test.platform.app.InstrumentationRegistry.getArguments();
         Uri baseUrl = Uri.parse(arguments.getString("TEST_SERVER_URL"));
+
+        AccountManager platformAccountManager = AccountManager.get(targetContext);
+        UserAccountManager userAccountManager = UserAccountManagerImpl.fromContext(targetContext);
+
+        for (Account account : platformAccountManager.getAccounts()) {
+            platformAccountManager.removeAccountExplicitly(account);
+        }
+
         String loginName = "user1";
         String password = "user1";
 
         Account temp = new Account(loginName + "@" + baseUrl, MainApp.getAccountType(targetContext));
-        UserAccountManager accountManager = UserAccountManagerImpl.fromContext(targetContext);
-        if (!accountManager.exists(temp)) {
-            AccountManager platformAccountManager = AccountManager.get(targetContext);
-            platformAccountManager.addAccountExplicitly(temp, password, null);
-            platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_ACCOUNT_VERSION,
-                                               Integer.toString(UserAccountManager.ACCOUNT_VERSION));
-            platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_VERSION, "14.0.0.0");
-            platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_BASE_URL, baseUrl.toString());
-            platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_USER_ID, loginName); // same as userId
-        }
+        platformAccountManager.addAccountExplicitly(temp, password, null);
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_ACCOUNT_VERSION,
+                                           Integer.toString(UserAccountManager.ACCOUNT_VERSION));
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_VERSION, "14.0.0.0");
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_BASE_URL, baseUrl.toString());
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_USER_ID, loginName); // same as userId
+
+        account1 = userAccountManager.getAccountByName(loginName + "@" + baseUrl);
+        user1 = userAccountManager.getUser(account1.name).orElseThrow(IllegalAccessError::new);
+
+        loginName = "user2";
+        password = "user2";
+
+        temp = new Account(loginName + "@" + baseUrl, MainApp.getAccountType(targetContext));
+        platformAccountManager.addAccountExplicitly(temp, password, null);
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_ACCOUNT_VERSION,
+                                           Integer.toString(UserAccountManager.ACCOUNT_VERSION));
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_VERSION, "14.0.0.0");
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_OC_BASE_URL, baseUrl.toString());
+        platformAccountManager.setUserData(temp, AccountUtils.Constants.KEY_USER_ID, loginName); // same as userId
 
-        final UserAccountManager userAccountManager = UserAccountManagerImpl.fromContext(targetContext);
         account2 = userAccountManager.getAccountByName(loginName + "@" + baseUrl);
         account2Name = loginName + "@" + baseUrl;
-        account2DisplayName = "User One@" + baseUrl;
+        account2DisplayName = "User Two@" + baseUrl;
     }
 
     @Test
     public void switchAccountViaAccountList() {
         FileDisplayActivity sut = activityRule.launchActivity(null);
 
-        assertEquals(account, sut.getUser().get().toPlatformAccount());
+        sut.setUser(user1);
+
+        assertEquals(account1, sut.getUser().get().toPlatformAccount());
 
         onView(withId(R.id.switch_account_button)).perform(click());
 
@@ -101,6 +123,6 @@ public class DrawerActivityIT extends AbstractIT {
         assertEquals(account2, sut.getUser().get().toPlatformAccount());
 
         onView(withId(R.id.switch_account_button)).perform(click());
-        onView(withText(account.name)).perform(click());
+        onView(withText(account1.name)).perform(click());
     }
 }

+ 10 - 3
src/androidTest/java/com/owncloud/android/ui/dialog/DialogFragmentIT.java

@@ -26,6 +26,7 @@ import android.Manifest;
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.content.Intent;
+import android.os.Looper;
 
 import com.facebook.testing.screenshot.Screenshot;
 import com.nextcloud.client.account.RegisteredUser;
@@ -62,8 +63,11 @@ public class DialogFragmentIT extends AbstractIT {
         Manifest.permission.WRITE_EXTERNAL_STORAGE);
 
     @Test
-//    @ScreenshotTest
+    @ScreenshotTest
     public void testRenameFileDialog() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
         RenameFileDialogFragment dialog = RenameFileDialogFragment.newInstance(new OCFile("/Test/"));
         showDialog(dialog);
     }
@@ -112,8 +116,11 @@ public class DialogFragmentIT extends AbstractIT {
     }
 
     @Test
-    // @ScreenshotTest
+    @ScreenshotTest
     public void testNewFolderDialog() {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
         CreateFolderDialogFragment sut = CreateFolderDialogFragment.newInstance(new OCFile("/"));
         showDialog(sut);
     }
@@ -126,7 +133,7 @@ public class DialogFragmentIT extends AbstractIT {
             accountManager.removeAccountExplicitly(account);
         }
 
-        Account newAccount = new Account("test@server.com", MainApp.getAccountType(targetContext));
+        Account newAccount = new Account("test@https://server.com", MainApp.getAccountType(targetContext));
         accountManager.addAccountExplicitly(newAccount, "password", null);
         accountManager.setUserData(newAccount, AccountUtils.Constants.KEY_OC_BASE_URL, "https://server.com");
         accountManager.setUserData(newAccount, AccountUtils.Constants.KEY_USER_ID, "test");

+ 12 - 13
src/androidTest/java/com/owncloud/android/ui/fragment/OCFileListFragmentIT.kt

@@ -27,7 +27,6 @@ import androidx.test.core.app.ActivityScenario
 import androidx.test.espresso.intent.rule.IntentsTestRule
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.test.rule.GrantPermissionRule
-import com.facebook.testing.screenshot.Screenshot
 import com.nextcloud.client.account.UserAccountManagerImpl
 import com.nextcloud.client.device.BatteryStatus
 import com.nextcloud.client.device.PowerManagementService
@@ -36,7 +35,7 @@ import com.nextcloud.client.network.ConnectivityService
 import com.nextcloud.client.preferences.AppPreferences
 import com.nextcloud.client.preferences.AppPreferencesImpl
 import com.nextcloud.client.preferences.DarkMode
-import com.owncloud.android.AbstractIT
+import com.owncloud.android.AbstractOnServerIT
 import com.owncloud.android.MainApp
 import com.owncloud.android.datamodel.UploadsStorageManager
 import com.owncloud.android.db.OCUpload
@@ -54,7 +53,7 @@ import org.junit.Assert.assertTrue
 import org.junit.Rule
 import org.junit.Test
 
-class OCFileListFragmentIT : AbstractIT() {
+class OCFileListFragmentIT : AbstractOnServerIT() {
     companion object {
         val SECOND_IN_MILLIS = 1000L
         val RESULT_PER_PAGE = 50
@@ -137,9 +136,9 @@ class OCFileListFragmentIT : AbstractIT() {
         shortSleep()
         shortSleep()
 
-        sut.onActivity { activity ->
-            Screenshot.snapActivity(activity).setName("richworkspaces_light").record()
-        }
+//        sut.onActivity { activity ->
+//            Screenshot.snapActivity(activity).setName("richworkspaces_light").record()
+//        }
 
         val preferences: AppPreferences = AppPreferencesImpl.fromContext(targetContext)
         preferences.darkThemeMode = DarkMode.DARK
@@ -160,13 +159,13 @@ class OCFileListFragmentIT : AbstractIT() {
         shortSleep()
         shortSleep()
 
-        sut.onActivity { activity ->
-            Screenshot.snapActivity(activity).setName("richworkspaces_dark").record()
-        }
+//        sut.onActivity { activity ->
+//            Screenshot.snapActivity(activity).setName("richworkspaces_dark").record()
+//        }
 
         // switch back to light mode
         preferences.darkThemeMode = DarkMode.LIGHT
-        MainApp.setAppTheme(DarkMode.LIGHT)
+        sut.onActivity { MainApp.setAppTheme(DarkMode.LIGHT) }
 
         shortSleep()
         sut.onActivity { activity -> activity.onBackPressed() }
@@ -202,7 +201,7 @@ class OCFileListFragmentIT : AbstractIT() {
 
         shortSleep()
         InstrumentationRegistry.getInstrumentation().waitForIdleSync()
-        Screenshot.snapActivity(sut).record()
+//        Screenshot.snapActivity(sut).record()
     }
 
     @Test
@@ -234,7 +233,7 @@ class OCFileListFragmentIT : AbstractIT() {
 
         shortSleep()
         InstrumentationRegistry.getInstrumentation().waitForIdleSync()
-        Screenshot.snapActivity(sut).record()
+//        Screenshot.snapActivity(sut).record()
     }
 
 //    @Test
@@ -298,6 +297,6 @@ class OCFileListFragmentIT : AbstractIT() {
 
         shortSleep()
         InstrumentationRegistry.getInstrumentation().waitForIdleSync()
-        Screenshot.snapActivity(sut).record()
+//        Screenshot.snapActivity(sut).record()
     }
 }