From 12318657e4e285346de0c5a34bb240050eb0e31d Mon Sep 17 00:00:00 2001 From: Mohamed Metwalli <mohamed.metwalli@sap.com> Date: Mon, 4 Jan 2021 13:37:27 +0100 Subject: [PATCH] Add an inline function that defaults to AppTheme --- ...ardingDeltaInteroperabilityFragmentTest.kt | 4 ++-- .../ui/onboarding/OnboardingFragmentTest.kt | 4 ++-- .../OnboardingNotificationsFragmentTest.kt | 4 ++-- .../OnboardingPrivacyFragmentTest.kt | 4 ++-- .../onboarding/OnboardingTestFragmentTest.kt | 4 ++-- .../OnboardingTracingFragmentTest.kt | 4 ++-- .../java/testhelpers/TestExtensions.kt | 22 +++++++++++++++++++ 7 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt index af650d4ec..7c7e8aab2 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingDeltaInteroperabilityFragmentTest.kt @@ -1,7 +1,6 @@ package de.rki.coronawarnapp.ui.onboarding import androidx.fragment.app.testing.launchFragment -import androidx.fragment.app.testing.launchFragmentInContainer import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed @@ -21,6 +20,7 @@ import org.junit.runner.RunWith import testhelpers.BaseUITest import testhelpers.Screenshot import testhelpers.TestDispatcherProvider +import testhelpers.launchFragmentInContainer2 import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -59,7 +59,7 @@ class OnboardingDeltaInteroperabilityFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot() { - launchFragmentInContainer<OnboardingDeltaInteroperabilityFragment>(themeResId = R.style.AppTheme) + launchFragmentInContainer2<OnboardingDeltaInteroperabilityFragment>() // Check any view to make sure screenshot is not blank onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed())) Screengrab.screenshot(OnboardingDeltaInteroperabilityFragment::class.simpleName) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt index dee99dde9..afbfe6575 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragmentTest.kt @@ -1,7 +1,6 @@ package de.rki.coronawarnapp.ui.onboarding import androidx.fragment.app.testing.launchFragment -import androidx.fragment.app.testing.launchFragmentInContainer import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.action.ViewActions.scrollTo @@ -19,6 +18,7 @@ import org.junit.Test import org.junit.runner.RunWith import testhelpers.BaseUITest import testhelpers.Screenshot +import testhelpers.launchFragmentInContainer2 import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -49,7 +49,7 @@ class OnboardingFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot() { - launchFragmentInContainer<OnboardingFragment>(themeResId = R.style.AppTheme) + launchFragmentInContainer2<OnboardingFragment>() // Check any view to make sure screenshot is not blank onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed())) Screengrab.screenshot(OnboardingFragment::class.simpleName) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt index d721c815c..33eb47d75 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragmentTest.kt @@ -1,7 +1,6 @@ package de.rki.coronawarnapp.ui.onboarding import androidx.fragment.app.testing.launchFragment -import androidx.fragment.app.testing.launchFragmentInContainer import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed @@ -17,6 +16,7 @@ import org.junit.Test import org.junit.runner.RunWith import testhelpers.BaseUITest import testhelpers.Screenshot +import testhelpers.launchFragmentInContainer2 import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -47,7 +47,7 @@ class OnboardingNotificationsFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot() { - launchFragmentInContainer<OnboardingNotificationsFragment>(themeResId = R.style.AppTheme) + launchFragmentInContainer2<OnboardingNotificationsFragment>() // Check any view to make sure screenshot is not blank onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed())) Screengrab.screenshot(OnboardingNotificationsFragment::class.simpleName) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt index 701352524..aa3166ad0 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragmentTest.kt @@ -1,7 +1,6 @@ package de.rki.coronawarnapp.ui.onboarding import androidx.fragment.app.testing.launchFragment -import androidx.fragment.app.testing.launchFragmentInContainer import androidx.test.espresso.Espresso import androidx.test.espresso.assertion.ViewAssertions import androidx.test.espresso.matcher.ViewMatchers @@ -16,6 +15,7 @@ import org.junit.Test import org.junit.runner.RunWith import testhelpers.BaseUITest import testhelpers.Screenshot +import testhelpers.launchFragmentInContainer2 import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -46,7 +46,7 @@ class OnboardingPrivacyFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot() { - launchFragmentInContainer<OnboardingPrivacyFragment>(themeResId = R.style.AppTheme) + launchFragmentInContainer2<OnboardingPrivacyFragment>() // Check any view to make sure screenshot is not blank Espresso.onView(ViewMatchers.withId(R.id.onboarding_button_next)) .check(ViewAssertions.matches(ViewMatchers.isDisplayed())) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt index 774b691c0..9cc641ea4 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragmentTest.kt @@ -1,7 +1,6 @@ package de.rki.coronawarnapp.ui.onboarding import androidx.fragment.app.testing.launchFragment -import androidx.fragment.app.testing.launchFragmentInContainer import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed @@ -17,6 +16,7 @@ import org.junit.Test import org.junit.runner.RunWith import testhelpers.BaseUITest import testhelpers.Screenshot +import testhelpers.launchFragmentInContainer2 import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -47,7 +47,7 @@ class OnboardingTestFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot() { - launchFragmentInContainer<OnboardingTestFragment>(themeResId = R.style.AppTheme) + launchFragmentInContainer2<OnboardingTestFragment>() // Check any view to make sure screenshot is not blank onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed())) Screengrab.screenshot(OnboardingTestFragment::class.simpleName) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt index 090c645c6..18877ff1e 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragmentTest.kt @@ -1,7 +1,6 @@ package de.rki.coronawarnapp.ui.onboarding import androidx.fragment.app.testing.launchFragment -import androidx.fragment.app.testing.launchFragmentInContainer import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed @@ -26,6 +25,7 @@ import org.junit.runner.RunWith import testhelpers.BaseUITest import testhelpers.Screenshot import testhelpers.TestDispatcherProvider +import testhelpers.launchFragmentInContainer2 import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -72,7 +72,7 @@ class OnboardingTracingFragmentTest : BaseUITest() { @Test fun capture_screenshot() { val simpleName = OnboardingTracingFragment::class.simpleName - launchFragmentInContainer<OnboardingTracingFragment>(themeResId = R.style.AppTheme) + launchFragmentInContainer2<OnboardingTracingFragment>() // Check any view to make sure screenshot is not blank onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed())) Screengrab.screenshot(simpleName) diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt new file mode 100644 index 000000000..5e9c30423 --- /dev/null +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/TestExtensions.kt @@ -0,0 +1,22 @@ +package testhelpers; + +import android.os.Bundle +import androidx.annotation.StyleRes +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentFactory +import androidx.fragment.app.testing.FragmentScenario +import de.rki.coronawarnapp.R + +/** + * Launches Fragment in Activity root container. Same as [androidx.fragment.app.testing.launchFragmentInContainer] + * except that it defaults the theme to [R.style.AppTheme]. + * This helps to avoid showing default ActionBar from [R.style.FragmentScenarioEmptyFragmentActivityTheme] + * in cases where a screenshot is needed to match the exact theme in the App. + */ +inline fun <reified F : Fragment> launchFragmentInContainer2( + fragmentArgs: Bundle? = null, + @StyleRes themeResId: Int = R.style.AppTheme, + factory: FragmentFactory? = null +) = FragmentScenario.launchInContainer(F::class.java, fragmentArgs, themeResId, factory) + + -- GitLab