优化 UI Test 路由直达与会话复用,提升自定义 TabBar 下的稳定性。

新增启动参数直达首页与个人中心页面,引入 AppUITestRouteDriver 与 UITestSession 共享登录,并重构各模块用例的导航断言逻辑。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-26 11:25:36 +08:00
parent 0c01ee26c3
commit aac8458b04
31 changed files with 587 additions and 166 deletions

View File

@ -18,9 +18,32 @@ enum TabBarNavigator {
/// Tab
static func select(_ tab: Tab, app: SuixinkanApp, file: StaticString = #filePath, line: UInt = #line) {
let button = app.application.buttons[tab.rawValue]
let button = bottomTabButton(named: tab.rawValue, in: app)
XCTAssertTrue(button.waitForExistence(timeout: 8), "未找到 Tab\(tab.rawValue)", file: file, line: line)
button.tap()
app.waitForGlobalLoadingToDisappear()
}
/// TabBar Tab
private static func bottomTabButton(named title: String, in app: SuixinkanApp) -> XCUIElement {
let candidates = app.application.buttons.matching(NSPredicate(format: "label == %@", title))
let screenHeight = app.application.windows.element(boundBy: 0).frame.height
var bestMatch: XCUIElement?
var bestY: CGFloat = -1
for index in 0..<candidates.count {
let candidate = candidates.element(boundBy: index)
guard candidate.exists else { continue }
let midY = candidate.frame.midY
guard midY > screenHeight * 0.72 else { continue }
if midY > bestY {
bestMatch = candidate
bestY = midY
}
}
return bestMatch ?? candidates.firstMatch
}
}