Open stevepopovich opened 1 year ago
The Android double tap is an unfortunate known issue. To prevent it you can add retryTapIfNoChange: false
to your tap command
https://maestro.mobile.dev/troubleshooting/known-issues#android-accidental-double-tap
You're also passing in STAR as a default to the scroll and tap, which will default it to text (you've mentioned it's an ID in your comment) - you need to explicitly pass in id: "STAR"
Great, thanks for getting back to me. I can fix that.
I was meaning to use STAR
text, but I can convert that to use an ID. Is there known inconsistencies with finding buttons via text with Compose?
Not that I'm aware of - if you could share a recording of your flow running next to your app on a run with the issue (and also the output of maestro hierarchy
at that point), that would help.
Oh I hadn't seen hierarchy
or studio
. These are great. Are they in the docs and I just missed them?
Anyways, I think I found bug with Maestro detecting testTag
s. I converted the script above to use testTags. So the STAR
button has a testTag
. I confirmed that in Android studio.
But Maestro does not see that:
Here is my Maestro hierarchy
Maybe this has to do with the sheer complexity of this screen...
Hierarchy is mentioned here in the docs. This was the original way of using Maestro and finding elements before Studio came along:
https://maestro.mobile.dev/cli/view-hierarchy
The issue looks to me that you are trying to use STAR as text to scroll to, but you have multiple of the same text/id. As it already exists on screen it won't scroll - it needs to be unique or have some unique combination. You can also supply index
as a selector to differentiate if you wish, e.g. index: 2
will scroll to the third instance
https://twitter.com/mobile__dev/status/1656399126962278401?cxt=HHwWgsDUjdyO2_wtAAAA
This might also help give a little info on using Compose
So, like I posted in my comment above, I migrated to using IDs. I don't care about the index so the index of 0 is fine. Here is my script now:
#tags:
# - smoke-test
env:
LIST_NAME: ${Math.random().toString(20).substr(2, 6)} # Totally arbitrary and random string
---
- launchApp
- tapOn: "Explore"
- scrollUntilVisible:
element:
id: "star_repo_button"
direction: DOWN
- tapOn:
id: "star_repo_button"
- tapOn:
id: "add_to_list_button"
I am applying these testTags
in code correctly and Android Studio sees them, but Maestro Studio does not. I think that is where the issue is.
Ok, I fixed the issue above. Things seem stabler using test tags for sure, but I am still having random issues where the test can't find things that are clearly on the screen. Is this is known issue at all?
Glad to hear you fixed the issue above @stevepopovich! We are not aware of any flakiness when using compose, so if you would be able to post a reproduction scenario here we will take a look.
We have a few fixes that should address missing elements. Let's check again with the next version of Maestro 1.29.0 once it's out.
Sounds good, sorry I have moved away from this project temporarily.
Describe the bug Hello from GitHub! We are evaluating using Maestro to do some smoke testing on our app. So far, the experience has been pretty excellent. Thanks for building this awesome library!
That being said, we have hit some blockers. Running Maestro tests on our
Explore
tab has been inconsistent to say the least.To Reproduce
Explore
tab. (my script is below)Expected behavior The test should things by string and ID and interact with the Feed as expected
Actual behavior
Most of the time, the test cannot detect newly added
Lists
. Sometimes (maybe 30% of the time) it can find the ID of a Star button. Sometimes (rarely, but happens maybe 15% of the time), theFOLLOW
button gets randomly double tapped.Basically, the test is so flakey is not something we could use.
Environment information (please complete the following information):
Workspace (if applicable)
Assume that I added the
id
s viatestTag
here correctly. They are not in production code, but I know I added them correctly because I have written many other tests this way and this test passes sometimes.Additional context
This screen is quite complex with data that is different every run and for every user. The screen is also written in Compose.