From 37655d73aec21f84958082ea1df9f7e8e45c1b6b Mon Sep 17 00:00:00 2001
From: Mohamed Metwalli <mohamed.metwalli@sap.com>
Date: Tue, 29 Dec 2020 21:59:57 +0100
Subject: [PATCH] Add View assertion to make sure Fragment is already
 displaying its views to avoid capturing blank screenshots

---
 .../screenshot/OnboardingFragmentScreenshot.kt         |  7 ++++++-
 .../OnboardingNotificationsFragmentScreenshot.kt       | 10 +++++++---
 .../screenshot/OnboardingPrivacyFragmentScreenshot.kt  | 10 +++++++---
 .../screenshot/OnboardingTestFragmentScreenshot.kt     |  6 ++++++
 .../screenshot/OnboardingTracingFragmentScreenshot.kt  | 10 +++++++---
 5 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingFragmentScreenshot.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingFragmentScreenshot.kt
index 487b75b54..bc641747b 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingFragmentScreenshot.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingFragmentScreenshot.kt
@@ -1,6 +1,10 @@
 package de.rki.coronawarnapp.ui.onboarding.screenshot
 
 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
+import androidx.test.espresso.matcher.ViewMatchers.withId
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.onboarding.OnboardingFragment
@@ -44,7 +48,8 @@ class OnboardingFragmentScreenshot : BaseUITest() {
     @Test
     fun capture_screenshot() {
         launchFragmentInContainer<OnboardingFragment>(themeResId = R.style.AppTheme)
-        Thread.sleep(1000)
+        // 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/screenshot/OnboardingNotificationsFragmentScreenshot.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingNotificationsFragmentScreenshot.kt
index aa4c1d665..ac4f72e7f 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingNotificationsFragmentScreenshot.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingNotificationsFragmentScreenshot.kt
@@ -1,6 +1,10 @@
 package de.rki.coronawarnapp.ui.onboarding.screenshot
 
 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
+import androidx.test.espresso.matcher.ViewMatchers.withId
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.onboarding.OnboardingNotificationsFragment
@@ -44,8 +48,8 @@ class OnboardingNotificationsFragmentScreenshot : BaseUITest() {
     @Test
     fun capture_screenshot() {
         launchFragmentInContainer<OnboardingNotificationsFragment>(themeResId = R.style.AppTheme)
-            .onFragment {
-                Screengrab.screenshot(OnboardingNotificationsFragment::class.simpleName)
-            }
+        // 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/screenshot/OnboardingPrivacyFragmentScreenshot.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingPrivacyFragmentScreenshot.kt
index eacd6e955..a348f19ad 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingPrivacyFragmentScreenshot.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingPrivacyFragmentScreenshot.kt
@@ -1,6 +1,10 @@
 package de.rki.coronawarnapp.ui.onboarding.screenshot
 
 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
+import androidx.test.espresso.matcher.ViewMatchers.withId
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.onboarding.OnboardingPrivacyFragment
@@ -44,8 +48,8 @@ class OnboardingPrivacyFragmentScreenshot : BaseUITest() {
     @Test
     fun capture_screenshot() {
         launchFragmentInContainer<OnboardingPrivacyFragment>(themeResId = R.style.AppTheme)
-            .onFragment {
-                Screengrab.screenshot(OnboardingPrivacyFragment::class.simpleName)
-            }
+        // Check any view to make sure screenshot is not blank
+        onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
+        Screengrab.screenshot(OnboardingPrivacyFragment::class.simpleName)
     }
 }
diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTestFragmentScreenshot.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTestFragmentScreenshot.kt
index 8f2fb6932..c1a1a45c7 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTestFragmentScreenshot.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTestFragmentScreenshot.kt
@@ -1,6 +1,10 @@
 package de.rki.coronawarnapp.ui.onboarding.screenshot
 
 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
+import androidx.test.espresso.matcher.ViewMatchers.withId
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.onboarding.OnboardingTestFragment
@@ -44,6 +48,8 @@ class OnboardingTestFragmentScreenshot : BaseUITest() {
     @Test
     fun capture_screenshot() {
         launchFragmentInContainer<OnboardingTestFragment>(themeResId = R.style.AppTheme)
+        // 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/screenshot/OnboardingTracingFragmentScreenshot.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTracingFragmentScreenshot.kt
index 462713048..93fddcb38 100644
--- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTracingFragmentScreenshot.kt
+++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/onboarding/screenshot/OnboardingTracingFragmentScreenshot.kt
@@ -1,6 +1,10 @@
 package de.rki.coronawarnapp.ui.onboarding.screenshot
 
 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
+import androidx.test.espresso.matcher.ViewMatchers.withId
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import de.rki.coronawarnapp.R
 import de.rki.coronawarnapp.ui.onboarding.OnboardingTracingFragment
@@ -44,8 +48,8 @@ class OnboardingTracingFragmentScreenshot : BaseUITest() {
     @Test
     fun capture_screenshot() {
         launchFragmentInContainer<OnboardingTracingFragment>(themeResId = R.style.AppTheme)
-            .onFragment {
-                Screengrab.screenshot(OnboardingTracingFragment::class.simpleName)
-            }
+        // Check any view to make sure screenshot is not blank
+        onView(withId(R.id.onboarding_button_next)).check(matches(isDisplayed()))
+        Screengrab.screenshot(OnboardingTracingFragment::class.simpleName)
     }
 }
-- 
GitLab