Refactor tests so that all test data is created in the first test

parent 1c90e648
...@@ -140,7 +140,7 @@ dependencies { ...@@ -140,7 +140,7 @@ dependencies {
androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:2.0.2" androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:2.0.2"
androidTestCompileOnly 'javax.annotation:jsr250-api:1.0' androidTestCompileOnly 'javax.annotation:jsr250-api:1.0'
androidTestImplementation 'junit:junit:4.12' androidTestImplementation 'junit:junit:4.12'
androidTestScreenshotImplementation "tools.fastlane:screengrab:1.1.0" androidTestScreenshotImplementation "tools.fastlane:screengrab:1.2.0"
androidTestScreenshotImplementation "com.android.support.test.uiautomator:uiautomator-v18:2.1.3" androidTestScreenshotImplementation "com.android.support.test.uiautomator:uiautomator-v18:2.1.3"
} }
......
...@@ -2,4 +2,6 @@ app_package_name "org.briarproject.briar.android.screenshot.debug" ...@@ -2,4 +2,6 @@ app_package_name "org.briarproject.briar.android.screenshot.debug"
locales ['en-US'] locales ['en-US']
app_apk_path "build/outputs/apk/screenshot/debug/briar-android-screenshot-debug.apk" app_apk_path "build/outputs/apk/screenshot/debug/briar-android-screenshot-debug.apk"
tests_apk_path "build/outputs/apk/androidTest/screenshot/debug/briar-android-screenshot-debug-androidTest.apk" tests_apk_path "build/outputs/apk/androidTest/screenshot/debug/briar-android-screenshot-debug-androidTest.apk"
test_instrumentation_runner "org.briarproject.briar.android.BriarTestRunner" test_instrumentation_runner "org.briarproject.briar.android.BriarTestRunner"
\ No newline at end of file reinstall_app = true
exit_on_test_failure = true
\ No newline at end of file
...@@ -7,6 +7,7 @@ import android.support.test.espresso.intent.rule.IntentsTestRule; ...@@ -7,6 +7,7 @@ import android.support.test.espresso.intent.rule.IntentsTestRule;
import org.briarproject.bramble.api.account.AccountManager; import org.briarproject.bramble.api.account.AccountManager;
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.briar.R;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -16,7 +17,8 @@ import static android.support.test.InstrumentationRegistry.getTargetContext; ...@@ -16,7 +17,8 @@ import static android.support.test.InstrumentationRegistry.getTargetContext;
@SuppressWarnings("WeakerAccess") @SuppressWarnings("WeakerAccess")
public abstract class UiTest { public abstract class UiTest {
protected static final String USERNAME = "Alice"; protected final String USERNAME =
getTargetContext().getString(R.string.screenshot_alice);
protected static final String PASSWORD = "123456"; protected static final String PASSWORD = "123456";
@Inject @Inject
......
...@@ -5,7 +5,6 @@ import org.briarproject.bramble.BrambleCoreModule; ...@@ -5,7 +5,6 @@ import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.account.BriarAccountModule; import org.briarproject.bramble.account.BriarAccountModule;
import org.briarproject.briar.BriarCoreModule; import org.briarproject.briar.BriarCoreModule;
import org.briarproject.briar.android.contact.ConversationActivityScreenshotTest; import org.briarproject.briar.android.contact.ConversationActivityScreenshotTest;
import org.briarproject.briar.android.login.SetupActivityScreenshotTest;
import org.briarproject.briar.android.settings.SettingsActivityScreenshotTest; import org.briarproject.briar.android.settings.SettingsActivityScreenshotTest;
import javax.inject.Singleton; import javax.inject.Singleton;
...@@ -22,8 +21,9 @@ import dagger.Component; ...@@ -22,8 +21,9 @@ import dagger.Component;
}) })
public interface BriarUiTestComponent extends AndroidComponent { public interface BriarUiTestComponent extends AndroidComponent {
void inject(SetupDataTest test);
void inject(ConversationActivityScreenshotTest test); void inject(ConversationActivityScreenshotTest test);
void inject(SetupActivityScreenshotTest test);
void inject(SettingsActivityScreenshotTest test); void inject(SettingsActivityScreenshotTest test);
} }
package org.briarproject.briar.android; package org.briarproject.briar.android;
import android.app.Activity;
import android.util.Log; import android.util.Log;
import org.briarproject.bramble.api.plugin.ConnectionRegistry; import org.briarproject.bramble.api.plugin.ConnectionRegistry;
...@@ -9,12 +10,10 @@ import org.junit.ClassRule; ...@@ -9,12 +10,10 @@ import org.junit.ClassRule;
import javax.inject.Inject; import javax.inject.Inject;
import tools.fastlane.screengrab.FalconScreenshotStrategy;
import tools.fastlane.screengrab.Screengrab; import tools.fastlane.screengrab.Screengrab;
import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy;
import tools.fastlane.screengrab.locale.LocaleTestRule; import tools.fastlane.screengrab.locale.LocaleTestRule;
import static tools.fastlane.screengrab.Screengrab.setDefaultScreenshotStrategy;
public abstract class ScreenshotTest extends UiTest { public abstract class ScreenshotTest extends UiTest {
@ClassRule @ClassRule
...@@ -27,14 +26,9 @@ public abstract class ScreenshotTest extends UiTest { ...@@ -27,14 +26,9 @@ public abstract class ScreenshotTest extends UiTest {
@Inject @Inject
protected Clock clock; protected Clock clock;
public ScreenshotTest() { protected void screenshot(String name, Activity activity) {
super();
setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy());
}
protected void screenshot(String name) {
try { try {
Screengrab.screenshot(name); Screengrab.screenshot(name, new FalconScreenshotStrategy(activity));
} catch (RuntimeException e) { } catch (RuntimeException e) {
if (!e.getMessage().equals("Unable to capture screenshot.")) if (!e.getMessage().equals("Unable to capture screenshot."))
throw e; throw e;
......
package org.briarproject.briar.android.login; package org.briarproject.briar.android;
import android.support.test.espresso.intent.rule.IntentsTestRule; import android.support.test.espresso.intent.rule.IntentsTestRule;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
...@@ -6,9 +6,12 @@ import android.support.test.uiautomator.UiDevice; ...@@ -6,9 +6,12 @@ import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject; import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiSelector; import android.support.test.uiautomator.UiSelector;
import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.contact.Contact;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.BriarUiTestComponent; import org.briarproject.briar.android.login.OpenDatabaseActivity;
import org.briarproject.briar.android.ScreenshotTest; import org.briarproject.briar.android.login.SetupActivity;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -26,14 +29,14 @@ import static android.support.test.espresso.matcher.ViewMatchers.isRoot; ...@@ -26,14 +29,14 @@ 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.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static android.support.test.runner.lifecycle.Stage.PAUSED; import static android.support.test.runner.lifecycle.Stage.PAUSED;
import static junit.framework.Assert.assertTrue; import static org.briarproject.bramble.api.plugin.LanTcpConstants.ID;
import static org.briarproject.briar.android.ViewActions.waitForActivity; import static org.briarproject.briar.android.ViewActions.waitForActivity;
import static org.briarproject.briar.android.ViewActions.waitUntilMatches; import static org.briarproject.briar.android.ViewActions.waitUntilMatches;
import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting; import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting;
import static org.junit.Assert.assertTrue;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class SetupActivityScreenshotTest extends ScreenshotTest { public class SetupDataTest extends ScreenshotTest {
@Rule @Rule
public IntentsTestRule<SetupActivity> testRule = public IntentsTestRule<SetupActivity> testRule =
...@@ -61,7 +64,7 @@ public class SetupActivityScreenshotTest extends ScreenshotTest { ...@@ -61,7 +64,7 @@ public class SetupActivityScreenshotTest extends ScreenshotTest {
onView(withId(R.id.nickname_entry)) onView(withId(R.id.nickname_entry))
.perform(waitUntilMatches(withText(USERNAME))); .perform(waitUntilMatches(withText(USERNAME)));
screenshot("manual_create_account"); screenshot("manual_create_account", testRule.getActivity());
onView(withId(R.id.next)) onView(withId(R.id.next))
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
...@@ -94,13 +97,54 @@ public class SetupActivityScreenshotTest extends ScreenshotTest { ...@@ -94,13 +97,54 @@ public class SetupActivityScreenshotTest extends ScreenshotTest {
} }
// wait for OpenDatabaseActivity to show up // wait for OpenDatabaseActivity to show up
onView(withId(R.id.progress))
.check(matches(isDisplayed()));
onView(isRoot()) onView(isRoot())
.perform(waitForActivity(testRule.getActivity(), PAUSED)); .perform(waitForActivity(testRule.getActivity(), PAUSED));
intended(hasComponent(OpenDatabaseActivity.class.getName())); intended(hasComponent(OpenDatabaseActivity.class.getName()));
assertTrue(accountManager.hasDatabaseKey()); assertTrue(accountManager.hasDatabaseKey());
lifecycleManager.waitForStartup();
createTestData();
// close expiry warning
onView(withId(R.id.expiryWarning))
.perform(waitUntilMatches(isDisplayed()));
onView(withId(R.id.expiryWarningClose))
.check(matches(isDisplayed()));
onView(withId(R.id.expiryWarningClose))
.perform(click());
}
private void createTestData() {
try {
createTestDataExceptions();
} catch (DbException | FormatException e) {
throw new AssertionError(e);
}
}
private void createTestDataExceptions()
throws DbException, FormatException {
String bobName =
getTargetContext().getString(R.string.screenshot_bob);
Contact bob = testDataCreator.addContact(bobName);
String bobHi = getTargetContext()
.getString(R.string.screenshot_message_1);
long bobTime = getMinutesAgo(2);
testDataCreator.addPrivateMessage(bob, bobHi, bobTime, true);
String aliceHi = getTargetContext()
.getString(R.string.screenshot_message_2);
long aliceTime = getMinutesAgo(1);
testDataCreator.addPrivateMessage(bob, aliceHi, aliceTime, false);
String bobHi2 = getTargetContext()
.getString(R.string.screenshot_message_3);
long bobTime2 = getMinutesAgo(0);
testDataCreator.addPrivateMessage(bob, bobHi2, bobTime2, true);
connectionRegistry.registerConnection(bob.getId(), ID, true);
} }
} }
...@@ -2,11 +2,9 @@ package org.briarproject.briar.android.contact; ...@@ -2,11 +2,9 @@ package org.briarproject.briar.android.contact;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.contact.Contact;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.BriarUiTestComponent; import org.briarproject.briar.android.BriarUiTestComponent;
import org.briarproject.briar.android.ScreenshotTest; import org.briarproject.briar.android.ScreenshotTest;
...@@ -15,23 +13,20 @@ import org.junit.Test; ...@@ -15,23 +13,20 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import static android.support.test.InstrumentationRegistry.getInstrumentation; 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.Espresso.onView;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.briarproject.bramble.api.plugin.LanTcpConstants.ID;
import static org.briarproject.briar.android.contact.ConversationActivity.CONTACT_ID;
import static org.briarproject.briar.android.ViewActions.waitUntilMatches; import static org.briarproject.briar.android.ViewActions.waitUntilMatches;
import static org.briarproject.briar.android.contact.ConversationActivity.CONTACT_ID;
import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.allOf;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class ConversationActivityScreenshotTest extends ScreenshotTest { public class ConversationActivityScreenshotTest extends ScreenshotTest {
@Rule @Rule
public CleanAccountTestRule<ConversationActivity> testRule = public ActivityTestRule<ConversationActivity> testRule =
new CleanAccountTestRule<>(ConversationActivity.class, new ActivityTestRule<>(ConversationActivity.class, false, false);
this::createTestData);
@Override @Override
protected void inject(BriarUiTestComponent component) { protected void inject(BriarUiTestComponent component) {
...@@ -39,48 +34,19 @@ public class ConversationActivityScreenshotTest extends ScreenshotTest { ...@@ -39,48 +34,19 @@ public class ConversationActivityScreenshotTest extends ScreenshotTest {
} }
@Test @Test
public void messaging() { public void messaging() throws Exception {
Context targetContext = getInstrumentation().getTargetContext(); Context targetContext = getInstrumentation().getTargetContext();
Intent intent = new Intent(targetContext, ConversationActivity.class); Intent intent = new Intent(targetContext, ConversationActivity.class);
intent.putExtra(CONTACT_ID, 1); intent.putExtra(CONTACT_ID, 1);
testRule.launchActivity(intent); testRule.launchActivity(intent);
onView(withId(R.id.conversationView)).perform(waitUntilMatches( onView(withId(R.id.conversationView))
allOf(withText(R.string.screenshot_message_3), isDisplayed()))); .perform(waitUntilMatches(allOf(
withText(R.string.screenshot_message_3),
screenshot("manual_messaging"); isCompletelyDisplayed())
} ));
private void createTestData() {
try {
createTestDataExceptions();
} catch (DbException | FormatException e) {
throw new AssertionError(e);
}
}
private void createTestDataExceptions()
throws DbException, FormatException {
String bobName =
getTargetContext().getString(R.string.screenshot_bob);
Contact bob = testDataCreator.addContact(bobName);
String bobHi = getTargetContext()
.getString(R.string.screenshot_message_1);
long bobTime = getMinutesAgo(2);
testDataCreator.addPrivateMessage(bob, bobHi, bobTime, true);
String aliceHi = getTargetContext()
.getString(R.string.screenshot_message_2);
long aliceTime = getMinutesAgo(1);
testDataCreator.addPrivateMessage(bob, aliceHi, aliceTime, false);
String bobHi2 = getTargetContext()
.getString(R.string.screenshot_message_3);
long bobTime2 = getMinutesAgo(0);
testDataCreator.addPrivateMessage(bob, bobHi2, bobTime2, true);
connectionRegistry.registerConnection(bob.getId(), ID, true); screenshot("manual_messaging", testRule.getActivity());
} }
} }
...@@ -2,14 +2,15 @@ package org.briarproject.briar.android.settings; ...@@ -2,14 +2,15 @@ package org.briarproject.briar.android.settings;
import android.content.Intent; import android.content.Intent;
import android.support.test.espresso.contrib.DrawerActions; import android.support.test.espresso.contrib.DrawerActions;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.Gravity; import android.view.Gravity;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.BriarUiTestComponent; import org.briarproject.briar.android.BriarUiTestComponent;
import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
import org.briarproject.briar.android.ScreenshotTest; import org.briarproject.briar.android.ScreenshotTest;
import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -33,8 +34,8 @@ import static org.hamcrest.CoreMatchers.is; ...@@ -33,8 +34,8 @@ import static org.hamcrest.CoreMatchers.is;
public class SettingsActivityScreenshotTest extends ScreenshotTest { public class SettingsActivityScreenshotTest extends ScreenshotTest {
@Rule @Rule
public CleanAccountTestRule<SettingsActivity> testRule = public ActivityTestRule<SettingsActivity> testRule =
new CleanAccountTestRule<>(SettingsActivity.class); new ActivityTestRule<>(SettingsActivity.class);
@Override @Override
protected void inject(BriarUiTestComponent component) { protected void inject(BriarUiTestComponent component) {
...@@ -46,7 +47,7 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest { ...@@ -46,7 +47,7 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest {
onView(withText(R.string.settings_button)) onView(withText(R.string.settings_button))
.check(matches(isDisplayed())); .check(matches(isDisplayed()));
screenshot("manual_dark_theme_settings"); screenshot("manual_dark_theme_settings", testRule.getActivity());
// switch to dark theme // switch to dark theme
onView(withText(R.string.pref_theme_title)) onView(withText(R.string.pref_theme_title))
...@@ -56,10 +57,20 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest { ...@@ -56,10 +57,20 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest {
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
.perform(click()); .perform(click());
// open nav drawer and remove expiry warning openNavDrawer();
openNavDrawer(true);
screenshot("manual_dark_theme_nav_drawer", testRule.getActivity());
screenshot("manual_dark_theme_nav_drawer"); // switch to back to light theme
onView(withText(R.string.settings_button))
.check(matches(isDisplayed()))
.perform(click());
onView(withText(R.string.pref_theme_title))
.check(matches(isDisplayed()))
.perform(click());
onView(withText(R.string.pref_theme_light))
.check(matches(isDisplayed()))
.perform(click());
} }
@Test @Test
...@@ -83,12 +94,11 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest { ...@@ -83,12 +94,11 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest {
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
.check(matches(isEnabled())); .check(matches(isEnabled()));
screenshot("manual_app_lock"); screenshot("manual_app_lock", testRule.getActivity());
// no more expiry warning to remove, because sharedprefs cached? openNavDrawer();
openNavDrawer(false);
screenshot("manual_app_lock_nav_drawer"); screenshot("manual_app_lock_nav_drawer", testRule.getActivity());
} }
@Test @Test
...@@ -104,23 +114,15 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest { ...@@ -104,23 +114,15 @@ public class SettingsActivityScreenshotTest extends ScreenshotTest {
.check(matches(isDisplayed())) .check(matches(isDisplayed()))
.perform(waitUntilMatches(isEnabled())); .perform(waitUntilMatches(isEnabled()));
screenshot("manual_tor_settings"); screenshot("manual_tor_settings", testRule.getActivity());
} }
private void openNavDrawer(boolean expiry) { private void openNavDrawer() {
// start main activity // start main activity
Intent i = Intent i =
new Intent(testRule.getActivity(), NavDrawerActivity.class); new Intent(testRule.getActivity(), NavDrawerActivity.class);
testRule.getActivity().startActivity(i); testRule.getActivity().startActivity(i);
// close expiry warning
if (expiry) {
onView(withId(R.id.expiryWarningClose))
.check(matches(isDisplayed()));
onView(withId(R.id.expiryWarningClose))
.perform(click());
}
// open navigation drawer // open navigation drawer
onView(withId(R.id.drawer_layout)) onView(withId(R.id.drawer_layout))
.check(matches(isClosed(Gravity.START))) .check(matches(isClosed(Gravity.START)))
......
...@@ -82,6 +82,7 @@ dependencyVerification { ...@@ -82,6 +82,7 @@ dependencyVerification {
'com.google.zxing:core:3.3.0:core-3.3.0.jar:bba7724e02a997cec38213af77133ee8e24b0d5cf5fa7ecbc16a4fa93f11ee0d', 'com.google.zxing:core:3.3.0:core-3.3.0.jar:bba7724e02a997cec38213af77133ee8e24b0d5cf5fa7ecbc16a4fa93f11ee0d',
'com.googlecode.json-simple:json-simple:1.1:json-simple-1.1.jar:2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439', 'com.googlecode.json-simple:json-simple:1.1:json-simple-1.1.jar:2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439',
'com.ibm.icu:icu4j:53.1:icu4j-53.1.jar:e37a4467bac5cdeb02c5c4b8e5063d2f4e67b69e3c7df6d6b610f13185572bab', 'com.ibm.icu:icu4j:53.1:icu4j-53.1.jar:e37a4467bac5cdeb02c5c4b8e5063d2f4e67b69e3c7df6d6b610f13185572bab',
'com.jraska:falcon:1.0.4:falcon-1.0.4.aar:6114a48d8b3814f75fc69b5e84dc087c1254883874eae8a36bd778979800630a',
'com.squareup:javawriter:2.1.1:javawriter-2.1.1.jar:f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e', 'com.squareup:javawriter:2.1.1:javawriter-2.1.1.jar:f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e',
'com.squareup:javawriter:2.5.0:javawriter-2.5.0.jar:fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0', 'com.squareup:javawriter:2.5.0:javawriter-2.5.0.jar:fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0',
'com.sun.activation:javax.activation:1.2.0:javax.activation-1.2.0.jar:993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce', 'com.sun.activation:javax.activation:1.2.0:javax.activation-1.2.0.jar:993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce',
...@@ -171,7 +172,7 @@ dependencyVerification { ...@@ -171,7 +172,7 @@ dependencyVerification {
'org.robolectric:shadows-framework:3.8:shadows-framework-3.8.jar:83548db7249edf1af87e1a1f4d8f4eec3e85d6220161da601e6f6398476911b2', 'org.robolectric:shadows-framework:3.8:shadows-framework-3.8.jar:83548db7249edf1af87e1a1f4d8f4eec3e85d6220161da601e6f6398476911b2',
'org.robolectric:shadows-support-v4:3.3.2:shadows-support-v4-3.3.2.jar:6f689264738266e70fe08db7c04b7b5a75155994f4e3f7f311960d90486bf005', 'org.robolectric:shadows-support-v4:3.3.2:shadows-support-v4-3.3.2.jar:6f689264738266e70fe08db7c04b7b5a75155994f4e3f7f311960d90486bf005',
'org.robolectric:utils:3.8:utils-3.8.jar:e945d04d40e37554e02d4be1bc3abf9bede45375c843aa36d10ccb6b63edbf34', 'org.robolectric:utils:3.8:utils-3.8.jar:e945d04d40e37554e02d4be1bc3abf9bede45375c843aa36d10ccb6b63edbf34',
'tools.fastlane:screengrab:1.1.0:screengrab-1.1.0.aar:03ce3868ee8a0082d14e7a1de0999f91531c0cc794392688beb08ee9bc4495fd', 'tools.fastlane:screengrab:1.2.0:screengrab-1.2.0.aar:af4ee23bb06f94404d3ab18e2ea69db8265539fc8da29f9ee45b7e472684ba83',
'uk.co.samuelwall:material-tap-target-prompt:2.8.0:material-tap-target-prompt-2.8.0.aar:ac70770c05bbc4675a1d5712c0e53d46ee4fa961b74947589fce50d8003065ec', 'uk.co.samuelwall:material-tap-target-prompt:2.8.0:material-tap-target-prompt-2.8.0.aar:ac70770c05bbc4675a1d5712c0e53d46ee4fa961b74947589fce50d8003065ec',
'xmlpull:xmlpull:1.1.3.1:xmlpull-1.1.3.1.jar:34e08ee62116071cbb69c0ed70d15a7a5b208d62798c59f2120bb8929324cb63', 'xmlpull:xmlpull:1.1.3.1:xmlpull-1.1.3.1.jar:34e08ee62116071cbb69c0ed70d15a7a5b208d62798c59f2120bb8929324cb63',
'xpp3:xpp3_min:1.1.4c:xpp3_min-1.1.4c.jar:bfc90e9e32d0eab1f397fb974b5f150a815188382ac41f372a7149d5bc178008', 'xpp3:xpp3_min:1.1.4c:xpp3_min-1.1.4c.jar:bfc90e9e32d0eab1f397fb974b5f150a815188382ac41f372a7149d5bc178008',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment