diff --git a/briar-android/proguard-test.txt b/briar-android/proguard-test.txt
index 7007db0c24f9135ae365351b24d526e928fdcee8..652f46e58cdf44f7066f521f97508362de58bc1a 100644
--- a/briar-android/proguard-test.txt
+++ b/briar-android/proguard-test.txt
@@ -12,4 +12,4 @@
 -keep class junit.** { *; }
 -dontwarn junit.**
 
--dontwarn org.briarproject.briar.android.BriarTestApplication
\ No newline at end of file
+-dontwarn org.briarproject.briar.android.TestBriarApplication
\ No newline at end of file
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestApplication.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/TestBriarApplication.java
similarity index 80%
rename from briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestApplication.java
rename to briar-android/src/androidTest/java/org/briarproject/briar/android/TestBriarApplication.java
index 8bdd5b63a6c2300394eafd282684227c23a5428a..eb6d86057f78163fbe6271947da8363ba6a51007 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestApplication.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/TestBriarApplication.java
@@ -3,11 +3,11 @@ package org.briarproject.briar.android;
 import org.briarproject.bramble.BrambleCoreModule;
 import org.briarproject.briar.BriarCoreModule;
 
-public class BriarTestApplication extends BriarApplicationImpl {
+public class TestBriarApplication extends BriarApplicationImpl {
 
 	@Override
 	protected AndroidComponent createApplicationComponent() {
-		AndroidComponent component = DaggerBriarTestComponent.builder()
+		AndroidComponent component = DaggerTestComponent.builder()
 				.appModule(new AppModule(this)).build();
 		// We need to load the eager singletons directly after making the
 		// dependency graphs
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestComponent.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/TestComponent.java
similarity index 90%
rename from briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestComponent.java
rename to briar-android/src/androidTest/java/org/briarproject/briar/android/TestComponent.java
index 33166b8c4b069ee15d4e189f1760badfc979837d..a42980f101063b3698996a49fce7930a840682d6 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestComponent.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/TestComponent.java
@@ -17,7 +17,7 @@ import dagger.Component;
 		BrambleAndroidModule.class,
 		BrambleCoreModule.class
 })
-public interface BriarTestComponent extends AndroidComponent {
+public interface TestComponent extends AndroidComponent {
 
 	void inject(NavDrawerActivityTest test);
 	void inject(SettingsActivityTest test);
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java
index b290b2be27e6ee7fb758af1f51f97ccf9fb21fa0..4f8b03574ebf92db663fee8bdbb58d72eeb37c78 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java
@@ -1,16 +1,18 @@
 package org.briarproject.briar.android.navdrawer;
 
+import android.app.Activity;
 import android.support.test.espresso.contrib.DrawerActions;
 import android.support.test.espresso.intent.rule.IntentsTestRule;
+import android.support.test.runner.AndroidJUnit4;
 import android.view.Gravity;
 
 import org.briarproject.briar.R;
-import org.briarproject.briar.android.BriarTestComponent;
+import org.briarproject.briar.android.TestComponent;
 import org.briarproject.briar.android.settings.SettingsActivity;
 import org.briarproject.briar.android.test.ScreenshotTest;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
@@ -19,11 +21,10 @@ import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
 import static android.support.test.espresso.intent.Intents.intended;
 import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
 import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
 import static android.support.test.espresso.matcher.ViewMatchers.withId;
 import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static org.briarproject.briar.android.test.ViewActions.waitForActivityToResume;
 
+@RunWith(AndroidJUnit4.class)
 public class NavDrawerActivityTest extends ScreenshotTest {
 
 	@Rule
@@ -31,20 +32,19 @@ public class NavDrawerActivityTest extends ScreenshotTest {
 			new IntentsTestRule<>(NavDrawerActivity.class);
 
 	@Override
-	protected void inject(BriarTestComponent component) {
+	protected void inject(TestComponent component) {
 		component.inject(this);
 	}
 
-	@Before
-	public void waitForSignIn() {
-		onView(isRoot())
-				.perform(waitForActivityToResume(activityRule.getActivity()));
+	@Override
+	protected Activity getActivity() {
+		return activityRule.getActivity();
 	}
 
 	@Test
 	public void openSettings() {
 		onView(withId(R.id.drawer_layout))
-				.check(matches(isClosed(Gravity.LEFT)))
+				.check(matches(isClosed(Gravity.START)))
 				.perform(DrawerActions.open());
 		onView(withText(R.string.settings_button))
 				.check(matches(isDisplayed()))
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/settings/SettingsActivityTest.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/settings/SettingsActivityTest.java
index fd3dd61b7d54dbde3901a63406334ae8b64df713..5817d732f2e893741ef1fc40e52f09888b1559cd 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/settings/SettingsActivityTest.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/settings/SettingsActivityTest.java
@@ -1,5 +1,6 @@
 package org.briarproject.briar.android.settings;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.support.test.espresso.contrib.DrawerActions;
 import android.support.test.rule.ActivityTestRule;
@@ -9,10 +10,9 @@ import android.view.Gravity;
 import junit.framework.AssertionFailedError;
 
 import org.briarproject.briar.R;
-import org.briarproject.briar.android.BriarTestComponent;
+import org.briarproject.briar.android.TestComponent;
 import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
 import org.briarproject.briar.android.test.ScreenshotTest;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -22,10 +22,8 @@ import static android.support.test.espresso.action.ViewActions.click;
 import static android.support.test.espresso.assertion.ViewAssertions.matches;
 import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
 import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
 import static android.support.test.espresso.matcher.ViewMatchers.withId;
 import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static org.briarproject.briar.android.test.ViewActions.waitForActivityToResume;
 
 @RunWith(AndroidJUnit4.class)
 public class SettingsActivityTest extends ScreenshotTest {
@@ -35,14 +33,13 @@ public class SettingsActivityTest extends ScreenshotTest {
 			new ActivityTestRule<>(SettingsActivity.class);
 
 	@Override
-	protected void inject(BriarTestComponent component) {
+	protected void inject(TestComponent component) {
 		component.inject(this);
 	}
 
-	@Before
-	public void waitForSignIn() {
-		onView(isRoot())
-				.perform(waitForActivityToResume(activityRule.getActivity()));
+	@Override
+	protected Activity getActivity() {
+		return activityRule.getActivity();
 	}
 
 	@Test
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/test/BriarTestRunner.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/test/BriarTestRunner.java
index cefb68766f5ef4e0835c99d5736fb5488f5b763b..655582242e564fccd57c3a377100435291c22c55 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/test/BriarTestRunner.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/test/BriarTestRunner.java
@@ -4,7 +4,7 @@ import android.app.Application;
 import android.content.Context;
 import android.support.test.runner.AndroidJUnitRunner;
 
-import org.briarproject.briar.android.BriarTestApplication;
+import org.briarproject.briar.android.TestBriarApplication;
 
 public class BriarTestRunner extends AndroidJUnitRunner {
 
@@ -13,7 +13,7 @@ public class BriarTestRunner extends AndroidJUnitRunner {
 			Context context)
 			throws InstantiationException, IllegalAccessException,
 			ClassNotFoundException {
-		return super.newApplication(cl, BriarTestApplication.class.getName(),
+		return super.newApplication(cl, TestBriarApplication.class.getName(),
 				context);
 	}
 
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ScreenshotTest.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ScreenshotTest.java
index 4b73dc0cc807b28341ecb6f8a10b0737379481b8..ef11475a9cbc459f6b75d7abd2010d2e5d098656 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ScreenshotTest.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ScreenshotTest.java
@@ -1,15 +1,16 @@
 package org.briarproject.briar.android.test;
 
-import android.support.test.InstrumentationRegistry;
+import android.app.Activity;
 import android.support.test.espresso.NoMatchingViewException;
-import android.support.test.espresso.contrib.DrawerActions;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.UiObject;
+import android.support.test.uiautomator.UiSelector;
 import android.util.Log;
-import android.view.Gravity;
 
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.briar.R;
-import org.briarproject.briar.android.BriarTestApplication;
-import org.briarproject.briar.android.BriarTestComponent;
+import org.briarproject.briar.android.TestBriarApplication;
+import org.briarproject.briar.android.TestComponent;
 import org.junit.Before;
 import org.junit.ClassRule;
 
@@ -19,15 +20,19 @@ import tools.fastlane.screengrab.Screengrab;
 import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy;
 import tools.fastlane.screengrab.locale.LocaleTestRule;
 
+import static android.support.test.InstrumentationRegistry.getInstrumentation;
+import static android.support.test.InstrumentationRegistry.getTargetContext;
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
 import static android.support.test.espresso.action.ViewActions.typeText;
 import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
 import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
 import static android.support.test.espresso.matcher.ViewMatchers.withId;
 import static android.support.test.espresso.matcher.ViewMatchers.withText;
 import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.RUNNING;
+import static org.briarproject.briar.android.test.ViewActions.waitForActivityToResume;
+import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting;
 import static tools.fastlane.screengrab.Screengrab.setDefaultScreenshotStrategy;
 
 public abstract class ScreenshotTest {
@@ -35,31 +40,26 @@ public abstract class ScreenshotTest {
 	@ClassRule
 	public static final LocaleTestRule localeTestRule = new LocaleTestRule();
 
-	@Before
-	public void setupScreenshots() {
-		setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy());
-	}
-
 	private static final String USERNAME = "test";
 	private static final String PASSWORD = "123456";
 
-	private final BriarTestApplication app =
-			(BriarTestApplication) InstrumentationRegistry.getTargetContext()
+	private final TestBriarApplication app =
+			(TestBriarApplication) getTargetContext()
 					.getApplicationContext();
 	@Inject
 	LifecycleManager lifecycleManager;
 
-	protected abstract void inject(BriarTestComponent component);
+	protected abstract void inject(TestComponent component);
+	protected abstract Activity getActivity();
+
+	@Before
+	public void setupScreenshots() {
+		setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy());
+	}
 
-	/**
-	 * Signs the user in.
-	 *
-	 * Note that you need to wait for your UI to show up after this.
-	 * See {@link ViewActions#waitForActivityToResume} for one way to do it.
-	 */
 	@Before
 	public void signIn() throws Exception {
-		inject((BriarTestComponent) app.getApplicationComponent());
+		inject((TestComponent) app.getApplicationComponent());
 		if (lifecycleManager.getLifecycleState() == RUNNING) return;
 
 		try {
@@ -73,9 +73,11 @@ public abstract class ScreenshotTest {
 			// we start from a blank state and have no account, yet
 			createAccount();
 		}
+		onView(isRoot())
+				.perform(waitForActivityToResume(getActivity()));
 	}
 
-	private void createAccount() {
+	private void createAccount() throws Exception {
 		// TODO use AccountManager to start with fresh account
 		// TODO move this below into a dedicated test for SetupActivity
 
@@ -99,19 +101,26 @@ public abstract class ScreenshotTest {
 		onView(withId(R.id.next))
 				.check(matches(isDisplayed()))
 				.perform(click());
+
+		// White-list Doze if needed
+		if (needsDozeWhitelisting(getTargetContext())) {
+			onView(withText(R.string.setup_doze_button))
+					.check(matches(isDisplayed()))
+					.perform(click());
+			UiDevice device = UiDevice.getInstance(getInstrumentation());
+			UiObject allowButton = device.findObject(
+					new UiSelector().className("android.widget.Button")
+							.index(1));
+			allowButton.click();
+			onView(withId(R.id.next))
+					.check(matches(isDisplayed()))
+					.perform(click());
+		}
+
 		onView(withId(R.id.progress))
 				.check(matches(isDisplayed()));
 	}
 
-	protected void signOut() {
-		onView(withId(R.id.drawer_layout))
-				.check(matches(isClosed(Gravity.LEFT)))
-				.perform(DrawerActions.open());
-		onView(withText(R.string.sign_out_button))
-				.check(matches(isDisplayed()))
-				.perform(click());
-	}
-
 	protected void screenshot(String name) {
 		try {
 			Screengrab.screenshot(name);
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ViewActions.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ViewActions.java
index 806124d1b6d06c4447ee7a137337dcca16368d05..1dc07c8c78e20cc07538e119fb9f7ae874ed75fc 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ViewActions.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/test/ViewActions.java
@@ -21,7 +21,7 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 
 public class ViewActions {
 
-	private final static long TIMEOUT_MS = SECONDS.toMillis(5);
+	private final static long TIMEOUT_MS = SECONDS.toMillis(10);
 	private final static long WAIT_MS = 50;
 
 	public static ViewAction waitUntilMatches(Matcher<View> viewMatcher) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
index 2485f81c95866ca1f8a37d32c7d640795256d4c5..ee30d8d37f5af99894c65fd7e13a3ad30e12a728 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
@@ -55,7 +55,6 @@ import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
 import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
 import static android.text.format.DateUtils.WEEK_IN_MILLIS;
 import static org.briarproject.briar.BuildConfig.APPLICATION_ID;
-import static org.briarproject.briar.BuildConfig.BUILD_TYPE;
 import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE;
 
 @MethodsNotNullByDefault
@@ -175,7 +174,6 @@ public class UiUtils {
 
 	public static boolean needsDozeWhitelisting(Context ctx) {
 		if (SDK_INT < 23) return false;
-		if (BUILD_TYPE.equals("screenshot")) return false;
 		PowerManager pm = (PowerManager) ctx.getSystemService(POWER_SERVICE);
 		String packageName = ctx.getPackageName();
 		if (pm == null) throw new AssertionError();