package com.b44t.messenger.uitests.online; import android.text.TextUtils; import androidx.test.ext.junit.rules.ActivityScenarioRule; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest; import com.b44t.messenger.TestUtils; import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.WelcomeActivity; import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.replaceText; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isClickable; import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription; import static androidx.test.espresso.matcher.ViewMatchers.withHint; import static androidx.test.espresso.matcher.ViewMatchers.withText; @RunWith(AndroidJUnit4.class) @LargeTest public class OnboardingTest { @Rule public ActivityScenarioRule activityRule = TestUtils.getOnlineActivityRule(WelcomeActivity.class); @Test public void testAccountCreation() { if (TextUtils.isEmpty(BuildConfig.TEST_ADDR) || TextUtils.isEmpty(BuildConfig.TEST_MAIL_PW)) { throw new RuntimeException("You need to set TEST_ADDR and TEST_MAIL_PW; " + "either in gradle.properties or via an environment variable. " + "See README.md for more details."); } onView(withText(R.string.qrscan_title)).check(matches(isClickable())); onView(withText(R.string.import_backup_title)).check(matches(isClickable())); onView(withText(R.string.login_header)).perform(click()); onView(withHint(R.string.email_address)).perform(replaceText(BuildConfig.TEST_ADDR)); onView(withHint(R.string.existing_password)).perform(replaceText(BuildConfig.TEST_MAIL_PW)); onView(withContentDescription(R.string.ok)).perform(click()); TestUtils.waitForView(withText(R.string.app_name), 10000, 100); // TODO: Try to also perform other steps of the release checklist at // https://github.com/deltachat/deltachat-android/blob/master/docs/release-checklist.md#testing-checklist } @After public void cleanup() { TestUtils.cleanup(); } }