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
index 20941db024c95eaf479e2c8afa8b113bb6a49377..b8c94ec58d480c7ac817a2f9c8e8e6c43e4eba56 100644
--- 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
@@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.coronatest.type.CoronaTest
 import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector
 import de.rki.coronawarnapp.presencetracing.checkins.CheckInRepository
 import de.rki.coronawarnapp.submission.SubmissionRepository
@@ -11,6 +12,7 @@ import de.rki.coronawarnapp.submission.auto.AutoSubmission
 import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater_Factory_Impl
 import de.rki.coronawarnapp.ui.submission.resultavailable.SubmissionTestResultAvailableFragment
 import de.rki.coronawarnapp.ui.submission.resultavailable.SubmissionTestResultAvailableViewModel
+import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultConsentGivenFragmentArgs
 import de.rki.coronawarnapp.util.shortcuts.AppShortcutsHelper
 import io.mockk.MockKAnnotations
 import io.mockk.Runs
@@ -41,6 +43,9 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
     @MockK lateinit var appShortcutsHelper: AppShortcutsHelper
     @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
     @MockK lateinit var checkInRepository: CheckInRepository
+    @MockK lateinit var testType: CoronaTest.Type
+    private val resultAvailableFragmentArgs =
+        SubmissionTestResultConsentGivenFragmentArgs(testType = CoronaTest.Type.PCR).toBundle()
 
     @Rule
     @JvmField
@@ -63,13 +68,14 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
                 submissionRepository = submissionRepository,
                 autoSubmission = autoSubmission,
                 analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
-                checkInRepository = checkInRepository
+                checkInRepository = checkInRepository,
+                testType = testType
             )
         )
 
         setupMockViewModel(
             object : SubmissionTestResultAvailableViewModel.Factory {
-                override fun create(): SubmissionTestResultAvailableViewModel = viewModel
+                override fun create(testType: CoronaTest.Type): SubmissionTestResultAvailableViewModel = viewModel
             }
         )
     }
@@ -83,14 +89,20 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
     @Screenshot
     fun capture_fragment_with_consent() {
         every { viewModel.consent } returns MutableLiveData(true)
-        captureScreenshot<SubmissionTestResultAvailableFragment>("_consent")
+        captureScreenshot<SubmissionTestResultAvailableFragment>(
+            suffix = "_consent",
+            fragmentArgs = resultAvailableFragmentArgs
+        )
     }
 
     @Test
     @Screenshot
     fun capture_fragment_without_consent() {
         every { viewModel.consent } returns MutableLiveData(false)
-        captureScreenshot<SubmissionTestResultAvailableFragment>("_no_consent")
+        captureScreenshot<SubmissionTestResultAvailableFragment>(
+            suffix = "_no_consent",
+            fragmentArgs = resultAvailableFragmentArgs
+        )
     }
 }
 
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 97f06b6023be71680d732e9bc1dcb791831f1674..ee50cc5942512829c9b1d2b97dadc71e10bc6819 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
@@ -20,6 +20,7 @@ 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.SubmissionTestResultConsentGivenFragmentArgs
 import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultConsentGivenViewModel
 import io.mockk.MockKAnnotations
 import io.mockk.every
@@ -48,6 +49,9 @@ class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
     @MockK lateinit var autoSubmission: AutoSubmission
     @MockK lateinit var testResultAvailableNotificationService: PCRTestResultAvailableNotificationService
     @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
+    @MockK lateinit var testType: CoronaTest.Type
+    private val consentGivenFragmentArgs =
+        SubmissionTestResultConsentGivenFragmentArgs(testType = CoronaTest.Type.PCR).toBundle()
 
     @Rule
     @JvmField
@@ -74,12 +78,13 @@ class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
                     autoSubmission,
                     testResultAvailableNotificationService,
                     analyticsKeySubmissionCollector,
+                    testType,
                     TestDispatcherProvider()
                 )
             )
         setupMockViewModel(
             object : SubmissionTestResultConsentGivenViewModel.Factory {
-                override fun create(): SubmissionTestResultConsentGivenViewModel = viewModel
+                override fun create(testType: CoronaTest.Type): SubmissionTestResultConsentGivenViewModel = viewModel
             }
         )
     }
@@ -91,12 +96,12 @@ class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
 
     @Test
     fun launch_fragment() {
-        launchFragment2<SubmissionTestResultConsentGivenFragment>()
+        launchFragment2<SubmissionTestResultConsentGivenFragment>(consentGivenFragmentArgs)
     }
 
     @Test
     fun testEventConsentGivenContinueWithSymptomsClicked() {
-        launchFragmentInContainer2<SubmissionTestResultConsentGivenFragment>().onFragment { fragment ->
+        launchFragmentInContainer2<SubmissionTestResultConsentGivenFragment>(consentGivenFragmentArgs).onFragment { fragment ->
             Navigation.setViewNavController(fragment.requireView(), navController)
         }
         // Verify that performing a click prompts the correct Navigation action
@@ -111,11 +116,12 @@ class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
                 coronaTest = mockk<CoronaTest>().apply {
                     every { testResult } returns CoronaTestResult.PCR_POSITIVE
                     every { registeredAt } returns Instant.now()
+                    every { type } returns CoronaTest.Type.PCR
                 }
             )
         )
 
-        captureScreenshot<SubmissionTestResultConsentGivenFragment>()
+        captureScreenshot<SubmissionTestResultConsentGivenFragment>(fragmentArgs = consentGivenFragmentArgs)
     }
 }
 
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 849a4e22013f7d00d36f500edb61df251c3d62bb..98685d2bed6ca2f06dc41bb304fef2560a9aedef 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
@@ -73,6 +73,7 @@ class SubmissionTestResultFragmentTest : BaseUITest() {
                         every { testResult } returns CoronaTestResult.PCR_POSITIVE
                         every { registeredAt } returns Instant.now()
                         every { isProcessing } returns false
+                        every { type } returns CoronaTest.Type.PCR
                     }
                 )
             )
@@ -118,6 +119,7 @@ class SubmissionTestResultFragmentTest : BaseUITest() {
                     every { testResult } returns CoronaTestResult.PCR_OR_RAT_PENDING
                     every { registeredAt } returns Instant.now()
                     every { isProcessing } returns false
+                    every { type } returns CoronaTest.Type.PCR
                 }
             )
         )
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
index 53df826ee0150196d647da355c51c091e58f43bf..4086ecd6d3cfaa4e29942c3a22c6bce1013b78a4 100644
--- 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
@@ -11,6 +11,7 @@ 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.ui.submission.testresult.positive.SubmissionTestResultConsentGivenFragmentArgs
 import io.mockk.MockKAnnotations
 import io.mockk.every
 import io.mockk.impl.annotations.MockK
@@ -36,6 +37,9 @@ class SubmissionTestResultNegativeFragmentTest : BaseUITest() {
     lateinit var viewModel: SubmissionTestResultNegativeViewModel
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var testResultAvailableNotificationService: PCRTestResultAvailableNotificationService
+    @MockK lateinit var testType: CoronaTest.Type
+    private val resultNegativeFragmentArgs =
+        SubmissionTestResultConsentGivenFragmentArgs(testType = CoronaTest.Type.PCR).toBundle()
 
     @Rule
     @JvmField
@@ -54,13 +58,14 @@ class SubmissionTestResultNegativeFragmentTest : BaseUITest() {
             SubmissionTestResultNegativeViewModel(
                 TestDispatcherProvider(),
                 submissionRepository,
-                testResultAvailableNotificationService
+                testResultAvailableNotificationService,
+                testType
             )
         )
 
         setupMockViewModel(
             object : SubmissionTestResultNegativeViewModel.Factory {
-                override fun create(): SubmissionTestResultNegativeViewModel = viewModel
+                override fun create(testType: CoronaTest.Type): SubmissionTestResultNegativeViewModel = viewModel
             }
         )
     }
