diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java index ce6899901..af75f3bbf 100644 --- a/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java +++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java @@ -4,16 +4,20 @@ import android.app.Activity; import android.content.Intent; import org.briarproject.bramble.api.account.AccountManager; +import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.bramble.api.settings.Settings; +import org.briarproject.bramble.api.settings.SettingsManager; import org.briarproject.briar.R; -import javax.annotation.Nullable; import javax.inject.Inject; import androidx.test.espresso.intent.rule.IntentsTestRule; import static androidx.test.core.app.ApplicationProvider.getApplicationContext; +import static org.briarproject.briar.android.controller.BriarControllerImpl.DOZE_ASK_AGAIN; +import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE; @SuppressWarnings("WeakerAccess") @@ -27,6 +31,8 @@ public abstract class UiTest { protected AccountManager accountManager; @Inject protected LifecycleManager lifecycleManager; + @Inject + protected SettingsManager settingsManager; public UiTest() { BriarTestComponentApplication app = getApplicationContext(); @@ -39,22 +45,8 @@ public abstract class UiTest { protected class CleanAccountTestRule extends IntentsTestRule { - @Nullable - private final Runnable runnable; - public CleanAccountTestRule(Class activityClass) { super(activityClass); - this.runnable = null; - } - - /** - * Use this if you need to run code before launching the activity. - * Note: You need to use {@link #launchActivity(Intent)} yourself - * to start the activity. - */ - public CleanAccountTestRule(Class activityClass, Runnable runnable) { - super(activityClass, false, false); - this.runnable = runnable; } @Override @@ -62,16 +54,17 @@ public abstract class UiTest { super.beforeActivityLaunched(); accountManager.deleteAccount(); accountManager.createAccount(USERNAME, PASSWORD); - if (runnable != null) { - Intent serviceIntent = - new Intent(getApplicationContext(), BriarService.class); - getApplicationContext().startService(serviceIntent); - try { - lifecycleManager.waitForStartup(); - } catch (InterruptedException e) { - throw new AssertionError(e); - } - runnable.run(); + Intent serviceIntent = + new Intent(getApplicationContext(), BriarService.class); + getApplicationContext().startService(serviceIntent); + try { + lifecycleManager.waitForStartup(); + // do not show doze white-listing dialog + Settings settings = new Settings(); + settings.putBoolean(DOZE_ASK_AGAIN, false); + settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE); + } catch (InterruptedException | DbException e) { + throw new AssertionError(e); } } } diff --git a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/conversation/ConversationActivityNotSignedInTest.java b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/conversation/ConversationActivityNotSignedInTest.java deleted file mode 100644 index be1ce09c4..000000000 --- a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/conversation/ConversationActivityNotSignedInTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.briarproject.briar.android.conversation; - -import android.content.Context; -import android.content.Intent; - -import org.briarproject.briar.R; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.rule.ActivityTestRule; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; -import static org.briarproject.briar.android.ViewActions.waitUntilMatches; -import static org.briarproject.briar.android.conversation.ConversationActivity.CONTACT_ID; - -@RunWith(AndroidJUnit4.class) -public class ConversationActivityNotSignedInTest { - - @Rule - public ActivityTestRule testRule = - new ActivityTestRule<>(ConversationActivity.class, false, false); - - @Test - public void openWithoutSignedIn() { - Context targetContext = getInstrumentation().getTargetContext(); - Intent intent = new Intent(targetContext, ConversationActivity.class); - intent.putExtra(CONTACT_ID, 1); - testRule.launchActivity(intent); - - onView(withText(R.string.sign_in_button)) - .perform(waitUntilMatches(isDisplayed())); - } - -} diff --git a/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java b/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java index 2d11280ce..c99250ad8 100644 --- a/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java +++ b/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java @@ -16,6 +16,7 @@ import androidx.test.espresso.contrib.DrawerActions; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.rule.ActivityTestRule; +import static androidx.test.core.app.ApplicationProvider.getApplicationContext; import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.assertion.ViewAssertions.matches; @@ -29,7 +30,9 @@ import static androidx.test.espresso.matcher.ViewMatchers.withClassName; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.briarproject.briar.android.ViewActions.waitUntilMatches; +import static org.briarproject.briar.android.util.UiUtils.hasScreenLock; import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assume.assumeTrue; @RunWith(AndroidJUnit4.class) public class SettingsActivityScreenshotTest extends ScreenshotTest { @@ -76,6 +79,8 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest { @Test public void appLock() { + assumeTrue("device has no screen lock", + hasScreenLock(getApplicationContext())); // scroll down onView(withClassName(is(RecyclerView.class.getName()))) .perform(scrollTo(hasDescendant(