Summary
XcodeBuildMCP v2.6.1 fixed the important tab automation issue: native UITabBar items are now discoverable and tappable through snapshot-ui. I verified this with XcodeBuildMCP 2.6.2.
There may still be a smaller SwiftUI identifier propagation issue: an .accessibilityIdentifier(...) applied to a SwiftUI.Tab(...) does not appear on the native tab target emitted by snapshot-ui.
This is not blocking automation, because agents can target tabs by role=tab plus visible label. I am filing this as a maybe-bug / enhancement request to clarify whether the identifier can be surfaced or whether this is expected SwiftUI/UIKit behavior.
Example SwiftUI shape
TabView(selection: $selectedTab) {
SwiftUI.Tab("Wheels", systemImage: "arrow.trianglehead.2.clockwise", value: Tab.wheels) {
NavigationStack {
WheelsView()
}
.accessibilityIdentifier("screen_wheels")
}
.accessibilityLabel("Wheels")
.accessibilityIdentifier("tab_wheels")
}
Observed snapshot-ui behavior
The native tab item is discovered and tappable, but the identifier field is empty:
eNN|tap|tab|Dashboard|1|
eNN|tap|tab|Wheels|0|
eNN|tap|tab|Positions|0|
eNN|tap|tab|Spec Trades|0|
eNN|tap|tab|Trade Log|0|
Tapping the Wheels tab element reference works and changes to the Wheels screen.
Expected or requested behavior
If SwiftUI forwards the identifier in a way XcodeBuildMCP can observe, it would be useful for snapshot-ui to surface tab_wheels on the native tab target.
If SwiftUI does not forward that identifier to the underlying UITabBarItem, documentation confirming that tab automation should use role + label would also resolve the ambiguity.
Environment
- XcodeBuildMCP: 2.6.2
- Relevant fix already present: v2.6.1 tab bar item discovery fix
- App UI: SwiftUI
TabView using SwiftUI.Tab
Summary
XcodeBuildMCP v2.6.1 fixed the important tab automation issue: native
UITabBaritems are now discoverable and tappable throughsnapshot-ui. I verified this with XcodeBuildMCP 2.6.2.There may still be a smaller SwiftUI identifier propagation issue: an
.accessibilityIdentifier(...)applied to aSwiftUI.Tab(...)does not appear on the native tab target emitted bysnapshot-ui.This is not blocking automation, because agents can target tabs by
role=tabplus visible label. I am filing this as a maybe-bug / enhancement request to clarify whether the identifier can be surfaced or whether this is expected SwiftUI/UIKit behavior.Example SwiftUI shape
Observed
snapshot-uibehaviorThe native tab item is discovered and tappable, but the identifier field is empty:
Tapping the
Wheelstab element reference works and changes to the Wheels screen.Expected or requested behavior
If SwiftUI forwards the identifier in a way XcodeBuildMCP can observe, it would be useful for
snapshot-uito surfacetab_wheelson the native tab target.If SwiftUI does not forward that identifier to the underlying
UITabBarItem, documentation confirming that tab automation should use role + label would also resolve the ambiguity.Environment
TabViewusingSwiftUI.Tab