@@ -78,10 +83,11 @@ class SubmissionTestResultNegativeFragmentTest : BaseUITest() {
                 coronaTest = mockk<CoronaTest>().apply {
                     every { testResult } returns CoronaTestResult.PCR_NEGATIVE
                     every { registeredAt } returns Instant.now()
+                    every { type } returns CoronaTest.Type.PCR
                 }
             )
         )
-        captureScreenshot<SubmissionTestResultNegativeFragment>()
+        captureScreenshot<SubmissionTestResultNegativeFragment>(fragmentArgs = resultNegativeFragmentArgs)
     }
 }
 
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
index 3ec1a885ea9f0fef9e4443cda94977da3a276781..17de3dcefa6c55abad85cce5cbfedab66367dd3b 100644
--- 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
@@ -10,6 +10,7 @@ import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.Analyti
 import de.rki.coronawarnapp.notification.PCRTestResultAvailableNotificationService
 import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
+import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultConsentGivenFragmentArgs
 import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultNoConsentFragment
 import de.rki.coronawarnapp.ui.submission.testresult.positive.SubmissionTestResultNoConsentViewModel
 import io.mockk.MockKAnnotations
@@ -35,6 +36,9 @@ class SubmissionTestResultNoConsentGivenFragmentTest : BaseUITest() {
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var testResultAvailableNotificationService: PCRTestResultAvailableNotificationService
     @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
+    @MockK lateinit var testType: CoronaTest.Type
+    private val noConsentGivenFragmentArgs =
+        SubmissionTestResultConsentGivenFragmentArgs(testType = CoronaTest.Type.PCR).toBundle()
 
     @Rule
     @JvmField
@@ -53,12 +57,13 @@ class SubmissionTestResultNoConsentGivenFragmentTest : BaseUITest() {
                 SubmissionTestResultNoConsentViewModel(
                     submissionRepository,
                     testResultAvailableNotificationService,
-                    analyticsKeySubmissionCollector
+                    analyticsKeySubmissionCollector,
+                    testType
                 )
             )
         setupMockViewModel(
             object : SubmissionTestResultNoConsentViewModel.Factory {
-                override fun create(): SubmissionTestResultNoConsentViewModel = viewModel
+                override fun create(testType: CoronaTest.Type): SubmissionTestResultNoConsentViewModel = viewModel
             }
         )
     }
@@ -76,11 +81,12 @@ class SubmissionTestResultNoConsentGivenFragmentTest : BaseUITest() {
                 coronaTest = mockk<CoronaTest>().apply {
                     every { testResult } returns CoronaTestResult.PCR_POSITIVE
                     every { registeredAt } returns Instant.now()
+                    every { type } returns CoronaTest.Type.PCR
                 }
             )
         )
 
-        captureScreenshot<SubmissionTestResultNoConsentFragment>()
+        captureScreenshot<SubmissionTestResultNoConsentFragment>(fragmentArgs = noConsentGivenFragmentArgs)
     }
 }
 
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
index 0fd406215f89d46298b82483eec683e8142cdae7..cd871668764b4b70aa3a3876611b154901b47b84 100644
--- 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
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.ui.submission
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
+import de.rki.coronawarnapp.coronatest.type.CoronaTest
 import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
 import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.yourconsent.SubmissionYourConsentFragment
