mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 12:49:55 +01:00
Fix instrumentation tests
This commit is contained in:
@@ -4,16 +4,20 @@ import android.app.Activity;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.account.AccountManager;
|
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.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
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 org.briarproject.briar.R;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import androidx.test.espresso.intent.rule.IntentsTestRule;
|
import androidx.test.espresso.intent.rule.IntentsTestRule;
|
||||||
|
|
||||||
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
|
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")
|
@SuppressWarnings("WeakerAccess")
|
||||||
@@ -27,6 +31,8 @@ public abstract class UiTest {
|
|||||||
protected AccountManager accountManager;
|
protected AccountManager accountManager;
|
||||||
@Inject
|
@Inject
|
||||||
protected LifecycleManager lifecycleManager;
|
protected LifecycleManager lifecycleManager;
|
||||||
|
@Inject
|
||||||
|
protected SettingsManager settingsManager;
|
||||||
|
|
||||||
public UiTest() {
|
public UiTest() {
|
||||||
BriarTestComponentApplication app = getApplicationContext();
|
BriarTestComponentApplication app = getApplicationContext();
|
||||||
@@ -39,22 +45,8 @@ public abstract class UiTest {
|
|||||||
protected class CleanAccountTestRule<A extends Activity>
|
protected class CleanAccountTestRule<A extends Activity>
|
||||||
extends IntentsTestRule<A> {
|
extends IntentsTestRule<A> {
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private final Runnable runnable;
|
|
||||||
|
|
||||||
public CleanAccountTestRule(Class<A> activityClass) {
|
public CleanAccountTestRule(Class<A> activityClass) {
|
||||||
super(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<A> activityClass, Runnable runnable) {
|
|
||||||
super(activityClass, false, false);
|
|
||||||
this.runnable = runnable;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,16 +54,17 @@ public abstract class UiTest {
|
|||||||
super.beforeActivityLaunched();
|
super.beforeActivityLaunched();
|
||||||
accountManager.deleteAccount();
|
accountManager.deleteAccount();
|
||||||
accountManager.createAccount(USERNAME, PASSWORD);
|
accountManager.createAccount(USERNAME, PASSWORD);
|
||||||
if (runnable != null) {
|
Intent serviceIntent =
|
||||||
Intent serviceIntent =
|
new Intent(getApplicationContext(), BriarService.class);
|
||||||
new Intent(getApplicationContext(), BriarService.class);
|
getApplicationContext().startService(serviceIntent);
|
||||||
getApplicationContext().startService(serviceIntent);
|
try {
|
||||||
try {
|
lifecycleManager.waitForStartup();
|
||||||
lifecycleManager.waitForStartup();
|
// do not show doze white-listing dialog
|
||||||
} catch (InterruptedException e) {
|
Settings settings = new Settings();
|
||||||
throw new AssertionError(e);
|
settings.putBoolean(DOZE_ASK_AGAIN, false);
|
||||||
}
|
settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE);
|
||||||
runnable.run();
|
} catch (InterruptedException | DbException e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<ConversationActivity> 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()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -16,6 +16,7 @@ import androidx.test.espresso.contrib.DrawerActions;
|
|||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
import androidx.test.rule.ActivityTestRule;
|
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.Espresso.onView;
|
||||||
import static androidx.test.espresso.action.ViewActions.click;
|
import static androidx.test.espresso.action.ViewActions.click;
|
||||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
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.withId;
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.withText;
|
import static androidx.test.espresso.matcher.ViewMatchers.withText;
|
||||||
import static org.briarproject.briar.android.ViewActions.waitUntilMatches;
|
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.hamcrest.CoreMatchers.is;
|
||||||
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class SettingsActivityScreenshotTest extends ScreenshotTest {
|
public class SettingsActivityScreenshotTest extends ScreenshotTest {
|
||||||
@@ -76,6 +79,8 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void appLock() {
|
public void appLock() {
|
||||||
|
assumeTrue("device has no screen lock",
|
||||||
|
hasScreenLock(getApplicationContext()));
|
||||||
// scroll down
|
// scroll down
|
||||||
onView(withClassName(is(RecyclerView.class.getName())))
|
onView(withClassName(is(RecyclerView.class.getName())))
|
||||||
.perform(scrollTo(hasDescendant(
|
.perform(scrollTo(hasDescendant(
|
||||||
|
|||||||
Reference in New Issue
Block a user