优化 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

@ -0,0 +1,69 @@
//
// UITestSession.swift
// suixinkanUITests
//
// Created by Codex on 2026/6/26.
//
import XCTest
/// App
enum UITestSession {
private static var sharedApp: SuixinkanApp?
/// App
static func app(file: StaticString = #filePath, line: UInt = #line) throws -> SuixinkanApp {
if let sharedApp {
if sharedApp.application.state != .runningForeground {
sharedApp.launch()
}
return sharedApp
}
let launched = try UITestAuthenticatedSession.launchLoggedIn(file: file, line: line)
sharedApp = launched
return launched
}
/// App Keychain
@discardableResult
static func relaunch(
openMenu menuTitle: String,
file: StaticString = #filePath,
line: UInt = #line
) throws -> SuixinkanApp {
sharedApp?.application.terminate()
let relaunched = try UITestAuthenticatedSession.launchLoggedIn(
openMenuTitle: menuTitle,
file: file,
line: line
)
sharedApp = relaunched
return relaunched
}
/// App Keychain
@discardableResult
static func relaunch(
openProfile route: String,
file: StaticString = #filePath,
line: UInt = #line
) throws -> SuixinkanApp {
sharedApp?.application.terminate()
let relaunched = try UITestAuthenticatedSession.launchLoggedIn(
openProfileRoute: route,
file: file,
line: line
)
sharedApp = relaunched
return relaunched
}
/// 使
static func invalidate() {
sharedApp?.application.terminate()
sharedApp = nil
}
}