优化 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,57 @@
//
// UITestTapHelper.swift
// suixinkanUITests
//
// Created by Codex on 2026/6/26.
//
import XCTest
/// SwiftUI
enum UITestTapHelper {
///
static func tapLabel(
_ label: String,
in app: SuixinkanApp,
timeout: TimeInterval = 8,
file: StaticString = #filePath,
line: UInt = #line
) {
if let target = findLabel(label, in: app, timeout: timeout) {
target.tap()
app.waitForGlobalLoadingToDisappear()
return
}
app.application.swipeUp()
if let target = findLabel(label, in: app, timeout: 2) {
target.tap()
app.waitForGlobalLoadingToDisappear()
return
}
XCTFail("未找到可点击文案:\(label)", file: file, line: line)
}
///
private static func findLabel(_ label: String, in app: SuixinkanApp, timeout: TimeInterval) -> XCUIElement? {
let button = app.application.buttons[label]
if button.waitForExistence(timeout: timeout) {
return button
}
let containsButton = app.application.buttons.matching(
NSPredicate(format: "label CONTAINS %@", label)
).firstMatch
if containsButton.waitForExistence(timeout: 2) {
return containsButton
}
let text = app.application.staticTexts[label]
if text.waitForExistence(timeout: 2) {
return text
}
return nil
}
}