iOS: `_UIFloatingBarContainerView` counts as an occluder, so press/fill refuse everything above the tab bar
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 52/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- ios, react-native, typescript
- 领域
- mobile-dev, testing
调研方向
Start by tracing the press and fill entry points using the reproduced selectors and the snapshot --raw output. Compare the iOS occlusion behavior with the Android case in #1806, and use the coordinate press workaround as a baseline. Done means content above the tab bar is no longer rejected when the full-screen container passes touches through, while genuine occlusion remains protected.
由索引模型根据 Issue 内容生成。
描述
Summary
On an iOS simulator, press and fill refuse every element above the tab bar of a React Native app with:
Error (COMMAND_FAILED): Selector label="Add plant" is covered by another visible element and cannot be tapped safely
Nothing covers those elements on screen, and a coordinate press <x> <y> at the element's centre works. The node that counts as covering them is a full-screen UIKit container, _UIFloatingBarContainerView, which touches pass through. This looks like the iOS counterpart of #1806, where contentless full-screen containers counted as occluders on Android.
Repro
- agent-device 0.21.15 (also 0.20.10), iPhone 18 Pro simulator, driven through
agent-device proxy - App: an Expo SDK 57 app in Expo Go, with JS bottom tabs (
expo-router/js-tabs). It's the example app from avas-app/agent-bridge, but any screen with content above a tab bar should do.
agent-device open host.exp.Exponent "exp://<metro-host>:<port>" --platform ios --device "<sim>"
agent-device press 'label="Add plant"' # covered
agent-device fill 'id="plant-name"' "Fern" # covered (on the next screen)
agent-device find "Plants, tab" click # works: the tab bar sits outside the container
agent-device press 380 118 # works: same button by coordinates
snapshot -i marks every content node [covered].
Evidence
From snapshot --raw, the container is a sibling above the app content, full screen apart from the tab bar, and reported hittable:
{"index":122,"parentIndex":11,"type":"Toolbar","role":"_UIFloatingBarContainerView","label":"Toolbar","identifier":"Toolbar","rect":{"x":0,"y":0,"width":402,"height":791},"enabled":true,"depth":12,"hittable":true}
The content it "covers" is its sibling subtree at the same depth, with the same frame (0,0,402,791). The tab bar (y: 791) is outside the container's frame, which is why tab presses work.
Expected
A container with no content of its own that passes touches through (here _UIFloatingBarContainerView, possibly other _UI*Container* views) shouldn't count as an occluder. Or press/fill could fall back to the element's frame centre, the way a coordinate press works today.
Workaround
Look up the rect with get attrs <selector> --json and press/fill its centre by coordinates.
- 主要语言
- TypeScript
- 星标
- 4.7k
- 派生
- 304
- 平均合并
- 11 小时 6 分钟
- 30 天内合并 PR
- 521
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
callstack/agent-device 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 88/100
callstack/agent-device#2998 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
callstack/agent-device#2995 ·
维护者通常 1 天内回复
-
Proxy lease refuses every iOS install/open: connection platform 'ios' compared with internal 'apple'未关闭
难度 2/5 1-3 小时 新手友好度 78/100
callstack/agent-device#2962 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
callstack/agent-device#1869 ·
维护者通常 1 天内回复
-
Maestro `eraseText` fails on real Android devices: `test` and `replay` cannot opt in to the test IME未关闭
难度 3/5 1-2 天 新手友好度 74/100
callstack/agent-device#2997 ·
维护者通常 1 天内回复
查看 callstack/agent-device 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
microsoft/vscode-livepreview#876 ·
维护者通常 1 天内回复
-
needs-triage
难度 1/5 1 小时以内 新手友好度 90/100
JustJarethB/invoicer#54 ·
-
ICP 1.2.0 shows a scheduled task's interval in milliseconds under the label "Interval (In seconds)"未关闭Needs Triage Type/Bug
难度 2/5 1-3 小时 新手友好度 68/100
wso2/product-integrator#2585 ·
维护者通常 1 天内回复
-
check:passed streams:add
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
design
难度 2/5 1-3 小时 新手友好度 72/100
MTES-MCT/monitor-field#119 ·
维护者通常 1 天内回复