package com.example.app import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.* import androidx.test.espresso.assertion.ViewAssertions.* import androidx.test.espresso.matcher.ViewMatchers.* import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @LargeTest class LoginFlowTest { @get:Rule val activityRule = ActivityScenarioRule(LoginActivity::class.java) @Before fun setUpAuth() { ServiceLocator.authRepository = FakeAuthRepository() } @After fun resetAuth() { ServiceLocator.resetForTests() } @Test fun validCredentialsOpenAccountScreen() { onView(withId(R.id.email_input)) .perform( replaceText("qa-login@example.com"), closeSoftKeyboard() ) onView(withId(R.id.password_input)) .perform( replaceText("correct-password"), closeSoftKeyboard() ) onView(withId(R.id.login_button)) .perform(click()) onView(withId(R.id.account_title)) .check(matches(withText("Account"))) } }