mobile-dev-inc / maestro

Painless Mobile UI Automation
https://maestro.mobile.dev/
Apache License 2.0
5.69k stars 260 forks source link

Maestro tests not finding buttons via strings or ids, with flakey behavior. #1056

Open stevepopovich opened 1 year ago

stevepopovich commented 1 year ago

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

  1. Install the Android GitHub Mobile app.
  2. Log in.
  3. Run script that interacts with the 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), the FOLLOW 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)

appId: com.github.android
# tags:
#  - smoke-test
env:
  LIST_NAME: ${Math.random().toString(20).substr(2, 6)} # Totally arbitrary and random string
---
- launchApp
- tapOn: "Explore"
- scrollUntilVisible:
    element: "STAR"
    direction: DOWN
- tapOn: "STAR"
- tapOn: "Add to list"
- waitForAnimationToEnd
- tapOn: "Create list"
- inputText: ${LIST_NAME}
- tapOn: "CREATE"
- waitForAnimationToEnd
- tapOn: ${LIST_NAME}
- waitForAnimationToEnd
- back
- waitForAnimationToEnd
- assertVisible:
    text: ${LIST_NAME}
- scrollUntilVisible:
    element:
      id: "Follow user"
    direction: DOWN
- tapOn:
    id: "Follow user"
- waitForAnimationToEnd
- scrollUntilVisible:
      element:
        id: "Unfollow user"
      direction: DOWN
- tapOn:
     id: "Unfollow user"
- assertVisible:
    id: "Follow user"

Assume that I added the ids via testTag 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.

simon-gilmurray commented 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"

stevepopovich commented 1 year ago

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?

simon-gilmurray commented 1 year ago

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.

stevepopovich commented 1 year ago

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 testTags. I converted the script above to use testTags. So the STAR button has a testTag. I confirmed that in Android studio.

Screenshot 2023-05-10 at 6 01 00 PM

But Maestro does not see that:

Screenshot 2023-05-10 at 6 00 41 PM

Here is my Maestro hierarchy

