优化 UI Test 路由直达与会话复用,提升自定义 TabBar 下的稳定性。
新增启动参数直达首页与个人中心页面,引入 AppUITestRouteDriver 与 UITestSession 共享登录,并重构各模块用例的导航断言逻辑。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
49
suixinkanUITests/Support/UITestNavigation.swift
Normal file
49
suixinkanUITests/Support/UITestNavigation.swift
Normal file
@ -0,0 +1,49 @@
|
||||
//
|
||||
// UITestNavigation.swift
|
||||
// suixinkanUITests
|
||||
//
|
||||
// Created by Codex on 2026/6/26.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
/// 用例间恢复到可继续测试的稳定导航状态。
|
||||
enum UITestNavigation {
|
||||
/// 将 App 恢复到主 Tab 首页,尽量弹出深层导航栈。
|
||||
static func resetToHome(app: SuixinkanApp, file: StaticString = #filePath, line: UInt = #line) {
|
||||
app.application.activate()
|
||||
app.waitForGlobalLoadingToDisappear()
|
||||
|
||||
if app.isOnLoginScreen {
|
||||
return
|
||||
}
|
||||
|
||||
popToMainTabsIfNeeded(app: app)
|
||||
if app.isOnMainTabs {
|
||||
TabBarNavigator.select(.home, app: app, file: file, line: line)
|
||||
}
|
||||
}
|
||||
|
||||
/// 连续返回直到回到主 Tab 或无法继续返回。
|
||||
private static func popToMainTabsIfNeeded(app: SuixinkanApp) {
|
||||
for _ in 0..<8 {
|
||||
if app.isOnMainTabs {
|
||||
return
|
||||
}
|
||||
|
||||
BackNavigator.dismissCustomTopBarIfNeeded(app: app)
|
||||
if app.isOnMainTabs {
|
||||
return
|
||||
}
|
||||
|
||||
let navigationBar = app.application.navigationBars.element(boundBy: 0)
|
||||
guard navigationBar.exists else { break }
|
||||
|
||||
let backButton = navigationBar.buttons.element(boundBy: 0)
|
||||
guard backButton.waitForExistence(timeout: 1) else { break }
|
||||
|
||||
backButton.tap()
|
||||
app.waitForGlobalLoadingToDisappear()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user