Skip to content
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

Merged
merged 9 commits into from
Sep 9, 2024
Merged

Conversation

grzesiek2010
Copy link
Member

@grzesiek2010 grzesiek2010 commented Sep 4, 2024

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:

  • added or modified tests for any new or changed behavior
  • run ./gradlew connectedAndroidTest (or ./gradlew testLab) and confirmed all checks still pass
  • added a comment above any new strings describing it for translators
  • added any new strings with date formatting to DateFormatsTest
  • verified that any code or assets from external sources are properly credited in comments and/or in the about file.
  • verified that any new UI elements use theme colors. UI Components Style guidelines

@grzesiek2010 grzesiek2010 marked this pull request as ready for review September 4, 2024 13:21
@grzesiek2010 grzesiek2010 marked this pull request as draft September 4, 2024 13:25
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"))
Copy link
Member

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?

Copy link
Member Author

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.

@grzesiek2010 grzesiek2010 marked this pull request as ready for review September 5, 2024 07:15
*/
private fun closeNotificationDrawerIfOpened() {
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
device.wait(Until.hasObject(By.text("Manage")), TimeInMs.ONE_SECOND)
Copy link
Member

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".

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah ok, done.

@seadowg seadowg merged commit 35d05ec into getodk:master Sep 9, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Fix flaky PreviouslyDownloadedOnlyTest
2 participants