Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1f18027 authored by Mady Mellor's avatar Mady Mellor
Browse files

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
parent 30deaa8b
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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")
+4 −9
Original line number Diff line number Diff line
@@ -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("BubbleChat")
                        .addMessage("Hello? This is bubble: " + id,
                        .addMessage("BubbleChat",
                                SystemClock.currentThreadTimeMillis() - 300000, chatBot)
                        .addMessage("Is it me, " + id + ", you're looking for?",
                                SystemClock.currentThreadTimeMillis(), chatBot)