Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Srs screenshot tests (EXPOSUREAPP-14546) #5801

Merged
merged 7 commits into from
Jan 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package de.rki.coronawarnapp.srs.ui.checkins

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.SavedStateHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.presencetracing.checkins.CheckIn
import de.rki.coronawarnapp.srs.core.model.SrsSubmissionType
import de.rki.coronawarnapp.ui.presencetracing.attendee.checkins.consent.SelectableCheckInVH.Item
import de.rki.coronawarnapp.util.ui.SingleLiveEvent
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.mockk
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import testhelpers.BaseUITest
import testhelpers.Screenshot
import testhelpers.launchFragmentInContainer2
import testhelpers.takeScreenshot
import java.time.Instant

@RunWith(AndroidJUnit4::class)
class SrsCheckinsFragmentTest : BaseUITest() {

@MockK lateinit var viewModel: SrsCheckinsFragmentViewModel

private val fragmentArgs = SrsCheckinsFragmentArgs(submissionType = SrsSubmissionType.SRS_OTHER).toBundle()

@Before
fun setup() {
MockKAnnotations.init(this, relaxed = true)

viewModel.apply {
every { events } returns SingleLiveEvent()
every { checkIns } returns MutableLiveData(
listOf(
Item(
mockCheckIn(
checkInId = 1,
checkInDescription = "Frisör",
checkInAddress = "Berlin"
)
) {},
Item(
mockCheckIn(
checkInId = 2,
checkInDescription = "Restaurant",
checkInAddress = "Berlin"
)
) {}
)
)
}

setupMockViewModel(
object : SrsCheckinsFragmentViewModel.Factory {
override fun create(
savedState: SavedStateHandle,
submissionType: SrsSubmissionType
): SrsCheckinsFragmentViewModel = viewModel
}
)
}

@After
fun teardown() {
clearAllViewModels()
}

@Test
@Screenshot
fun capture_fragment() {
launchFragmentInContainer2<SrsCheckinsFragment>(
fragmentArgs = fragmentArgs
)
takeScreenshot<SrsCheckinsFragment>()
}

private fun mockCheckIn(
checkInId: Long,
checkInDescription: String,
checkInAddress: String
) = mockk<CheckIn>().apply {
every { id } returns checkInId
every { description } returns checkInDescription
every { address } returns checkInAddress
every { hasSubmissionConsent } returns true
every { checkInStart } returns Instant.ofEpochSecond(1624291200L)
every { checkInEnd } returns Instant.ofEpochSecond(1624302000L)
}
}

@Module
abstract class SrsCheckinsFragmentTestModule {
@ContributesAndroidInjector
abstract fun srsCheckinsScreen(): SrsCheckinsFragment
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import androidx.lifecycle.ViewModelStore
import androidx.navigation.testing.TestNavHostController
import androidx.test.core.app.ApplicationProvider
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.swipeUp
import androidx.test.espresso.action.ViewActions.scrollTo
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.internal.runner.junit4.statement.UiThreadStatement
Expand Down Expand Up @@ -77,8 +77,14 @@ class SrsSubmissionConsentFragmentTest : BaseUITest() {
)
takeScreenshot<SrsSubmissionConsentFragment>("1")

onView(withId(R.id.content_scrollcontainer)).perform(swipeUp())
onView(withId(R.id.first_bulletpoint)).perform(scrollTo())
takeScreenshot<SrsSubmissionConsentFragment>("2")

onView(withId(R.id.third_bulletpoint)).perform(scrollTo())
takeScreenshot<SrsSubmissionConsentFragment>("3")

onView(withId(R.id.srs_submission_consent_more_info)).perform(scrollTo())
takeScreenshot<SrsSubmissionConsentFragment>("4")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package de.rki.coronawarnapp.srs.ui.done

import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.scrollTo
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.R
import org.junit.Test
import org.junit.runner.RunWith
import testhelpers.BaseUITest
import testhelpers.Screenshot
import testhelpers.launchFragmentInContainer2
import testhelpers.takeScreenshot

@RunWith(AndroidJUnit4::class)
class SrsSubmissionDoneFragmentTest : BaseUITest() {

@Test
@Screenshot
fun capture_fragment() {
launchFragmentInContainer2<SrsSubmissionDoneFragment>()
takeScreenshot<SrsSubmissionDoneFragment>()

onView(withId(R.id.further_info_title)).perform(scrollTo())
takeScreenshot<SrsSubmissionDoneFragment>("1")
}
}

@Module
abstract class SrsSubmissionDoneFragmentTestModule {
@ContributesAndroidInjector
abstract fun srsSubmissionDoneScreen(): SrsSubmissionDoneFragment
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class SrsTypeSelectionFragmentTest : BaseUITest() {
viewModel.apply {
every { navigation } returns SingleLiveEvent()
every { types } returns MutableLiveData(
SrsSubmissionType.values().toList().map {
SrsSubmissionType.values().filterNot { it == SrsSubmissionType.SRS_SELF_TEST }.toList().map {
SrsTypeSelectionItem(submissionType = it)
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,16 @@ class HomeFragmentTest : BaseUITest() {
takeScreenshot<HomeFragment>("vaccination_none")
}

@Screenshot
@Test
fun captureSubmissionTestCard() {
launchInMainActivity<HomeFragment>(
testNavHostController = navController
)
onView(withId(R.id.recycler_view)).perform(recyclerScrollTo(2, additionalY = -900))
takeScreenshot<HomeFragment>("submission_test_card")
}

@After
fun teardown() {
clearAllViewModels()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,10 @@ class SubmissionDispatcherFragmentTest : BaseUITest() {
launchFragmentInContainer2<SubmissionDispatcherFragment>()
takeScreenshot<SubmissionDispatcherFragment>()

onView(withId(R.id.profile_card))
.perform(scrollTo())
onView(withId(R.id.submission_dispatcher_qr)).perform(scrollTo())
takeScreenshot<SubmissionDispatcherFragment>("1")

onView(withId(R.id.profile_card)).perform(scrollTo())
takeScreenshot<SubmissionDispatcherFragment>("2")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ import de.rki.coronawarnapp.profile.ui.list.ProfileListFragmentTestModule
import de.rki.coronawarnapp.profile.ui.onboarding.ProfileOnboardingFragmentTestModule
import de.rki.coronawarnapp.qrcode.ui.QrCodeScannerFragmentTestModule
import de.rki.coronawarnapp.reyclebin.ui.RecyclerBinOverviewFragmentTestModule
import de.rki.coronawarnapp.srs.ui.checkins.SrsCheckinsFragmentTestModule
import de.rki.coronawarnapp.srs.ui.consent.SrsSubmissionConsentFragmentTestModule
import de.rki.coronawarnapp.srs.ui.done.SrsSubmissionDoneFragmentTestModule
import de.rki.coronawarnapp.srs.ui.typeselection.SrsTypeSelectionFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryDayFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryEditLocationsFragmentTestModule
Expand Down Expand Up @@ -102,6 +104,8 @@ import kotlinx.coroutines.test.TestScope
SrsSubmissionConsentFragmentTestModule::class,
SrsTypeSelectionFragmentTestModule::class,
SubmissionDoneFragmentTestModule::class,
SrsCheckinsFragmentTestModule::class,
SrsSubmissionDoneFragmentTestModule::class,

// -------- Tracing --------
TracingDetailsFragmentTestTestModule::class,
Expand Down