diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..aa8dbed36474a8b139559f3aaaf18029c27e38fb
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionConsentFragmentTest.kt
@@ -0,0 +1,67 @@
+package de.rki.coronawarnapp.ui.submission
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentFragment
+import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentViewModel
+import io.mockk.MockKAnnotations
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import kotlinx.coroutines.flow.flowOf
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+
+@RunWith(AndroidJUnit4::class)
+class SubmissionConsentFragmentTest : BaseUITest() {
+
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var interoperabilityRepository: InteroperabilityRepository
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private lateinit var viewModel: SubmissionConsentViewModel
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+        every { interoperabilityRepository.countryList } returns flowOf()
+        viewModel = SubmissionConsentViewModel(submissionRepository, interoperabilityRepository, TestDispatcherProvider)
+        setupMockViewModel(object : SubmissionConsentViewModel.Factory {
+            override fun create(): SubmissionConsentViewModel = viewModel
+        })
+    }
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_results() {
+        captureScreenshot<SubmissionConsentFragment>()
+    }
+}
+
+@Module
+abstract class SubmissionConsentFragmentTestModule {
+    @ContributesAndroidInjector
+    abstract fun submissionConsentScreen(): SubmissionConsentFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragmentTest.kt
index 5e262d08eb3ddcf76f2b7b40760a1ab8fa91dc08..7c5182bb74e9040eb7e2560a0a53d617276f35b6 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragmentTest.kt
@@ -12,23 +12,34 @@ import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.submission.fragment.SubmissionContactFragment
 import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionContactViewModel
 import io.mockk.MockKAnnotations
-import io.mockk.impl.annotations.MockK
 import org.junit.After
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
 
 @RunWith(AndroidJUnit4::class)
 class SubmissionContactFragmentTest : BaseUITest() {
 
-    @MockK lateinit var viewModel: SubmissionContactViewModel
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private fun createViewModel() = SubmissionContactViewModel()
 
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
         setupMockViewModel(object : SubmissionContactViewModel.Factory {
-            override fun create(): SubmissionContactViewModel = viewModel
+            override fun create(): SubmissionContactViewModel = createViewModel()
         })
     }
 
@@ -42,7 +53,8 @@ class SubmissionContactFragmentTest : BaseUITest() {
         launchFragment<SubmissionContactFragment>()
     }
 
-    @Test fun testContactCallClicked() {
+    @Test
+    fun testContactCallClicked() {
         val scenario = launchFragmentInContainer<SubmissionContactFragment>()
         onView(withId(R.id.submission_contact_button_call))
             .perform(click())
@@ -50,13 +62,20 @@ class SubmissionContactFragmentTest : BaseUITest() {
         // TODO verify result
     }
 
-    @Test fun testContactEnterTanClicked() {
+    @Test
+    fun testContactEnterTanClicked() {
         val scenario = launchFragmentInContainer<SubmissionContactFragment>()
         onView(withId(R.id.submission_contact_button_enter))
             .perform(click())
 
         // TODO verify result
     }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        captureScreenshot<SubmissionContactFragment>()
+    }
 }
 
 @Module
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragmentTest.kt
index fc417a990b5c53a98167039c839d67bbee6fcb07..6d9559b36e679e267af1ed08072986bd442e803a 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragmentTest.kt
@@ -13,23 +13,36 @@ import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.submission.fragment.SubmissionDispatcherFragment
 import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionDispatcherViewModel
 import io.mockk.MockKAnnotations
-import io.mockk.impl.annotations.MockK
 import org.junit.After
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
+import testhelpers.SCREENSHOT_DELAY_TIME
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.Screengrab
+import tools.fastlane.screengrab.locale.LocaleTestRule
 
 @RunWith(AndroidJUnit4::class)
 class SubmissionDispatcherFragmentTest : BaseUITest() {
 
-    @MockK lateinit var viewModel: SubmissionDispatcherViewModel
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private fun createViewModel() = SubmissionDispatcherViewModel()
 
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
         setupMockViewModel(object : SubmissionDispatcherViewModel.Factory {
-            override fun create(): SubmissionDispatcherViewModel = viewModel
+            override fun create(): SubmissionDispatcherViewModel = createViewModel()
         })
     }
 
@@ -43,7 +56,8 @@ class SubmissionDispatcherFragmentTest : BaseUITest() {
         launchFragment<SubmissionDispatcherFragment>()
     }
 
-    @Test fun testEventQRClicked() {
+    @Test
+    fun testEventQRClicked() {
         val scenario = launchFragmentInContainer<SubmissionDispatcherFragment>()
         onView(withId(R.id.submission_dispatcher_qr))
             .perform(scrollTo())
@@ -52,7 +66,8 @@ class SubmissionDispatcherFragmentTest : BaseUITest() {
         // TODO verify result
     }
 
-    @Test fun testEventTeleClicked() {
+    @Test
+    fun testEventTeleClicked() {
         val scenario = launchFragmentInContainer<SubmissionDispatcherFragment>()
         onView(withId(R.id.submission_dispatcher_tan_tele))
             .perform(scrollTo())
@@ -61,7 +76,8 @@ class SubmissionDispatcherFragmentTest : BaseUITest() {
         // TODO verify result
     }
 
-    @Test fun testEventTanClicked() {
+    @Test
+    fun testEventTanClicked() {
         val scenario = launchFragmentInContainer<SubmissionDispatcherFragment>()
         onView(withId(R.id.submission_dispatcher_tan_code))
             .perform(scrollTo())
@@ -69,6 +85,16 @@ class SubmissionDispatcherFragmentTest : BaseUITest() {
 
         // TODO verify result
     }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        captureScreenshot<SubmissionDispatcherFragment>()
+        onView(withId(R.id.submission_dispatcher_tan_tele))
+            .perform(scrollTo())
+        Thread.sleep(SCREENSHOT_DELAY_TIME)
+        Screengrab.screenshot(SubmissionDispatcherFragment::class.simpleName.plus("2"))
+    }
 }
 
 @Module
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a2ad56bdd115aaae9624bd742d6ab2b67ad67952
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomCalendarFragmentTest.kt
@@ -0,0 +1,95 @@
+package de.rki.coronawarnapp.ui.submission
+
+import androidx.lifecycle.MutableLiveData
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.action.ViewActions
+import androidx.test.espresso.matcher.ViewMatchers
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.submission.Symptoms
+import de.rki.coronawarnapp.submission.auto.AutoSubmission
+import de.rki.coronawarnapp.ui.submission.symptoms.calendar.SubmissionSymptomCalendarFragment
+import de.rki.coronawarnapp.ui.submission.symptoms.calendar.SubmissionSymptomCalendarFragmentArgs
+import de.rki.coronawarnapp.ui.submission.symptoms.calendar.SubmissionSymptomCalendarViewModel
+import io.mockk.MockKAnnotations
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.spyk
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.SCREENSHOT_DELAY_TIME
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.Screengrab
+import tools.fastlane.screengrab.locale.LocaleTestRule
+
+@RunWith(AndroidJUnit4::class)
+class SubmissionSymptomCalendarFragmentTest : BaseUITest() {
+
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var autoSubmission: AutoSubmission
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private lateinit var viewModel: SubmissionSymptomCalendarViewModel
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+        viewModel = spyk(
+            SubmissionSymptomCalendarViewModel(
+                Symptoms.Indication.POSITIVE,
+                TestDispatcherProvider,
+                submissionRepository,
+                autoSubmission
+            )
+        )
+        with(viewModel) {
+            every { symptomStart } returns MutableLiveData(Symptoms.StartOf.LastSevenDays)
+        }
+        setupMockViewModel(object : SubmissionSymptomCalendarViewModel.Factory {
+            override fun create(symptomIndication: Symptoms.Indication): SubmissionSymptomCalendarViewModel = viewModel
+        })
+    }
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        captureScreenshot<SubmissionSymptomCalendarFragment>(
+            fragmentArgs = SubmissionSymptomCalendarFragmentArgs(
+                Symptoms.Indication.POSITIVE
+            ).toBundle()
+        )
+
+        onView(ViewMatchers.withId(R.id.symptom_button_next))
+            .perform(ViewActions.scrollTo())
+
+        Thread.sleep(SCREENSHOT_DELAY_TIME)
+        Screengrab.screenshot(SubmissionSymptomCalendarFragment::class.simpleName.plus("2"))
+    }
+}
+
+@Module
+abstract class SubmissionSymptomCalendarFragmentTestModule {
+    @ContributesAndroidInjector
+    abstract fun submissionSymptomIntroScreen(): SubmissionSymptomCalendarFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomIntroFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomIntroFragmentTest.kt
index ed959a210f9b3b33f3821b245fc5b0af3900cf1f..4b8224920c6278fcfd1c878b9883e16bd7911a15 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomIntroFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionSymptomIntroFragmentTest.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.submission
 
 import androidx.fragment.app.testing.launchFragment
 import androidx.fragment.app.testing.launchFragmentInContainer
+import androidx.lifecycle.MutableLiveData
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.action.ViewActions.click
 import androidx.test.espresso.action.ViewActions.scrollTo
@@ -10,24 +11,52 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.submission.Symptoms
+import de.rki.coronawarnapp.submission.auto.AutoSubmission
 import de.rki.coronawarnapp.ui.submission.symptoms.introduction.SubmissionSymptomIntroductionFragment
 import de.rki.coronawarnapp.ui.submission.symptoms.introduction.SubmissionSymptomIntroductionViewModel
 import io.mockk.MockKAnnotations
+import io.mockk.every
 import io.mockk.impl.annotations.MockK
+import io.mockk.spyk
 import org.junit.After
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
+import testhelpers.SCREENSHOT_DELAY_TIME
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.Screengrab
+import tools.fastlane.screengrab.locale.LocaleTestRule
 
 @RunWith(AndroidJUnit4::class)
 class SubmissionSymptomIntroFragmentTest : BaseUITest() {
 
-    @MockK lateinit var viewModel: SubmissionSymptomIntroductionViewModel
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var autoSubmission: AutoSubmission
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private lateinit var viewModel: SubmissionSymptomIntroductionViewModel
 
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
+        viewModel =
+            spyk(SubmissionSymptomIntroductionViewModel(TestDispatcherProvider, submissionRepository, autoSubmission))
+        with(viewModel) {
+            every { symptomIndication } returns MutableLiveData(Symptoms.Indication.POSITIVE)
+        }
         setupMockViewModel(object : SubmissionSymptomIntroductionViewModel.Factory {
             override fun create(): SubmissionSymptomIntroductionViewModel = viewModel
         })
@@ -43,7 +72,8 @@ class SubmissionSymptomIntroFragmentTest : BaseUITest() {
         launchFragment<SubmissionSymptomIntroductionFragment>()
     }
 
-    @Test fun testSymptomNextClicked() {
+    @Test
+    fun testSymptomNextClicked() {
         val scenario = launchFragmentInContainer<SubmissionSymptomIntroductionFragment>()
         onView(withId(R.id.symptom_button_next))
             .perform(scrollTo())
@@ -51,6 +81,16 @@ class SubmissionSymptomIntroFragmentTest : BaseUITest() {
 
         // TODO verify result
     }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        captureScreenshot<SubmissionSymptomIntroductionFragment>()
+        onView(withId(R.id.symptom_button_next))
+            .perform(scrollTo())
+        Thread.sleep(SCREENSHOT_DELAY_TIME)
+        Screengrab.screenshot(SubmissionSymptomIntroductionFragment::class.simpleName.plus("2"))
+    }
 }
 
 @Module
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt
index b2dc3033d936ec5bcbb81754816dcbf80498e5c5..efe766a2ed753f65626bc3f29b44d0eec7fce3ac 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragmentTest.kt
@@ -5,33 +5,56 @@ import androidx.fragment.app.testing.launchFragmentInContainer
 import androidx.test.espresso.Espresso.onView
 import androidx.test.espresso.action.ViewActions
 import androidx.test.espresso.action.ViewActions.click
+import androidx.test.espresso.action.ViewActions.closeSoftKeyboard
 import androidx.test.espresso.action.ViewActions.scrollTo
+import androidx.test.espresso.action.ViewActions.typeText
 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 de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.tan.SubmissionTanFragment
 import de.rki.coronawarnapp.ui.submission.tan.SubmissionTanViewModel
 import io.mockk.MockKAnnotations
 import io.mockk.impl.annotations.MockK
 import org.junit.After
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
+import testhelpers.SCREENSHOT_DELAY_TIME
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.launchFragmentInContainer2
+import tools.fastlane.screengrab.Screengrab
+import tools.fastlane.screengrab.locale.LocaleTestRule
 
 @RunWith(AndroidJUnit4::class)
 class SubmissionTanFragmentTest : BaseUITest() {
 
-    @MockK lateinit var viewModel: SubmissionTanViewModel
+    @MockK lateinit var submissionRepository: SubmissionRepository
+
+    private fun createViewModel() = SubmissionTanViewModel(
+        dispatcherProvider = TestDispatcherProvider,
+        submissionRepository = submissionRepository
+    )
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
 
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
 
         setupMockViewModel(object : SubmissionTanViewModel.Factory {
-            override fun create(): SubmissionTanViewModel = viewModel
+            override fun create(): SubmissionTanViewModel = createViewModel()
         })
     }
 
@@ -45,7 +68,8 @@ class SubmissionTanFragmentTest : BaseUITest() {
         launchFragment<SubmissionTanFragment>()
     }
 
-    @Test fun testEventTanNextClicked() {
+    @Test
+    fun testEventTanNextClicked() {
         val scenario = launchFragmentInContainer<SubmissionTanFragment>()
         ViewActions.closeSoftKeyboard()
         onView(withId(R.id.submission_tan_button_enter))
@@ -54,6 +78,39 @@ class SubmissionTanFragmentTest : BaseUITest() {
 
         // TODO verify result
     }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_empty() {
+        launchFragmentInContainer2<SubmissionTanFragment>()
+        onView(withId(R.id.tan_input_edittext))
+            .perform(click())
+            .perform(closeSoftKeyboard())
+        Thread.sleep(SCREENSHOT_DELAY_TIME)
+        Screengrab.screenshot(SubmissionTanFragment::class.simpleName)
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_done() {
+        launchFragmentInContainer2<SubmissionTanFragment>()
+        onView(withId(R.id.tan_input_edittext))
+            .perform(click())
+            .perform(typeText("AC9UHD65AF"), closeSoftKeyboard())
+        Thread.sleep(SCREENSHOT_DELAY_TIME)
+        Screengrab.screenshot(SubmissionTanFragment::class.simpleName.plus("_done"))
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_invalid() {
+        launchFragmentInContainer2<SubmissionTanFragment>()
+        onView(withId(R.id.tan_input_edittext))
+            .perform(click())
+            .perform(typeText("AC9U0"), closeSoftKeyboard())
+        Thread.sleep(SCREENSHOT_DELAY_TIME)
+        Screengrab.screenshot(SubmissionTanFragment::class.simpleName.plus("_invalid"))
+    }
 }
 
 @Module
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b0370de7b7dba3d4e1d61130911b146fe23b5ee9
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultAvailableFragmentTest.kt
@@ -0,0 +1,89 @@
+package de.rki.coronawarnapp.ui.submission
+
+import androidx.lifecycle.MutableLiveData
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.submission.auto.AutoSubmission
+import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater_AssistedFactory
+import de.rki.coronawarnapp.ui.submission.resultavailable.SubmissionTestResultAvailableFragment
+import de.rki.coronawarnapp.ui.submission.resultavailable.SubmissionTestResultAvailableViewModel
+import io.mockk.MockKAnnotations
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.spyk
+import kotlinx.coroutines.flow.flowOf
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+
+@RunWith(AndroidJUnit4::class)
+class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
+
+    lateinit var viewModel: SubmissionTestResultAvailableViewModel
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var tekHistoryUpdaterFactory: TEKHistoryUpdater_AssistedFactory
+    @MockK lateinit var autoSubmission: AutoSubmission
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+
+        every { submissionRepository.deviceUIStateFlow } returns flowOf()
+        every { submissionRepository.testResultReceivedDateFlow } returns flowOf()
+
+        viewModel = spyk(
+            SubmissionTestResultAvailableViewModel(
+                TestDispatcherProvider,
+                tekHistoryUpdaterFactory,
+                submissionRepository,
+                autoSubmission
+            )
+        )
+
+        setupMockViewModel(object : SubmissionTestResultAvailableViewModel.Factory {
+            override fun create(): SubmissionTestResultAvailableViewModel = viewModel
+        })
+    }
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_with_consent() {
+        every { viewModel.consent } returns MutableLiveData(true)
+        captureScreenshot<SubmissionTestResultAvailableFragment>("_consent")
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_without_consent() {
+        every { viewModel.consent } returns MutableLiveData(false)
+        captureScreenshot<SubmissionTestResultAvailableFragment>("_no_consent")
+    }
+}
+
+@Module
+abstract class SubmissionTestResultTestAvailableModule {
+    @ContributesAndroidInjector
+    abstract fun submissionTestResultScreen(): SubmissionTestResultAvailableFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt
index ff0c7209479314d11f2a5d7cb1e32bc2141d635a..87c51b46a4bcef15ec7daa619bd1d9cc33ce825b 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultConsentGivenFragmentTest.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.submission
 
 import androidx.fragment.app.testing.launchFragment
 import androidx.fragment.app.testing.launchFragmentInContainer
+import androidx.lifecycle.MutableLiveData
 import androidx.navigation.NavController
 import androidx.navigation.Navigation
 import androidx.test.espresso.Espresso.onView
@@ -11,26 +12,58 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.submission.auto.AutoSubmission
+import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
 import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultConsentGivenFragment
 import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultConsentGivenViewModel
+import de.rki.coronawarnapp.util.DeviceUIState
+import de.rki.coronawarnapp.util.NetworkRequestWrapper
 import io.mockk.MockKAnnotations
+import io.mockk.every
 import io.mockk.impl.annotations.MockK
 import io.mockk.mockk
+import io.mockk.spyk
 import io.mockk.verify
 import org.junit.After
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+import java.util.Date
 
 @RunWith(AndroidJUnit4::class)
 class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
 
-    @MockK lateinit var viewModel: SubmissionTestResultConsentGivenViewModel
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var autoSubmission: AutoSubmission
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private lateinit var viewModel: SubmissionTestResultConsentGivenViewModel
 
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
+        viewModel =
+            spyk(
+                SubmissionTestResultConsentGivenViewModel(
+                    submissionRepository,
+                    autoSubmission,
+                    TestDispatcherProvider
+                )
+            )
         setupMockViewModel(object : SubmissionTestResultConsentGivenViewModel.Factory {
             override fun create(): SubmissionTestResultConsentGivenViewModel = viewModel
         })
@@ -61,6 +94,20 @@ class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
             mockNavController.navigate(R.id.action_submissionTestResultConsentGivenFragment_to_submissionSymptomIntroductionFragment)
         }
     }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        every { viewModel.uiState } returns MutableLiveData(
+            TestResultUIState(
+                NetworkRequestWrapper.RequestSuccessful(
+                    DeviceUIState.PAIRED_POSITIVE
+                ), Date()
+            )
+        )
+
+        captureScreenshot<SubmissionTestResultConsentGivenFragment>()
+    }
 }
 
 @Module
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt
index 7d7a1032e9ae0a51b8b5d7e7339fd71d04d3411e..fcffa178151600f2dd5505f24724b7386112d467 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragmentTest.kt
@@ -10,32 +10,68 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.notification.TestResultNotificationService
+import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
 import de.rki.coronawarnapp.ui.submission.testresult.pending.SubmissionTestResultPendingFragment
 import de.rki.coronawarnapp.ui.submission.testresult.pending.SubmissionTestResultPendingViewModel
+import de.rki.coronawarnapp.util.DeviceUIState
+import de.rki.coronawarnapp.util.NetworkRequestWrapper
 import io.mockk.MockKAnnotations
+import io.mockk.Runs
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
+import io.mockk.just
+import io.mockk.spyk
+import kotlinx.coroutines.flow.flowOf
 import org.junit.After
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+import java.util.Date
 
 @RunWith(AndroidJUnit4::class)
 class SubmissionTestResultFragmentTest : BaseUITest() {
 
-    @MockK lateinit var pendingViewModel: SubmissionTestResultPendingViewModel
-    @MockK lateinit var uiState: TestResultUIState
+    lateinit var viewModel: SubmissionTestResultPendingViewModel
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var testResultNotificationService: TestResultNotificationService
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
 
     @Before
     fun setup() {
         MockKAnnotations.init(this, relaxed = true)
 
-        every { pendingViewModel.testState } returns MutableLiveData()
+        every { submissionRepository.deviceUIStateFlow } returns flowOf()
+        every { submissionRepository.testResultReceivedDateFlow } returns flowOf()
+
+        viewModel = spyk(
+            SubmissionTestResultPendingViewModel(
+                TestDispatcherProvider,
+                testResultNotificationService,
+                submissionRepository
+            )
+        )
+
+        with(viewModel) {
+            every { observeTestResultToSchedulePositiveTestResultReminder() } just Runs
+        }
 
         setupMockViewModel(object : SubmissionTestResultPendingViewModel.Factory {
-            override fun create(): SubmissionTestResultPendingViewModel = pendingViewModel
+            override fun create(): SubmissionTestResultPendingViewModel = viewModel
         })
     }
 
@@ -88,6 +124,19 @@ class SubmissionTestResultFragmentTest : BaseUITest() {
 
         // TODO verify result
     }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        every { viewModel.testState } returns MutableLiveData(
+            TestResultUIState(
+                NetworkRequestWrapper.RequestSuccessful(
+                    DeviceUIState.PAIRED_NO_RESULT
+                ), Date()
+            )
+        )
+        captureScreenshot<SubmissionTestResultPendingFragment>()
+    }
 }
 
 @Module
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8cee4e05bf24ac19e6d5a25131d8a477802812e2
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNegativeFragmentTest.kt
@@ -0,0 +1,86 @@
+package de.rki.coronawarnapp.ui.submission
+
+import androidx.lifecycle.MutableLiveData
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
+import de.rki.coronawarnapp.ui.submission.testresult.negative.SubmissionTestResultNegativeFragment
+import de.rki.coronawarnapp.ui.submission.testresult.negative.SubmissionTestResultNegativeViewModel
+import de.rki.coronawarnapp.util.DeviceUIState
+import de.rki.coronawarnapp.util.NetworkRequestWrapper
+import io.mockk.MockKAnnotations
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.spyk
+import kotlinx.coroutines.flow.flowOf
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+import java.util.Date
+
+@RunWith(AndroidJUnit4::class)
+class SubmissionTestResultNegativeFragmentTest : BaseUITest() {
+
+    lateinit var viewModel: SubmissionTestResultNegativeViewModel
+    @MockK lateinit var submissionRepository: SubmissionRepository
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+
+        every { submissionRepository.deviceUIStateFlow } returns flowOf()
+        every { submissionRepository.testResultReceivedDateFlow } returns flowOf()
+
+        viewModel = spyk(
+            SubmissionTestResultNegativeViewModel(
+                TestDispatcherProvider,
+                submissionRepository
+            )
+        )
+
+        setupMockViewModel(object : SubmissionTestResultNegativeViewModel.Factory {
+            override fun create(): SubmissionTestResultNegativeViewModel = viewModel
+        })
+    }
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        every { viewModel.testResult } returns MutableLiveData(
+            TestResultUIState(
+                NetworkRequestWrapper.RequestSuccessful(
+                    DeviceUIState.PAIRED_NEGATIVE
+                ), Date()
+            )
+        )
+        captureScreenshot<SubmissionTestResultNegativeFragment>()
+    }
+}
+
+@Module
+abstract class SubmissionTestResultTestNegativeModule {
+    @ContributesAndroidInjector
+    abstract fun submissionTestResultScreen(): SubmissionTestResultNegativeFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7d975ac18a2e190e9882291c5479c0f9c809237d
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultNoConsentGivenFragmentTest.kt
@@ -0,0 +1,77 @@
+package de.rki.coronawarnapp.ui.submission
+
+import androidx.lifecycle.MutableLiveData
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
+import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultNoConsentFragment
+import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultNoConsentViewModel
+import de.rki.coronawarnapp.util.DeviceUIState
+import de.rki.coronawarnapp.util.NetworkRequestWrapper
+import io.mockk.MockKAnnotations
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import io.mockk.spyk
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+import java.util.Date
+
+@RunWith(AndroidJUnit4::class)
+class SubmissionTestResultNoConsentGivenFragmentTest : BaseUITest() {
+
+    @MockK lateinit var submissionRepository: SubmissionRepository
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private lateinit var viewModel: SubmissionTestResultNoConsentViewModel
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+        viewModel =
+            spyk(SubmissionTestResultNoConsentViewModel(submissionRepository))
+        setupMockViewModel(object : SubmissionTestResultNoConsentViewModel.Factory {
+            override fun create(): SubmissionTestResultNoConsentViewModel = viewModel
+        })
+    }
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment() {
+        every { viewModel.uiState } returns MutableLiveData(
+            TestResultUIState(
+                NetworkRequestWrapper.RequestSuccessful(
+                    DeviceUIState.PAIRED_POSITIVE
+                ), Date()
+            )
+        )
+
+        captureScreenshot<SubmissionTestResultNoConsentFragment>()
+    }
+}
+
+@Module
+abstract class SubmissionTestResultNoConsentModel {
+    @ContributesAndroidInjector
+    abstract fun submissionTestResultScreen(): SubmissionTestResultNoConsentFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..909eb1c5d30e9ee41d79d828e83d7d0a0ff8894a
--- /dev/null
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/submission/SubmissionYourConsentFragmentTest.kt
@@ -0,0 +1,71 @@
+package de.rki.coronawarnapp.ui.submission
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
+import de.rki.coronawarnapp.submission.SubmissionRepository
+import de.rki.coronawarnapp.ui.submission.yourconsent.SubmissionYourConsentFragment
+import de.rki.coronawarnapp.ui.submission.yourconsent.SubmissionYourConsentFragmentArgs
+import de.rki.coronawarnapp.ui.submission.yourconsent.SubmissionYourConsentViewModel
+import io.mockk.MockKAnnotations
+import io.mockk.every
+import io.mockk.impl.annotations.MockK
+import kotlinx.coroutines.flow.flowOf
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import testhelpers.BaseUITest
+import testhelpers.Screenshot
+import testhelpers.SystemUIDemoModeRule
+import testhelpers.TestDispatcherProvider
+import testhelpers.captureScreenshot
+import tools.fastlane.screengrab.locale.LocaleTestRule
+
+@RunWith(AndroidJUnit4::class)
+class SubmissionYourConsentFragmentTest : BaseUITest() {
+
+    @MockK lateinit var submissionRepository: SubmissionRepository
+    @MockK lateinit var interoperabilityRepository: InteroperabilityRepository
+
+    @Rule
+    @JvmField
+    val localeTestRule = LocaleTestRule()
+
+    @get:Rule
+    val systemUIDemoModeRule = SystemUIDemoModeRule()
+
+    private lateinit var viewModel: SubmissionYourConsentViewModel
+
+    @Before
+    fun setup() {
+        MockKAnnotations.init(this, relaxed = true)
+        every { submissionRepository.hasGivenConsentToSubmission } returns flowOf()
+        viewModel =
+            SubmissionYourConsentViewModel(TestDispatcherProvider, interoperabilityRepository, submissionRepository)
+        setupMockViewModel(object : SubmissionYourConsentViewModel.Factory {
+            override fun create(): SubmissionYourConsentViewModel = viewModel
+        })
+    }
+
+    @After
+    fun teardown() {
+        clearAllViewModels()
+    }
+
+    @Test
+    @Screenshot
+    fun capture_fragment_results() {
+        captureScreenshot<SubmissionYourConsentFragment>(
+            fragmentArgs = SubmissionYourConsentFragmentArgs(true).toBundle()
+        )
+    }
+}
+
+@Module
+abstract class SubmissionYourConsentFragmentTestModule {
+    @ContributesAndroidInjector
+    abstract fun submissionYourConsentScreen(): SubmissionYourConsentFragment
+}
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt
index 436786aa9d80bb70e3c18252fa482ad43eef88c7..ba8f5e736abc16dd8681efc2df4e29ed8d6b0a0d 100644
--- a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt
@@ -8,13 +8,19 @@ import de.rki.coronawarnapp.ui.onboarding.OnboardingNotificationsTestModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingPrivacyTestModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingTestFragmentModule
 import de.rki.coronawarnapp.ui.onboarding.OnboardingTracingFragmentTestModule
+import de.rki.coronawarnapp.ui.submission.SubmissionConsentFragmentTestModule
 import de.rki.coronawarnapp.ui.submission.SubmissionContactTestModule
 import de.rki.coronawarnapp.ui.submission.SubmissionDispatcherTestModule
 import de.rki.coronawarnapp.ui.submission.SubmissionQRScanFragmentModule
+import de.rki.coronawarnapp.ui.submission.SubmissionSymptomCalendarFragmentTestModule
 import de.rki.coronawarnapp.ui.submission.SubmissionSymptomIntroFragmentTestModule
 import de.rki.coronawarnapp.ui.submission.SubmissionTanTestModule
 import de.rki.coronawarnapp.ui.submission.SubmissionTestResultConsentGivenTestModule
+import de.rki.coronawarnapp.ui.submission.SubmissionTestResultNoConsentModel
+import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestAvailableModule
 import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule
+import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestNegativeModule
+import de.rki.coronawarnapp.ui.submission.SubmissionYourConsentFragmentTestModule
 import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule
 
 @Module(
@@ -31,10 +37,16 @@ import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule
         SubmissionDispatcherTestModule::class,
         SubmissionTanTestModule::class,
         SubmissionTestResultTestModule::class,
+        SubmissionTestResultTestNegativeModule::class,
+        SubmissionTestResultTestAvailableModule::class,
+        SubmissionTestResultNoConsentModel::class,
         SubmissionTestResultConsentGivenTestModule::class,
         SubmissionSymptomIntroFragmentTestModule::class,
         SubmissionContactTestModule::class,
         SubmissionQRScanFragmentModule::class,
+        SubmissionConsentFragmentTestModule::class,
+        SubmissionYourConsentFragmentTestModule::class,
+        SubmissionSymptomCalendarFragmentTestModule::class,
         // Tracing
         TracingDetailsFragmentTestTestModule::class
     ]
diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt
index 9dc088f42d7578a595ca7d0dcb95a33d2d9ef6bf..303faa4aade55d47c1e39c3b7b7359f0a23012d9 100644
--- a/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt
+++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt
@@ -6,6 +6,7 @@ import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentFactory
 import androidx.fragment.app.testing.FragmentScenario
 import de.rki.coronawarnapp.R
+import tools.fastlane.screengrab.Screengrab
 
 /** Delay time before taking screenshot
  */
@@ -26,3 +27,15 @@ inline fun <reified F : Fragment> launchFragmentInContainer2(
     @StyleRes themeResId: Int = R.style.AppTheme,
     factory: FragmentFactory? = null
 ) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, factory)
+
+inline fun <reified F : Fragment> captureScreenshot(
+    suffix: String = "",
+    fragmentArgs: Bundle? = null,
+    @StyleRes themeResId: Int = R.style.AppTheme,
+    factory: FragmentFactory? = null
+) {
+    val name = F::class.simpleName.plus(suffix)
+    launchFragmentInContainer2<F>(fragmentArgs, themeResId, factory)
+    Thread.sleep(SCREENSHOT_DELAY_TIME)
+    Screengrab.screenshot(name)
+}