-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix closing notification drawer #6395
Conversation
It appears that sometimes the notification drawer does not close automatically | ||
after clicking on a notification. This could be due to a bug in Android. | ||
*/ | ||
val manageButton = device.findObject(By.text("Manage")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this solution. My only worry here is that we might end up with a timing issue if "Manage" hangs around for a small amount of time. Maybe we can add a wait in here (like we do in waitForNotification
) that waits for it to disappear (and times out).
I'm also thinking we should pull this out to a method and do it everywhere we're expecting the notification drawer to close?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My only worry here is that we might end up with a timing issue if "Manage" hangs around for a small amount of time. Maybe we can add a wait in here (like we do in waitForNotification) that waits for it to disappear (and times out).
I've added waiting for 1s but it shouldn't be necessary as we perform other actions before like clicking on a notification or its action so that button should be already there at the time we try to find it.
I'm also thinking we should pull this out to a method and do it everywhere we're expecting the notification drawer to close?
Yeah, we can do that.
55b844e
to
cd6ec74
Compare
*/ | ||
private fun closeNotificationDrawerIfOpened() { | ||
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) | ||
device.wait(Until.hasObject(By.text("Manage")), TimeInMs.ONE_SECOND) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I probably wasn't very clear in my last comment. I meant we want to wait for "Manage" to be gone, not for it to appear. Then if that wait fails we can do device.pressBack
. That way we account for any delay in closing the drawer. In more abstract terms, we want to "wait for the notification drawer to close and then close it ourselves if it's not closed".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah ok, done.
Closes #6391
Why is this the best possible solution? Were any other approaches considered?
As I said in my comment:
It appears that sometimes the notification drawer does not close automatically when it should such as after clicking on a notification or its action. This could be due to a bug in Android.
I hope this fixes the issue but we can't be sure so we will see.
How does this change affect users? Describe intentional changes to behavior and behavior that could have accidentally been affected by code changes. In other words, what are the regression risks?
It doesn't require testing.
Do we need any specific form for testing your changes? If so, please attach one.
No.
Does this change require updates to documentation? If so, please file an issue here and include the link below.
No.
Before submitting this PR, please make sure you have:
./gradlew connectedAndroidTest
(or./gradlew testLab
) and confirmed all checks still passDateFormatsTest