新增启动参数直达首页与个人中心页面,引入 AppUITestRouteDriver 与 UITestSession 共享登录,并重构各模块用例的导航断言逻辑。 Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.4 KiB
Swift
50 lines
1.4 KiB
Swift
//
|
||
// 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()
|
||
}
|
||
}
|
||
}
|