hierarchy
``` { "attributes" : { }, "children" : [ { "attributes" : { "ignoreBoundsFiltering" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/rounded_corners_top", "clickable" : "false", "bounds" : "[0,0][1440,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/display_cutout", "clickable" : "false", "bounds" : "[0,0][1440,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,0][1440,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/status_bar_launch_animation_container", "clickable" : "false", "bounds" : "[0,0][1440,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/status_bar_container", "clickable" : "false", "bounds" : "[0,0][1440,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/status_bar", "clickable" : "false", "bounds" : "[0,0][1440,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/status_bar_contents", "clickable" : "false", "bounds" : "[136,0][1370,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[164,0][753,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/status_bar_left_side", "clickable" : "false", "bounds" : "[164,0][753,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "5:58", "accessibilityText" : "5:58 PM", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/clock", "clickable" : "false", "bounds" : "[164,0][267,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/notification_icon_area", "clickable" : "false", "bounds" : "[267,0][753,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/notification_icon_area_inner", "clickable" : "false", "bounds" : "[267,0][753,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/notificationIcons", "clickable" : "false", "bounds" : "[267,0][753,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[267,0][344,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[344,0][421,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[421,0][498,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[498,0][575,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[575,0][652,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "GitHub notification: Run failed", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[600,0][677,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/system_icon_area", "clickable" : "false", "bounds" : "[753,0][1342,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/system_icons", "clickable" : "false", "bounds" : "[753,0][1342,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/statusIcons", "clickable" : "false", "bounds" : "[753,0][1315,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "Wifi signal full.", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/wifi_combo", "clickable" : "false", "bounds" : "[1179,29][1241,106]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/wifi_group", "clickable" : "false", "bounds" : "[1188,29][1241,106]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/wifi_combo", "clickable" : "false", "bounds" : "[1188,41][1241,94]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/wifi_signal", "clickable" : "false", "bounds" : "[1188,41][1241,94]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "Phone signal full.", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/mobile_combo", "clickable" : "false", "bounds" : "[1241,29][1294,106]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/mobile_group", "clickable" : "false", "bounds" : "[1241,29][1294,106]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[1241,41][1294,94]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/mobile_signal", "clickable" : "false", "bounds" : "[1241,41][1294,94]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "Battery 100 percent.", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.android.systemui:id/battery", "clickable" : "false", "bounds" : "[1315,0][1342,136]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[1315,45][1342,91]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,0][1440,3120]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,0][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,136][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/action_bar_root", "clickable" : "false", "bounds" : "[0,136][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "android:id/content", "clickable" : "false", "bounds" : "[0,136][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,136][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/fragment_container", "clickable" : "false", "bounds" : "[0,136][1440,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,136][1440,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,136][1440,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,136][1440,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,136][1440,332]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "Explore", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[56,184][315,284]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,332][1440,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "sirdeggen forked a repository", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[196,347][1324,413]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "4h", "accessibilityText" : "4 hours ago", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[1352,345][1412,415]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[28,480][1412,1264]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[28,473][786,641]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "sCrypt-Inc", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[154,522][404,592]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "/", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[418,522][436,592]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "scrypt-ts-lib", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[450,522][744,592]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "A library for building smart contracts with `scrypt-ts`. ", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[70,634][1370,782]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[38,780][206,948]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "6", "accessibilityText" : "6", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[140,824][175,888]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "TypeScript", "accessibilityText" : "TypeScript", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[301,824][587,904]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[70,888][514,1054]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "4 contributors", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[140,932][514,1012]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[70,1054][1370,1222]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "STAR", "accessibilityText" : "Star repository", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[692,1103][819,1173]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[70,1061][1370,1215]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[28,480][1412,1264]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "shayfrendt starred a repository", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[196,1359][1325,1425]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "5h", "accessibilityText" : "5 hours ago", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[1353,1357][1412,1427]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[28,1492][1412,2276]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[28,1485][916,1653]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "facebookresearch", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[154,1534][581,1604]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "/", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[595,1534][613,1604]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "ImageBind", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[627,1534][874,1604]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "ImageBind One Embedding Space to Bind Them All", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[70,1646][1370,1794]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[70,1792][255,1900]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "3.3k", "accessibilityText" : "3.3k", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[140,1836][255,1900]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "Python", "accessibilityText" : "Python", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[381,1836][568,1916]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[70,1900][510,2066]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "7 contributors", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[140,1944][510,2024]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[70,2066][1370,2234]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "STAR", "accessibilityText" : "Star repository", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[692,2115][819,2185]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[70,2073][1370,2227]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[28,1492][1412,2276]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "gavinmn followed HenSquared", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[196,2371][1325,2437]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "5h", "accessibilityText" : "5 hours ago", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[1353,2369][1412,2439]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[28,2504][1412,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "true", "bounds" : "[70,2546][1370,2714]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "HenSquared", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[266,2550][597,2630]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "Henry", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[266,2630][430,2710]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "Engineer at GitHub working on the iOS app\r\n", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[70,2756][1222,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[28,2504][1412,2868]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/bottom_navigation", "clickable" : "false", "bounds" : "[0,2868][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "", "clickable" : "false", "bounds" : "[0,2868][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "Home", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/home", "clickable" : "true", "bounds" : "[0,2868][360,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_container", "clickable" : "false", "bounds" : "[138,2896][222,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_view", "clickable" : "false", "bounds" : "[138,2896][222,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_labels_group", "clickable" : "false", "bounds" : "[121,2983][238,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "Home", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_small_label_view", "clickable" : "false", "bounds" : "[121,2983][238,3043]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "Notifications", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/notifications", "clickable" : "true", "bounds" : "[360,2868][720,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_container", "clickable" : "false", "bounds" : "[498,2896][582,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_view", "clickable" : "false", "bounds" : "[498,2896][582,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_labels_group", "clickable" : "false", "bounds" : "[414,2983][665,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "Notifications", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_small_label_view", "clickable" : "false", "bounds" : "[414,2983][665,3043]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "Explore", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/explore", "clickable" : "false", "bounds" : "[720,2868][1080,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "true" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_container", "clickable" : "false", "bounds" : "[858,2896][942,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "true" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_view", "clickable" : "false", "bounds" : "[858,2896][942,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "true" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : true } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : true }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_labels_group", "clickable" : "false", "bounds" : "[825,2983][974,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "true" }, "children" : [ { "attributes" : { "text" : "Explore", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_large_label_view", "clickable" : "false", "bounds" : "[825,2983][974,3043]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "true" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : true } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : true } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : true }, { "attributes" : { "text" : "", "accessibilityText" : "Profile", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/profile", "clickable" : "true", "bounds" : "[1080,2868][1440,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_container", "clickable" : "false", "bounds" : "[1218,2896][1302,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_icon_view", "clickable" : "false", "bounds" : "[1218,2896][1302,2980]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_labels_group", "clickable" : "false", "bounds" : "[1196,2983][1323,3064]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ { "attributes" : { "text" : "Profile", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "com.github.android.dev:id/navigation_bar_item_small_label_view", "clickable" : "false", "bounds" : "[1196,2983][1323,3043]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : true, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false }, { "attributes" : { "text" : "", "accessibilityText" : "", "hintText" : "", "ignoreBoundsFiltering" : "false", "resource-id" : "android:id/navigationBarBackground", "clickable" : "false", "bounds" : "[0,3064][1440,3120]", "enabled" : "true", "focused" : "false", "checked" : "false", "selected" : "false" }, "children" : [ ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : true, "focused" : false, "checked" : false, "selected" : false } ], "clickable" : false, "enabled" : false, "focused" : false, "checked" : false, "selected" : false } ] } ```
stevepopovich commented 1 year ago

Maybe this has to do with the sheer complexity of this screen...

simon-gilmurray commented 1 year ago

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

simon-gilmurray commented 1 year ago

https://twitter.com/mobile__dev/status/1656399126962278401?cxt=HHwWgsDUjdyO2_wtAAAA

This might also help give a little info on using Compose

stevepopovich commented 1 year ago

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.

stevepopovich commented 1 year ago

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?

axelniklasson commented 1 year ago

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.

ArthurSav commented 1 year ago

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.

stevepopovich commented 1 year ago

Sounds good, sorry I have moved away from this project temporarily.