Skip to content

Refuse a claim of absence on a lock screen, and ref a list's wrapper (CHALLENGES 391, 392) - #336

Merged
lana-20 merged 1 commit into
mainfrom
wait-on-a-locked-screen
Nov 5, 2026
Merged

lana-20 merged 1 commit into
mainfrom
wait-on-a-locked-screen

Conversation

@lana-20

@lana-20 lana-20 commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Two gaps from the verification comments on #327 and #329.

A wait on a locked iOS device (391)

iOS reads its lock screen, so a target is simply absent from it. Three forms of wait reported success about an app nobody could see, and the rest never named the lock.

On a locked iOS simulator Before Now
wait X --for hidden exit 0, "is hidden" exit 3, names the lock
wait X --not exit 0, "no longer visible" exit 3, names the lock
wait X --for count --count 0 exit 0, "matches 0" exit 3, names the lock
wait X exit 6, "not on screen" exit 3, names the lock
find X exit 0, "No element matches" exit 3, names the lock
text X exit 4, "no element matches" exit 3, names the lock

Android already refused all six. A wait to show still runs its timeout, for a person unlocking by hand. On an unlocked home screen these answer as before.

wait testid=table (392)

Android gave @e2 table (list) and iOS (no ref) table. This is not a regression from #330: before it, iOS returned no element at all. React Native on iOS puts the testID on a plain view around the ScrollView, on exactly the same rectangle.

A match the map filters out now takes the ref of the one mapped element on its own rectangle, in wait, scroll-to and find. A wrapper around a smaller control still has no ref, since its ref would touch something other than what matched. iOS still labels it ScrollView where Android says table.

Measured

  • lock.sh and wait-states.sh fail on main on the iOS simulator and pass here on both platforms.
  • locators passes on both; mobium-app and dialogs on iOS.
  • A sweep of test IDs on the first screens of 14 apps gave list refs only to real list containers. 42 iOS waits did not finish within the sweep's 0.7 s limit, and were not classified.

Not settled here

…(CHALLENGES 391, 392)

On the iOS 26.5 simulator, wait --for hidden, --not and --count 0 answered exit 0
on a locked device, and a timeout never named the lock. They now answer
device_not_ready, as do find and text on a miss. Android already refused them.

wait testid=table gave Android the list's ref and iOS none: React Native on iOS
puts the testID on a plain view on the list's exact rectangle. Such a wrapper now
takes the ref. A wrapper around a smaller control does not, since its ref would
touch something else.

lock.sh and wait-states.sh fail on main on the iOS simulator and pass here on both
platforms. locators passes on both; mobium-app and dialogs on iOS.
@lana-20
lana-20 merged commit f3de402 into main Nov 5, 2026
10 checks passed
@lana-20
lana-20 deleted the wait-on-a-locked-screen branch November 5, 2026 06:02
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.

1 participant