Bubble flicker test: Ensure the notification shade is opened

This test depends on finding the text in the notification. In some
cases the notification might not be visible due to whatever else is
going on on the device.

This change adds a swipe that (based on local testing...) will trigger
the shade to expand while on lockscreen and allow all notification
text to be read / found by UiAutomator.

Update the text in the notification to use "BubbleChat" everywhere
so that it can be reliably found (when the notification is collapsed
or expanded it shows text a little differently & it auto expands
when the shade is expanded and it's the top notification).

Test: atest LaunchBubbleFromLockScreen --iterations 20
    - Ideally get the "app updates are ready" notif by checking for
      updates in settings, when you have this on screen the test
      would fail 100% consistently.
Bug: 205288792
Change-Id: Ib01923f35c531fb15230d640237e2c395ee1904d
This commit is contained in:
Mady Mellor
2022-03-30 00:06:56 +00:00
parent 30deaa8bf8
commit d1f18027e7
2 changed files with 16 additions and 9 deletions

View File

@@ -17,6 +17,8 @@
package com.android.wm.shell.flicker.bubble
import android.platform.test.annotations.Presubmit
import android.view.WindowInsets
import android.view.WindowManager
import androidx.test.filters.FlakyTest
import androidx.test.filters.RequiresDevice
import androidx.test.uiautomator.By
@@ -59,6 +61,16 @@ class LaunchBubbleFromLockScreen(testSpec: FlickerTestParameter) : BaseBubbleScr
}
}
transitions {
// Swipe & wait for the notification shade to expand so all can be seen
val wm = context.getSystemService(WindowManager::class.java)
val metricInsets = wm.getCurrentWindowMetrics().windowInsets
val insets = metricInsets.getInsetsIgnoringVisibility(
WindowInsets.Type.statusBars()
or WindowInsets.Type.displayCutout())
device.swipe(100, insets.top + 100, 100, device.getDisplayHeight() / 2, 4)
device.waitForIdle(2000)
instrumentation.uiAutomation.syncInputTransactions()
val notification = device.wait(Until.findObject(
By.text("BubbleChat")), FIND_OBJECT_TIMEOUT)
notification?.click() ?: error("Notification not found")

View File

@@ -22,7 +22,6 @@ import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Person;
import android.app.RemoteInput;
import android.content.Context;
import android.content.Intent;
import android.graphics.Point;
@@ -116,24 +115,20 @@ public class BubbleHelper {
private Notification.Builder getNotificationBuilder(int id) {
Person chatBot = new Person.Builder()
.setBot(true)
.setName("BubbleBot")
.setName("BubbleChat")
.setImportant(true)
.build();
RemoteInput remoteInput = new RemoteInput.Builder("key")
.setLabel("Reply")
.build();
String shortcutId = "BubbleChat";
return new Notification.Builder(mContext, CHANNEL_ID)
.setChannelId(CHANNEL_ID)
.setShortcutId(shortcutId)
.setContentTitle("BubbleChat")
.setContentIntent(PendingIntent.getActivity(mContext, 0,
new Intent(mContext, LaunchBubbleActivity.class),
PendingIntent.FLAG_UPDATE_CURRENT))
.setStyle(new Notification.MessagingStyle(chatBot)
.setConversationTitle("Bubble Chat")
.addMessage("Hello? This is bubble: " + id,
.setConversationTitle("BubbleChat")
.addMessage("BubbleChat",
SystemClock.currentThreadTimeMillis() - 300000, chatBot)
.addMessage("Is it me, " + id + ", you're looking for?",
SystemClock.currentThreadTimeMillis(), chatBot)