For #18644: fix metod to verify system notifications (#18721)

(cherry picked from commit 246348501c)

Co-authored-by: Oana Horvath <oana.horvath@softvision.ro>
pull/420/head
mergify[bot] 3 years ago committed by GitHub
parent 72c9e3daae
commit a963098465
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -9,6 +9,7 @@ import androidx.test.espresso.intent.rule.IntentsTestRule
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiSelector
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.onboarding.FenixOnboarding import org.mozilla.fenix.onboarding.FenixOnboarding
import org.mozilla.fenix.ui.robots.appContext import org.mozilla.fenix.ui.robots.appContext
@ -37,6 +38,7 @@ class HomeActivityTestRule(
override fun afterActivityFinished() { override fun afterActivityFinished() {
super.afterActivityFinished() super.afterActivityFinished()
setLongTapTimeout(longTapUserPreference) setLongTapTimeout(longTapUserPreference)
closeNotificationShade()
} }
} }
@ -65,6 +67,7 @@ class HomeActivityIntentTestRule(
override fun afterActivityFinished() { override fun afterActivityFinished() {
super.afterActivityFinished() super.afterActivityFinished()
setLongTapTimeout(longTapUserPreference) setLongTapTimeout(longTapUserPreference)
closeNotificationShade()
} }
} }
@ -79,3 +82,13 @@ private fun skipOnboardingBeforeLaunch() {
// this API so it can be fragile. // this API so it can be fragile.
FenixOnboarding(appContext).finish() FenixOnboarding(appContext).finish()
} }
private fun closeNotificationShade() {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
if (mDevice.findObject(
UiSelector().resourceId("com.android.systemui:id/notification_stack_scroller")
).exists()
) {
mDevice.pressHome()
}
}

@ -13,27 +13,23 @@ import org.mozilla.fenix.helpers.ext.waitNotNull
class NotificationRobot { class NotificationRobot {
fun verifySystemNotificationExists(notificationMessage: String) { fun verifySystemNotificationExists(notificationMessage: String) {
fun notificationTray() = UiScrollable( fun notificationTray() = UiScrollable(
UiSelector().resourceId("com.android.systemui:id/notification_stack_scroller") UiSelector().resourceId("com.android.systemui:id/notification_stack_scroller")
) )
val notificationFound: Boolean var notificationFound = false
notificationFound = try { do {
notificationTray().getChildByText( try {
UiSelector().text(notificationMessage), notificationMessage, true notificationFound = notificationTray().getChildByText(
).exists() UiSelector().text(notificationMessage), notificationMessage, true
} catch (e: UiObjectNotFoundException) { ).waitForExists(waitingTime)
false assertTrue(notificationFound)
} } catch (e: UiObjectNotFoundException) {
notificationTray().scrollForward()
if (!notificationFound) { mDevice.waitForIdle()
// swipe 2 times to expand the silent notifications on API 28 and higher, single-swipe doesn't do it }
notificationTray().swipeUp(2) } while (!notificationFound)
val notification = mDevice.findObject(UiSelector().textContains(notificationMessage))
assertTrue(notification.exists())
}
} }
fun verifySystemNotificationGone(notificationMessage: String) { fun verifySystemNotificationGone(notificationMessage: String) {

Loading…
Cancel
Save