@@ -29,6 +30,7 @@ class SubmissionYourConsentFragmentTest : BaseUITest() {
 
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var interoperabilityRepository: InteroperabilityRepository
+    @MockK lateinit var testType: CoronaTest.Type
 
     @Rule
     @JvmField
@@ -44,10 +46,15 @@ class SubmissionYourConsentFragmentTest : BaseUITest() {
         MockKAnnotations.init(this, relaxed = true)
         every { submissionRepository.testForType(any()) } returns flowOf()
         viewModel =
-            SubmissionYourConsentViewModel(TestDispatcherProvider(), interoperabilityRepository, submissionRepository)
+            SubmissionYourConsentViewModel(
+                TestDispatcherProvider(),
+                interoperabilityRepository,
+                submissionRepository,
+                testType
+            )
         setupMockViewModel(
             object : SubmissionYourConsentViewModel.Factory {
-                override fun create(): SubmissionYourConsentViewModel = viewModel
+                override fun create(testType: CoronaTest.Type): SubmissionYourConsentViewModel = viewModel
             }
         )
     }
@@ -61,7 +68,7 @@ class SubmissionYourConsentFragmentTest : BaseUITest() {
     @Screenshot
     fun capture_fragment_results() {
         captureScreenshot<SubmissionYourConsentFragment>(
-            fragmentArgs = SubmissionYourConsentFragmentArgs(true).toBundle()
+            fragmentArgs = SubmissionYourConsentFragmentArgs(true, testType).toBundle()
         )
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
index ff35f3915795045b9d37d746d8a55c58e1f90ef8..8516f8c8664fbd597c33d532eb4efab04fd4ffb7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt
@@ -187,7 +187,7 @@ class HomeFragmentViewModel @AssistedInject constructor(
         }
         is SubmissionStatePCR.TestNegative -> PcrTestNegativeCard.Item(state) {
             routeToScreen.postValue(
-                HomeFragmentDirections.actionMainFragmentToSubmissionTestResultNegativeFragment()
+                HomeFragmentDirections.actionMainFragmentToSubmissionTestResultNegativeFragment(CoronaTest.Type.PCR)
             )
         }
         is SubmissionStatePCR.TestInvalid -> PcrTestInvalidCard.Item(state) {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt
index 33dfa460c14a79465c8fd39988dc15e0701b8d90..c11dbe490f54cff9590b1355064a5553f09787d2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.View
 import androidx.activity.OnBackPressedCallback
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.CheckInsConsentFragmentBinding
@@ -21,13 +22,16 @@ class CheckInsConsentFragment : Fragment(R.layout.check_ins_consent_fragment), A
 
     private val binding: CheckInsConsentFragmentBinding by viewBindingLazy()
 
+    private val navArgs by navArgs<CheckInsConsentFragmentArgs>()
+
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
     private val viewModel: CheckInsConsentViewModel by cwaViewModelsAssisted(
         factoryProducer = { viewModelFactory },
         constructorCall = { factory, savedState ->
             factory as CheckInsConsentViewModel.Factory
             factory.create(
-                savedState = savedState
+                savedState = savedState,
+                testType = navArgs.testType,
             )
         }
     )
@@ -69,7 +73,7 @@ class CheckInsConsentFragment : Fragment(R.layout.check_ins_consent_fragment), A
                 )
                 CheckInsConsentNavigation.ToSubmissionTestResultConsentGivenFragment -> doNavigate(
                     CheckInsConsentFragmentDirections
-                        .actionCheckInsConsentFragmentToSubmissionTestResultConsentGivenFragment()
+                        .actionCheckInsConsentFragmentToSubmissionTestResultConsentGivenFragment(navArgs.testType)
                 )
             }
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt
index 698969365ff832c50599f13f811632e2ca08142f..ee398a8155056d60b6dc033cf8fb1b988707a2ba 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt
@@ -27,14 +27,12 @@ class CheckInsConsentViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
     private val checkInRepository: CheckInRepository,
     private val submissionRepository: SubmissionRepository,
-    private val autoSubmission: AutoSubmission
+    private val autoSubmission: AutoSubmission,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel(dispatcherProvider) {
 
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
-
     private val selectedSetFlow = MutableStateFlow(initialSet())
-    private val coronaTest = submissionRepository.testForType(coronaTestType).filterNotNull()
+    private val coronaTest = submissionRepository.testForType(testType).filterNotNull()
 
     val checkIns: LiveData<List<CheckInsConsentItem>> = combine(
         checkInRepository.completedCheckIns,
@@ -162,6 +160,7 @@ class CheckInsConsentViewModel @AssistedInject constructor(
     interface Factory : CWAViewModelFactory<CheckInsConsentViewModel> {
         fun create(
             savedState: SavedStateHandle,
+            testType: CoronaTest.Type
         ): CheckInsConsentViewModel
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt
index e3707942a9329a3423d9f6ab207aa30e078977a0..38b737b09b30de54bf34e26500b4c128e51842fb 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt
@@ -98,7 +98,9 @@ class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_
                     SubmissionDeletionWarningViewModel.RegistrationType.TAN -> {
                         doNavigate(
                             SubmissionDeletionWarningFragmentDirections
-                                .actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment()
+                                .actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment(
+                                    viewModel.getTestType()
+                                )
                         )
                     }
                 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt
index b8759f19066dd5eb922cb2c03cc98fc3e509b4de..93053d7e0a31f9c8cc8faeaebe68e6e95cac31c3 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableFragment.kt
@@ -6,6 +6,7 @@ import android.view.View
 import android.view.accessibility.AccessibilityEvent
 import androidx.activity.OnBackPressedCallback
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultAvailableBinding
 import de.rki.coronawarnapp.tracing.ui.TracingConsentDialog
@@ -17,7 +18,7 @@ import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import timber.log.Timber
 import javax.inject.Inject
 
@@ -29,21 +30,30 @@ class SubmissionTestResultAvailableFragment : Fragment(R.layout.fragment_submiss
 
     @Inject lateinit var appShortcutsHelper: AppShortcutsHelper
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val vm: SubmissionTestResultAvailableViewModel by cwaViewModels { viewModelFactory }
     private val binding: FragmentSubmissionTestResultAvailableBinding by viewBindingLazy()
     private lateinit var keyRetrievalProgress: SubmissionBlockingDialog
 
+    private val navArgs by navArgs<SubmissionTestResultAvailableFragmentArgs>()
+
+    private val viewModel: SubmissionTestResultAvailableViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as SubmissionTestResultAvailableViewModel.Factory
+            factory.create(navArgs.testType)
+        }
+    )
+
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
         keyRetrievalProgress = SubmissionBlockingDialog(requireContext())
 
         val backCallback = object : OnBackPressedCallback(true) {
-            override fun handleOnBackPressed() = vm.goBack()
+            override fun handleOnBackPressed() = viewModel.goBack()
         }
         requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, backCallback)
 
-        vm.consent.observe2(this) {
+        viewModel.consent.observe2(this) {
             if (it) {
                 binding.submissionTestResultAvailableText.setText(
                     R.string.submission_test_result_available_text_consent_given
@@ -56,30 +66,30 @@ class SubmissionTestResultAvailableFragment : Fragment(R.layout.fragment_submiss
             binding.submissionTestResultAvailableConsentStatus.consent = it
         }
 
-        vm.showKeysRetrievalProgress.observe2(this) { show ->
+        viewModel.showKeysRetrievalProgress.observe2(this) { show ->
             Timber.i("SubmissionTestResult:showKeyRetrievalProgress:$show")
             keyRetrievalProgress.setState(show)
             binding.submissionTestResultAvailableProceedButton.isEnabled = !show
         }
 
         binding.apply {
-            submissionTestResultAvailableProceedButton.setOnClickListener { vm.proceed() }
-            submissionTestResultAvailableConsentStatus.setOnClickListener { vm.goConsent() }
-            submissionTestResultAvailableHeader.headerButtonBack.buttonIcon.setOnClickListener { vm.goBack() }
+            submissionTestResultAvailableProceedButton.setOnClickListener { viewModel.proceed() }
+            submissionTestResultAvailableConsentStatus.setOnClickListener { viewModel.goConsent() }
+            submissionTestResultAvailableHeader.headerButtonBack.buttonIcon.setOnClickListener { viewModel.goBack() }
         }
 
-        vm.showCloseDialog.observe2(this) {
+        viewModel.showCloseDialog.observe2(this) {
             showCloseDialog()
         }
 
-        vm.routeToScreen.observe2(this) {
+        viewModel.routeToScreen.observe2(this) {
             doNavigate(it)
         }
 
-        vm.showPermissionRequest.observe2(this) { permissionRequest ->
+        viewModel.showPermissionRequest.observe2(this) { permissionRequest ->
             permissionRequest.invoke(requireActivity())
         }
-        vm.showTracingConsentDialog.observe2(this) { onConsentResult ->
+        viewModel.showTracingConsentDialog.observe2(this) { onConsentResult ->
             TracingConsentDialog(requireContext()).show(
                 onConsentGiven = { onConsentResult(true) },
                 onConsentDeclined = { onConsentResult(false) }
@@ -102,12 +112,12 @@ class SubmissionTestResultAvailableFragment : Fragment(R.layout.fragment_submiss
             negativeButton = R.string.submission_test_result_available_close_dialog_cancel_button,
             cancelable = true,
             positiveButtonFunction = {},
-            negativeButtonFunction = { vm.onCancelConfirmed() }
+            negativeButtonFunction = { viewModel.onCancelConfirmed() }
         )
         DialogHelper.showDialog(closeDialogInstance)
     }
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        vm.handleActivityResult(requestCode, resultCode, data)
+        viewModel.handleActivityResult(requestCode, resultCode, data)
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt
index 069dbdbe54906de32218bb61202cd0d263a996ef..e5bc9c33455c323b41aba5ba967aae1050eb2a5d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/resultavailable/SubmissionTestResultAvailableViewModel.kt
@@ -5,6 +5,7 @@ import android.content.Intent
 import androidx.lifecycle.asLiveData
 import androidx.navigation.NavDirections
 import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -19,7 +20,7 @@ import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.flow.map
@@ -31,15 +32,12 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
     submissionRepository: SubmissionRepository,
     private val checkInRepository: CheckInRepository,
     private val autoSubmission: AutoSubmission,
-    private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
+    private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-
-    // TODO Use navargs to supply this?
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
-
     val routeToScreen = SingleLiveEvent<NavDirections>()
 
-    private val consentFlow = submissionRepository.testForType(type = coronaTestType)
+    private val consentFlow = submissionRepository.testForType(type = testType)
         .filterNotNull()
         .map { it.isAdvancedConsentGiven }
     val consent = consentFlow.asLiveData(dispatcherProvider.Default)
@@ -57,12 +55,12 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
                 val navDirections = if (completedCheckInsExist) {
                     Timber.tag(TAG).d("Navigate to CheckInsConsentFragment")
                     SubmissionTestResultAvailableFragmentDirections
-                        .actionSubmissionTestResultAvailableFragmentToCheckInsConsentFragment()
+                        .actionSubmissionTestResultAvailableFragmentToCheckInsConsentFragment(testType)
                 } else {
                     autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
                     Timber.tag(TAG).d("Navigate to SubmissionTestResultConsentGivenFragment")
                     SubmissionTestResultAvailableFragmentDirections
-                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultConsentGivenFragment()
+                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultConsentGivenFragment(testType)
                 }
                 routeToScreen.postValue(navDirections)
             }
@@ -72,7 +70,7 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
                 showKeysRetrievalProgress.postValue(false)
                 routeToScreen.postValue(
                     SubmissionTestResultAvailableFragmentDirections
-                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment()
+                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment(testType)
                 )
             }
 
@@ -118,6 +116,7 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
         routeToScreen.postValue(
             SubmissionTestResultAvailableFragmentDirections
                 .actionSubmissionTestResultAvailableFragmentToSubmissionYourConsentFragment(
+                    testType = testType,
                     isTestResultAvailable = true
                 )
         )
@@ -135,7 +134,7 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
                 showKeysRetrievalProgress.postValue(false)
                 routeToScreen.postValue(
                     SubmissionTestResultAvailableFragmentDirections
-                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment()
+                        .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment(testType)
                 )
             }
         }
@@ -147,7 +146,9 @@ class SubmissionTestResultAvailableViewModel @AssistedInject constructor(
     }
 
     @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<SubmissionTestResultAvailableViewModel>
+    interface Factory : CWAViewModelFactory<SubmissionTestResultAvailableViewModel> {
+        fun create(testType: CoronaTest.Type): SubmissionTestResultAvailableViewModel
+    }
 
     companion object {
         private const val TAG = "TestAvailableViewModel"
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt
index 8e7ec16ac0fa7dd84cff1afc0bfc7790c3a78117..083d67a6601505ff81f9c9a7c65b992b8cb8b0f1 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanFragment.kt
@@ -5,6 +5,7 @@ import android.view.View
 import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import de.rki.coronawarnapp.R
+import de.rki.coronawarnapp.coronatest.type.CoronaTest
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTanBinding
 import de.rki.coronawarnapp.exception.http.BadRequestException
 import de.rki.coronawarnapp.exception.http.CwaClientError
@@ -84,7 +85,9 @@ class SubmissionTanFragment : Fragment(R.layout.fragment_submission_tan), AutoIn
             if (ApiRequestState.SUCCESS == it) {
                 // TODO What about negative tests and consent?
                 doNavigate(
-                    SubmissionTanFragmentDirections.actionSubmissionTanFragmentToSubmissionTestResultNoConsentFragment()
+                    SubmissionTanFragmentDirections.actionSubmissionTanFragmentToSubmissionTestResultNoConsentFragment(
+                        CoronaTest.Type.PCR
+                    )
                 )
             }
         }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt
index 8ee096b5f6da43022e8b30083fbd8775f0c97924..260b40ed42ac2e2ac116bac144dba491046fd0c4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultInvalidBinding
 import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
@@ -15,13 +16,21 @@ import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.popBackStack
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import javax.inject.Inject
 
 class SubmissionTestResultInvalidFragment : Fragment(R.layout.fragment_submission_test_result_invalid), AutoInject {
 
+    private val navArgs by navArgs<SubmissionTestResultInvalidFragmentArgs>()
+
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val viewModel: SubmissionTestResultInvalidViewModel by cwaViewModels { viewModelFactory }
+    private val viewModel: SubmissionTestResultInvalidViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as SubmissionTestResultInvalidViewModel.Factory
+            factory.create(navArgs.testType)
+        }
+    )
 
     private val binding: FragmentSubmissionTestResultInvalidBinding by viewBindingLazy()
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidViewModel.kt
index d6e40ed1b55061fac0d811365af65631c574f058..163264bb67137733718622557b47349967f9ada0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/invalid/SubmissionTestResultInvalidViewModel.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.ui.submission.testresult.invalid
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.asLiveData
 import androidx.navigation.NavDirections
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -12,7 +13,7 @@ import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.map
 import timber.log.Timber
@@ -21,17 +22,16 @@ class SubmissionTestResultInvalidViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
     private val submissionRepository: SubmissionRepository,
     private val testResultAvailableNotificationService: PCRTestResultAvailableNotificationService,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
 
     init {
-        Timber.v("init() coronaTestType=%s", coronaTestType)
+        Timber.v("init() coronaTestType=%s", testType)
     }
 
     val routeToScreen = SingleLiveEvent<NavDirections?>()
 
-    val testResult: LiveData<TestResultUIState> = submissionRepository.testForType(type = coronaTestType)
+    val testResult: LiveData<TestResultUIState> = submissionRepository.testForType(type = testType)
         .filterNotNull()
         .map { test ->
             TestResultUIState(coronaTest = test)
@@ -40,16 +40,18 @@ class SubmissionTestResultInvalidViewModel @AssistedInject constructor(
     fun deregisterTestFromDevice() = launch {
         Timber.d("deregisterTestFromDevice()")
 
-        submissionRepository.removeTestFromDevice(type = coronaTestType)
+        submissionRepository.removeTestFromDevice(type = testType)
         routeToScreen.postValue(null)
     }
 
     fun onTestOpened() = launch {
         Timber.d("onTestOpened()")
-        submissionRepository.setViewedTestResult(type = coronaTestType)
+        submissionRepository.setViewedTestResult(type = testType)
         testResultAvailableNotificationService.cancelTestResultAvailableNotification()
     }
 
     @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<SubmissionTestResultInvalidViewModel>
+    interface Factory : CWAViewModelFactory<SubmissionTestResultInvalidViewModel> {
+        fun create(testType: CoronaTest.Type): SubmissionTestResultInvalidViewModel
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt
index 3372b725f72f8731e29955ac4a37d8e49b3af704..082c4a3b8bd6a1da185ffabdde0718ee0ef2e5e5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultNegativeBinding
 import de.rki.coronawarnapp.util.ContextExtensions.getColorCompat
@@ -15,13 +16,21 @@ import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.popBackStack
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import javax.inject.Inject
 
 class SubmissionTestResultNegativeFragment : Fragment(R.layout.fragment_submission_test_result_negative), AutoInject {
 
+    private val navArgs by navArgs<SubmissionTestResultNegativeFragmentArgs>()
+
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val viewModel: SubmissionTestResultNegativeViewModel by cwaViewModels { viewModelFactory }
+    private val viewModel: SubmissionTestResultNegativeViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as SubmissionTestResultNegativeViewModel.Factory
+            factory.create(navArgs.testType)
+        }
+    )
 
     private val binding: FragmentSubmissionTestResultNegativeBinding by viewBindingLazy()
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeViewModel.kt
index 8640c2bb8dd493c5648255ae79253800ac1ce543..d4b683833c8999b3cce67f313f797461414e7ef7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/negative/SubmissionTestResultNegativeViewModel.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.ui.submission.testresult.negative
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.asLiveData
 import androidx.navigation.NavDirections
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -12,7 +13,7 @@ import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.map
 import timber.log.Timber
@@ -20,17 +21,16 @@ import timber.log.Timber
 class SubmissionTestResultNegativeViewModel @AssistedInject constructor(
     dispatcherProvider: DispatcherProvider,
     private val submissionRepository: SubmissionRepository,
-    private val testResultAvailableNotificationService: PCRTestResultAvailableNotificationService
+    private val testResultAvailableNotificationService: PCRTestResultAvailableNotificationService,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
 
     init {
-        Timber.v("init() coronaTestType=%s", coronaTestType)
+        Timber.v("init() coronaTestType=%s", testType)
     }
 
     val routeToScreen = SingleLiveEvent<NavDirections?>()
-    val testResult: LiveData<TestResultUIState> = submissionRepository.testForType(type = coronaTestType)
+    val testResult: LiveData<TestResultUIState> = submissionRepository.testForType(type = testType)
         .filterNotNull()
         .map { test ->
             TestResultUIState(coronaTest = test)
@@ -38,19 +38,21 @@ class SubmissionTestResultNegativeViewModel @AssistedInject constructor(
 
     fun deregisterTestFromDevice() = launch {
         Timber.tag(TAG).d("deregisterTestFromDevice()")
-        submissionRepository.removeTestFromDevice(type = coronaTestType)
+        submissionRepository.removeTestFromDevice(type = testType)
 
         routeToScreen.postValue(null)
     }
 
     fun onTestOpened() = launch {
         Timber.tag(TAG).d("onTestOpened()")
-        submissionRepository.setViewedTestResult(type = coronaTestType)
+        submissionRepository.setViewedTestResult(type = testType)
         testResultAvailableNotificationService.cancelTestResultAvailableNotification()
     }
 
     @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<SubmissionTestResultNegativeViewModel>
+    interface Factory : CWAViewModelFactory<SubmissionTestResultNegativeViewModel> {
+        fun create(testType: CoronaTest.Type): SubmissionTestResultNegativeViewModel
+    }
 
     companion object {
         private const val TAG = "SubmissionTestResult:VM"
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt
index d04817c085031fc1f430c95619ae7f28b7d9ab57..d7300a8b70e8f2db57eb47152aaed28e85dec75c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/pending/SubmissionTestResultPendingViewModel.kt
@@ -61,34 +61,23 @@ class SubmissionTestResultPendingViewModel @AssistedInject constructor(
     val testState: LiveData<TestResultUIState> = testResultFlow
         .onEach { testResultUIState ->
             when (val deviceState = testResultUIState.coronaTest.testResult) {
-                CoronaTestResult.PCR_POSITIVE ->
+                CoronaTestResult.PCR_POSITIVE, CoronaTestResult.RAT_POSITIVE ->
                     SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultAvailableFragment(
-                            testType = CoronaTest.Type.PCR
-                        )
-                CoronaTestResult.RAT_POSITIVE ->
-                    SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultAvailableFragment(
-                            testType = CoronaTest.Type.RAPID_ANTIGEN
-                        )
+                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultAvailableFragment(testType)
                 CoronaTestResult.PCR_NEGATIVE ->
                     SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultNegativeFragment()
+                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultNegativeFragment(testType)
                 CoronaTestResult.RAT_NEGATIVE ->
                     SubmissionTestResultPendingFragmentDirections
                         .actionSubmissionTestResultPendingFragmentToSubmissionNegativeAntigenTestResultFragment()
-                CoronaTestResult.PCR_REDEEMED, CoronaTestResult.PCR_INVALID ->
-                    SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultInvalidFragment(
-                            CoronaTest.Type.PCR
-                        )
-                CoronaTestResult.RAT_REDEEMED, CoronaTestResult.RAT_INVALID ->
+                CoronaTestResult.PCR_REDEEMED,
+                CoronaTestResult.PCR_INVALID,
+                CoronaTestResult.RAT_REDEEMED,
+                CoronaTestResult.RAT_INVALID ->
                     SubmissionTestResultPendingFragmentDirections
-                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultInvalidFragment(
-                            CoronaTest.Type.RAPID_ANTIGEN
-                        )
+                        .actionSubmissionTestResultPendingFragmentToSubmissionTestResultInvalidFragment(testType)
                 else -> {
-                    Timber.w("Unknown success state: %s", deviceState)
+                    Timber.w("Unknown success state: $deviceState")
                     null
                 }
             }?.let { routeToScreen.postValue(it) }
@@ -122,7 +111,7 @@ class SubmissionTestResultPendingViewModel @AssistedInject constructor(
     fun onConsentClicked() {
         routeToScreen.postValue(
             SubmissionTestResultPendingFragmentDirections
-                .actionSubmissionResultFragmentToSubmissionYourConsentFragment()
+                .actionSubmissionResultFragmentToSubmissionYourConsentFragment(testType = testType)
         )
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt
index 411733b90aebaa7f501eeba3f8f40036222d0690..07b6e9f665052b7bc797a496b4923f0377550df5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenFragment.kt
@@ -6,6 +6,7 @@ import android.view.View
 import android.view.accessibility.AccessibilityEvent
 import androidx.activity.OnBackPressedCallback
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionTestResultConsentGivenBinding
 import de.rki.coronawarnapp.ui.submission.SubmissionBlockingDialog
@@ -15,7 +16,7 @@ import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import javax.inject.Inject
 
 /**
@@ -26,8 +27,16 @@ class SubmissionTestResultConsentGivenFragment :
     Fragment(R.layout.fragment_submission_test_result_consent_given),
     AutoInject {
 
+    private val navArgs by navArgs<SubmissionTestResultConsentGivenFragmentArgs>()
+
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val viewModel: SubmissionTestResultConsentGivenViewModel by cwaViewModels { viewModelFactory }
+    private val viewModel: SubmissionTestResultConsentGivenViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as SubmissionTestResultConsentGivenViewModel.Factory
+            factory.create(navArgs.testType)
+        }
+    )
 
     private val binding: FragmentSubmissionTestResultConsentGivenBinding by viewBindingLazy()
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenViewModel.kt
index e217fa4c4e8d4f7ebe94cfaac97819063bb3579f..c2c4f6b45b70d5e3b4e9e3d4b4a202fe2fb26df9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultConsentGivenViewModel.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.submission.testresult.positive
 
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.asLiveData
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -15,7 +16,7 @@ import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.map
@@ -26,19 +27,18 @@ class SubmissionTestResultConsentGivenViewModel @AssistedInject constructor(
     private val autoSubmission: AutoSubmission,
     private val testResultAvailableNotificationService: PCRTestResultAvailableNotificationService,
     private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector,
+    @Assisted private val testType: CoronaTest.Type,
     dispatcherProvider: DispatcherProvider
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
 
     init {
-        Timber.v("init() coronaTestType=%s", coronaTestType)
+        Timber.v("init() coronaTestType=%s", testType)
     }
 
     val showUploadDialog = autoSubmission.isSubmissionRunning
         .asLiveData(context = dispatcherProvider.Default)
 
-    val uiState: LiveData<TestResultUIState> = submissionRepository.testForType(type = coronaTestType)
+    val uiState: LiveData<TestResultUIState> = submissionRepository.testForType(type = testType)
         .filterNotNull()
         .map { test ->
             TestResultUIState(coronaTest = test)
@@ -50,7 +50,7 @@ class SubmissionTestResultConsentGivenViewModel @AssistedInject constructor(
 
     fun onTestOpened() = launch {
         Timber.d("onTestOpened()")
-        submissionRepository.setViewedTestResult(type = coronaTestType)
+        submissionRepository.setViewedTestResult(type = testType)
         testResultAvailableNotificationService.cancelTestResultAvailableNotification()
     }
 
@@ -82,5 +82,7 @@ class SubmissionTestResultConsentGivenViewModel @AssistedInject constructor(
     }
 
     @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<SubmissionTestResultConsentGivenViewModel>
+    interface Factory : CWAViewModelFactory<SubmissionTestResultConsentGivenViewModel> {
+        fun create(testType: CoronaTest.Type): SubmissionTestResultConsentGivenViewModel
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt
index 091025361fa654a41a92b4b07a04aa87f6a5c07b..8c6448f7b5684357020b97961cdf31bee20c28e2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentFragment.kt
@@ -16,7 +16,7 @@ import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import javax.inject.Inject
 
 /**
@@ -29,8 +29,14 @@ class SubmissionTestResultNoConsentFragment :
 
     @Inject lateinit var appShortcutsHelper: AppShortcutsHelper
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val viewModel: SubmissionTestResultNoConsentViewModel by cwaViewModels { viewModelFactory }
     private val binding: FragmentSubmissionTestResultPositiveNoConsentBinding by viewBindingLazy()
+    private val viewModel: SubmissionTestResultNoConsentViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as SubmissionTestResultNoConsentViewModel.Factory
+            factory.create(navArgs.testType)
+        }
+    )
 
     private val navArgs by navArgs<SubmissionTestResultPendingFragmentArgs>()
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentViewModel.kt
index 80afcd0a31a65f2e1b14817fe8db78a4e399ebb4..9868f82dfbe3bd56e2c53218a47096e82175497c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/testresult/positive/SubmissionTestResultNoConsentViewModel.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.ui.submission.testresult.positive
 
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.asLiveData
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -11,7 +12,7 @@ import de.rki.coronawarnapp.notification.PCRTestResultAvailableNotificationServi
 import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.map
@@ -20,16 +21,14 @@ import timber.log.Timber
 class SubmissionTestResultNoConsentViewModel @AssistedInject constructor(
     private val submissionRepository: SubmissionRepository,
     private val testResultAvailableNotificationService: PCRTestResultAvailableNotificationService,
-    private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
+    private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel() {
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
-
     init {
-        Timber.v("init() coronaTestType=%s", coronaTestType)
+        Timber.v("init() coronaTestType=%s", testType)
     }
 
-    val uiState: LiveData<TestResultUIState> = submissionRepository.testForType(type = coronaTestType)
+    val uiState: LiveData<TestResultUIState> = submissionRepository.testForType(type = testType)
         .filterNotNull()
         .map { test ->
             TestResultUIState(coronaTest = test)
@@ -38,10 +37,12 @@ class SubmissionTestResultNoConsentViewModel @AssistedInject constructor(
     fun onTestOpened() = launch {
         Timber.v("onTestOpened()")
         analyticsKeySubmissionCollector.reportLastSubmissionFlowScreen(Screen.TEST_RESULT)
-        submissionRepository.setViewedTestResult(type = coronaTestType)
+        submissionRepository.setViewedTestResult(type = testType)
         testResultAvailableNotificationService.cancelTestResultAvailableNotification()
     }
 
     @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<SubmissionTestResultNoConsentViewModel>
+    interface Factory : CWAViewModelFactory<SubmissionTestResultNoConsentViewModel> {
+        fun create(testType: CoronaTest.Type): SubmissionTestResultNoConsentViewModel
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt
index 4d245b7f5bf0022d5156ccf891cc251e603cd840..7a4c5ce4b935e261eac2d14c461a7a738174dcea 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.View
 import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.navArgs
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.databinding.FragmentSubmissionNoConsentPositiveOtherWarningBinding
 import de.rki.coronawarnapp.tracing.ui.TracingConsentDialog
@@ -26,13 +27,15 @@ import javax.inject.Inject
 class SubmissionResultPositiveOtherWarningNoConsentFragment :
     Fragment(R.layout.fragment_submission_no_consent_positive_other_warning), AutoInject {
 
+    private val navArgs by navArgs<SubmissionResultPositiveOtherWarningNoConsentFragmentArgs>()
+
     @Inject lateinit var appShortcutsHelper: AppShortcutsHelper
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
     private val viewModel: SubmissionResultPositiveOtherWarningNoConsentViewModel by cwaViewModelsAssisted(
         factoryProducer = { viewModelFactory },
         constructorCall = { factory, _ ->
             factory as SubmissionResultPositiveOtherWarningNoConsentViewModel.Factory
-            factory.create()
+            factory.create(navArgs.testType)
         }
     )
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
index 8dad6e8631dcf73bd095391cfe2b28d55b537bb4..28f1e8a8c2e3f18fe1579f0c26247f59caff5716 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModel.kt
@@ -5,6 +5,7 @@ import android.content.Intent
 import androidx.lifecycle.asLiveData
 import androidx.navigation.NavDirections
 import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -34,13 +35,11 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
     interoperabilityRepository: InteroperabilityRepository,
     private val submissionRepository: SubmissionRepository,
     private val checkInRepository: CheckInRepository,
-    private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
+    private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
-
     init {
-        Timber.v("init() coronaTestType=%s", coronaTestType)
+        Timber.v("init() coronaTestType=%s", testType)
     }
 
     val routeToScreen = SingleLiveEvent<NavDirections>()
@@ -66,7 +65,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
                 val navDirections = if (completedCheckInsExist) {
                     Timber.tag(TAG).d("Navigate to CheckInsConsentFragment")
                     SubmissionResultPositiveOtherWarningNoConsentFragmentDirections
-                        .actionSubmissionResultPositiveOtherWarningNoConsentFragmentToCheckInsConsentFragment()
+                        .actionSubmissionResultPositiveOtherWarningNoConsentFragmentToCheckInsConsentFragment(testType)
                 } else {
                     autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
                     Timber.tag(TAG).d("Navigate to SubmissionResultReadyFragment")
@@ -111,7 +110,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
 
     fun onConsentButtonClicked() = launch {
         showKeysRetrievalProgress.postValue(true)
-        submissionRepository.giveConsentToSubmission(type = coronaTestType)
+        submissionRepository.giveConsentToSubmission(type = testType)
         launch {
             if (enfClient.isTracingEnabled.first()) {
                 Timber.tag(TAG).d("tekHistoryUpdater.updateTEKHistoryOrRequestPermission()")
@@ -144,7 +143,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
 
     @AssistedFactory
     interface Factory : CWAViewModelFactory<SubmissionResultPositiveOtherWarningNoConsentViewModel> {
-        fun create(): SubmissionResultPositiveOtherWarningNoConsentViewModel
+        fun create(testType: CoronaTest.Type): SubmissionResultPositiveOtherWarningNoConsentViewModel
     }
 
     companion object {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentFragment.kt
index ad3a705db9132490f996be00d3931cd9db12fb56..093eddf09783b70c5be5db58d9b7e09a2fc7687b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentFragment.kt
@@ -13,7 +13,7 @@ import de.rki.coronawarnapp.util.ui.doNavigate
 import de.rki.coronawarnapp.util.ui.observe2
 import de.rki.coronawarnapp.util.ui.viewBindingLazy
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
-import de.rki.coronawarnapp.util.viewmodel.cwaViewModels
+import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
 import javax.inject.Inject
 
 /**
@@ -22,10 +22,16 @@ import javax.inject.Inject
  */
 class SubmissionYourConsentFragment : Fragment(R.layout.fragment_submission_your_consent), AutoInject {
 
+    private val navArgs by navArgs<SubmissionYourConsentFragmentArgs>()
     @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory
-    private val vm: SubmissionYourConsentViewModel by cwaViewModels { viewModelFactory }
+    private val vm: SubmissionYourConsentViewModel by cwaViewModelsAssisted(
+        factoryProducer = { viewModelFactory },
+        constructorCall = { factory, _ ->
+            factory as SubmissionYourConsentViewModel.Factory
+            factory.create(navArgs.testType)
+        }
+    )
     private val binding: FragmentSubmissionYourConsentBinding by viewBindingLazy()
-    private val navArgs: SubmissionYourConsentFragmentArgs by navArgs()
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt
index 10e46bb07917a4188943464085ef60fd9d28257c..13788225fdd54b616c69c5dfd8e46ec3ccd54a3c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModel.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.ui.submission.yourconsent
 
 import androidx.lifecycle.asLiveData
+import dagger.assisted.Assisted
 import dagger.assisted.AssistedFactory
 import dagger.assisted.AssistedInject
 import de.rki.coronawarnapp.coronatest.type.CoronaTest
@@ -9,7 +10,7 @@ import de.rki.coronawarnapp.submission.SubmissionRepository
 import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
 import de.rki.coronawarnapp.util.ui.SingleLiveEvent
 import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
-import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
+import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
 import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.flow.map
@@ -18,17 +19,16 @@ import timber.log.Timber
 class SubmissionYourConsentViewModel @AssistedInject constructor(
     val dispatcherProvider: DispatcherProvider,
     interoperabilityRepository: InteroperabilityRepository,
-    val submissionRepository: SubmissionRepository
+    val submissionRepository: SubmissionRepository,
+    @Assisted private val testType: CoronaTest.Type
 ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
-    // TODO Use navargs to supply this
-    private val coronaTestType: CoronaTest.Type = CoronaTest.Type.PCR
 
     init {
-        Timber.v("init() coronaTestType=%s", coronaTestType)
+        Timber.v("init() coronaTestType=%s", testType)
     }
 
     val clickEvent: SingleLiveEvent<SubmissionYourConsentEvents> = SingleLiveEvent()
-    private val consentFlow = submissionRepository.testForType(type = coronaTestType)
+    private val consentFlow = submissionRepository.testForType(type = testType)
         .filterNotNull()
         .map { it.isAdvancedConsentGiven }
     val consent = consentFlow.asLiveData(context = dispatcherProvider.Default)
@@ -43,10 +43,10 @@ class SubmissionYourConsentViewModel @AssistedInject constructor(
     fun switchConsent() = launch {
         if (consentFlow.first()) {
             Timber.v("revokeConsentToSubmission()")
-            submissionRepository.revokeConsentToSubmission(type = coronaTestType)
+            submissionRepository.revokeConsentToSubmission(type = testType)
         } else {
             Timber.v("giveConsentToSubmission()")
-            submissionRepository.giveConsentToSubmission(type = coronaTestType)
+            submissionRepository.giveConsentToSubmission(type = testType)
         }
     }
 
@@ -55,5 +55,7 @@ class SubmissionYourConsentViewModel @AssistedInject constructor(
     }
 
     @AssistedFactory
-    interface Factory : SimpleCWAViewModelFactory<SubmissionYourConsentViewModel>
+    interface Factory : CWAViewModelFactory<SubmissionYourConsentViewModel> {
+        fun create(testType: CoronaTest.Type): SubmissionYourConsentViewModel
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt
index acdb4ca5d7edbbdc25ecf6efe2aaa83496b1960b..0294876c153022b1f8065d42abd4c84f9edfdbdd 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/view/TestResultSectionView.kt
@@ -49,7 +49,15 @@ constructor(
 
     fun setTestResultSection(coronaTest: CoronaTest?) {
         binding.apply {
-            testResultSectionHeadline.text = context.getString(R.string.test_result_card_headline)
+            when (coronaTest?.type) {
+                CoronaTest.Type.PCR ->
+                    testResultSectionHeadline.text = context.getString(R.string.test_result_card_headline)
+                        .format(context.getString(R.string.ag_homescreen_card_pcr_title))
+                CoronaTest.Type.RAPID_ANTIGEN ->
+                    testResultSectionHeadline.text = context.getString(R.string.test_result_card_headline)
+                        .format(context.getString(R.string.submission_test_result_antigen_title))
+            }
+
             testResultSectionRegisteredAtText.text = formatTestResultRegisteredAtText(coronaTest?.registeredAt)
             val testResultIcon = formatTestStatusIcon(coronaTest)
             testResultSectionStatusIcon.setImageDrawable(testResultIcon)
diff --git a/Corona-Warn-App/src/main/res/layout/view_test_result_section.xml b/Corona-Warn-App/src/main/res/layout/view_test_result_section.xml
index 62fefc498eafb3ccab565a421fcbcd63a3d826f4..14678c9871c1b12e264efdfb4654e3d5857ed39f 100644
--- a/Corona-Warn-App/src/main/res/layout/view_test_result_section.xml
+++ b/Corona-Warn-App/src/main/res/layout/view_test_result_section.xml
@@ -18,7 +18,7 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_marginEnd="@dimen/spacing_small"
-            app:layout_constraintEnd_toStartOf="@id/test_result_section_status_icon"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             tools:text="Ihr Befund"/>
diff --git a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml
index bed4a20bafb94d427d75105de5897a41ed7e4f3b..44c7f71310aaba1f7be87d768f2694d07f010719 100644
--- a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml
+++ b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml
@@ -484,6 +484,9 @@
         <action
             android:id="@+id/action_submissionTestResultConsentGivenFragment_to_submissionSymptomIntroductionFragment"
             app:destination="@id/submissionSymptomIntroductionFragment" />
+        <argument
+            android:name="testType"
+            app:argType="de.rki.coronawarnapp.coronatest.type.CoronaTest$Type" />
     </fragment>
     <fragment
         android:id="@+id/submissionTestResultNoConsentFragment"
@@ -497,6 +500,9 @@
         <action
             android:id="@+id/action_submissionTestResultNoConsentFragment_to_submissionResultPositiveOtherWarningNoConsentFragment"
             app:destination="@id/submissionResultPositiveOtherWarningNoConsentFragment" />
+        <argument
+            android:name="testType"
+            app:argType="de.rki.coronawarnapp.coronatest.type.CoronaTest$Type" />
     </fragment>
     <fragment
         android:id="@+id/submissionYourConsentFragment"
@@ -510,6 +516,9 @@
         <action
             android:id="@+id/action_submissionYourConsentFragment_to_informationPrivacyFragment"
             app:destination="@id/informationPrivacyFragment" />
+        <argument
+            android:name="testType"
+            app:argType="de.rki.coronawarnapp.coronatest.type.CoronaTest$Type" />
     </fragment>
     <fragment
         android:id="@+id/submissionTestResultAvailableFragment"
@@ -546,7 +555,11 @@
     <fragment
         android:id="@+id/submissionTestResultNegativeFragment"
         android:name="de.rki.coronawarnapp.ui.submission.testresult.negative.SubmissionTestResultNegativeFragment"
-        android:label="SubmissionTestResultNegativeFragment" />
+        android:label="SubmissionTestResultNegativeFragment">
+        <argument
+            android:name="testType"
+            app:argType="de.rki.coronawarnapp.coronatest.type.CoronaTest$Type" />
+    </fragment>
     <fragment
         android:id="@+id/submissionTestResultInvalidFragment"
         android:name="de.rki.coronawarnapp.ui.submission.testresult.invalid.SubmissionTestResultInvalidFragment"
@@ -677,14 +690,14 @@
             app:argType="boolean" />
         <argument
             android:name="coronaTestQrCode"
-            app:nullable="true"
             android:defaultValue="@null"
-            app:argType="de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode" />
+            app:argType="de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode"
+            app:nullable="true" />
         <argument
             android:name="coronaTestTan"
-            app:nullable="true"
             android:defaultValue="@null"
-            app:argType="de.rki.coronawarnapp.coronatest.tan.CoronaTestTAN" />
+            app:argType="de.rki.coronawarnapp.coronatest.tan.CoronaTestTAN"
+            app:nullable="true" />
         <action
             android:id="@+id/action_submissionDeletionWarningFragment_to_submissionDispatcherFragment"
             app:popUpTo="@id/submissionQRCodeScanFragment"
@@ -711,9 +724,9 @@
             app:popUpToInclusive="false" />
         <action
             android:id="@+id/action_submissionDeletionWarningFragment_to_submissionConsentFragment"
+            app:destination="@id/submissionConsentFragment"
             app:popUpTo="@id/mainFragment"
-            app:popUpToInclusive="false"
-            app:destination="@id/submissionConsentFragment" />
+            app:popUpToInclusive="false" />
     </fragment>
 
     <fragment
@@ -738,5 +751,8 @@
             app:destination="@id/submissionTestResultConsentGivenFragment"
             app:popUpTo="@id/mainFragment"
             app:popUpToInclusive="false" />
+        <argument
+            android:name="testType"
+            app:argType="de.rki.coronawarnapp.coronatest.type.CoronaTest$Type" />
     </fragment>
 </navigation>
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt
index 0012a6ae7af09003d77c24227dd99432abb9d0ac..bf5f2ee7a8c334051ded1733d6587b9b58b2f83f 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt
@@ -35,6 +35,7 @@ class CheckInsConsentViewModelTest : BaseTest() {
     @MockK lateinit var checkInRepository: CheckInRepository
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var autoSubmission: AutoSubmission
+    @MockK lateinit var testType: CoronaTest.Type
 
     private val checkIn1 = CheckIn(
         id = 1L,
@@ -340,6 +341,7 @@ class CheckInsConsentViewModelTest : BaseTest() {
         dispatcherProvider = TestDispatcherProvider(),
         checkInRepository = checkInRepository,
         submissionRepository = submissionRepository,
-        autoSubmission = autoSubmission
+        autoSubmission = autoSubmission,
+        testType = testType
     )
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testavailable/SubmissionTestResultAvailableViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testavailable/SubmissionTestResultAvailableViewModelTest.kt
index d9c1e6ea258382161a12a535ae48bb3b39a78e79..00fae3d0b58f412a9bbc0dc3cab9f2b780b5b75a 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testavailable/SubmissionTestResultAvailableViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testavailable/SubmissionTestResultAvailableViewModelTest.kt
@@ -36,6 +36,7 @@ class SubmissionTestResultAvailableViewModelTest : BaseTest() {
     @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
     @MockK lateinit var coronaTestRepository: CoronaTestRepository
     @MockK lateinit var checkInRepository: CheckInRepository
+    @MockK lateinit var testType: CoronaTest.Type
 
     private val coronaTestFlow = MutableStateFlow(
         mockk<CoronaTest>().apply {
@@ -63,7 +64,8 @@ class SubmissionTestResultAvailableViewModelTest : BaseTest() {
         tekHistoryUpdaterFactory = tekHistoryUpdaterFactory,
         autoSubmission = autoSubmission,
         analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
-        checkInRepository = checkInRepository
+        checkInRepository = checkInRepository,
+        testType = testType
     )
 
     @Test
@@ -98,7 +100,10 @@ class SubmissionTestResultAvailableViewModelTest : BaseTest() {
 
         viewModel.goConsent()
         viewModel.routeToScreen.value shouldBe SubmissionTestResultAvailableFragmentDirections
-            .actionSubmissionTestResultAvailableFragmentToSubmissionYourConsentFragment(true)
+            .actionSubmissionTestResultAvailableFragmentToSubmissionYourConsentFragment(
+                testType = testType,
+                isTestResultAvailable = true,
+            )
     }
 
     @Test
@@ -122,6 +127,6 @@ class SubmissionTestResultAvailableViewModelTest : BaseTest() {
 
         viewModel.proceed()
         viewModel.routeToScreen.value shouldBe SubmissionTestResultAvailableFragmentDirections
-            .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment()
+            .actionSubmissionTestResultAvailableFragmentToSubmissionTestResultNoConsentFragment(testType)
     }
 }
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testresult/SubmissionTestResultConsentGivenViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testresult/SubmissionTestResultConsentGivenViewModelTest.kt
index 8d160fe6b9fe5ec7ffd334e7e9940ca2b03be061..31e401a51b154f9487de4c8b4f94ee6210aee253 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testresult/SubmissionTestResultConsentGivenViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/testresult/SubmissionTestResultConsentGivenViewModelTest.kt
@@ -1,5 +1,6 @@
 package de.rki.coronawarnapp.ui.submission.testresult
 
+import de.rki.coronawarnapp.coronatest.type.CoronaTest
 import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector
 import de.rki.coronawarnapp.notification.PCRTestResultAvailableNotificationService
 import de.rki.coronawarnapp.submission.SubmissionRepository
@@ -23,6 +24,7 @@ class SubmissionTestResultConsentGivenViewModelTest : BaseTest() {
     @MockK lateinit var testResultAvailableNotificationService: PCRTestResultAvailableNotificationService
     @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
     lateinit var viewModel: SubmissionTestResultConsentGivenViewModel
+    @MockK lateinit var testType: CoronaTest.Type
 
     @BeforeEach
     fun setUp() {
@@ -34,7 +36,8 @@ class SubmissionTestResultConsentGivenViewModelTest : BaseTest() {
         dispatcherProvider = TestDispatcherProvider(),
         autoSubmission = autoSubmission,
         testResultAvailableNotificationService = testResultAvailableNotificationService,
-        analyticsKeySubmissionCollector = analyticsKeySubmissionCollector
+        analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
+        testType = testType
     )
 
     @Test
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModelTest.kt
index 40080f1f514b7f5af1865eb5243bc9c837b0b365..a189fc59576067c2b46f9d644792a5509daaf66e 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/warnothers/SubmissionResultPositiveOtherWarningNoConsentViewModelTest.kt
@@ -37,6 +37,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModelTest : BaseTest() {
     @MockK lateinit var enfClient: ENFClient
     @MockK lateinit var analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector
     @MockK lateinit var checkInRepository: CheckInRepository
+    @MockK lateinit var testType: CoronaTest.Type
 
     private val coronaTestFlow = MutableStateFlow(
         mockk<CoronaTest>().apply {
@@ -68,7 +69,8 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModelTest : BaseTest() {
         interoperabilityRepository = interoperabilityRepository,
         submissionRepository = submissionRepository,
         analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
-        checkInRepository = checkInRepository
+        checkInRepository = checkInRepository,
+        testType = testType
     )
 
     @Test
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt
index e11349903be08c2f7d039efc891d1b868519aa7f..5a81ac156199fde1b94883142a459884d1cb0791 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/yourconsent/SubmissionYourConsentViewModelTest.kt
@@ -26,6 +26,7 @@ class SubmissionYourConsentViewModelTest : BaseTest() {
 
     @MockK lateinit var submissionRepository: SubmissionRepository
     @MockK lateinit var interoperabilityRepository: InteroperabilityRepository
+    @MockK lateinit var testType: CoronaTest.Type
 
     private val countryList = Country.values().toList()
 
@@ -47,7 +48,8 @@ class SubmissionYourConsentViewModelTest : BaseTest() {
     private fun createViewModel(): SubmissionYourConsentViewModel = SubmissionYourConsentViewModel(
         interoperabilityRepository = interoperabilityRepository,
         submissionRepository = submissionRepository,
-        dispatcherProvider = TestDispatcherProvider()
+        dispatcherProvider = TestDispatcherProvider(),
+        testType = testType
     )
 
     @Test