소스 검색

Add screenshot tests

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 4 년 전
부모
커밋
7650c8f8ea

+ 59 - 0
src/androidTest/java/com/nextcloud/client/AuthenticatorActivityIT.java

@@ -0,0 +1,59 @@
+/*
+ * Nextcloud Android client application
+ *
+ * @author Andy Scherzinger
+ * Copyright (C) 2021 Andy Scherzinger
+ *
+ * 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.owncloud.android.AbstractIT;
+import com.owncloud.android.R;
+import com.owncloud.android.authentication.AuthenticatorActivity;
+import com.owncloud.android.utils.ScreenshotTest;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import androidx.test.espresso.intent.rule.IntentsTestRule;
+import androidx.test.rule.GrantPermissionRule;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.typeText;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+
+
+public class AuthenticatorActivityIT extends AbstractIT {
+    private static final String URL = "cloud.nextcloud.com";
+    @Rule public IntentsTestRule<AuthenticatorActivity> activityRule = new IntentsTestRule<>(AuthenticatorActivity.class,
+                                                                                             true,
+                                                                                             false);
+
+    @Rule
+    public final GrantPermissionRule permissionRule = GrantPermissionRule.grant(
+        Manifest.permission.WRITE_EXTERNAL_STORAGE);
+
+    @Test
+    @ScreenshotTest
+    public void login() {
+        AuthenticatorActivity sut = activityRule.launchActivity(null);
+        onView(withId(R.id.host_url_input)).perform(typeText(URL));
+        sut.runOnUiThread(() -> sut.getAccountSetupBinding().hostUrlInput.clearFocus());
+        screenshot(sut);
+    }
+}

+ 6 - 0
src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -143,6 +143,7 @@ import javax.inject.Inject;
 import androidx.annotation.ColorInt;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
@@ -244,6 +245,11 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
     @SuppressLint("ResourceAsColor") @ColorInt
     private int primaryColor = R.color.primary;
 
+    @VisibleForTesting
+    public AccountSetupBinding getAccountSetupBinding() {
+        return accountSetupBinding;
+    }
+
     /**
      * {@inheritDoc}
      * <p>