新增完整 UI Test 回归套件,并完善启动隔离逻辑。

按模块拆分 XCUITest 用例与 Support 基础设施,UI Test 运行时跳过推送与排队 WebSocket,并将 Podfile 最低版本对齐 iOS 16。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-26 10:45:00 +08:00
parent 703078352c
commit 0c01ee26c3
39 changed files with 1533 additions and 231 deletions

View File

@ -0,0 +1,43 @@
//
// UITestExpectationVerifier.swift
// suixinkanUITests
//
// Created by Codex on 2026/6/26.
//
import XCTest
///
enum UITestExpectationVerifier {
///
static func verify(
_ expectation: UITestHomeMenuCatalog.Expectation,
app: SuixinkanApp,
file: StaticString = #filePath,
line: UInt = #line
) {
switch expectation {
case .navigationTitle(let title):
NavigationAssertions.waitForNavigationTitle(title, in: app, file: file, line: line)
case .anyNavigationTitle(let titles):
_ = NavigationAssertions.waitForAnyNavigationTitle(titles, in: app, file: file, line: line)
case .tab(let tab):
switch tab {
case .orders:
NavigationAssertions.waitForNavigationTitle("订单", in: app, file: file, line: line)
case .statistics:
NavigationAssertions.waitForNavigationTitle("数据", in: app, file: file, line: line)
case .home:
XCTAssertTrue(app.application.staticTexts["常用应用"].waitForExistence(timeout: 8) || app.application.staticTexts["请选择景区"].exists, file: file, line: line)
case .profile:
NavigationAssertions.waitForNavigationTitle("个人信息", in: app, file: file, line: line)
}
case .staticText(let text):
NavigationAssertions.waitForStaticText(text, in: app, file: file, line: line)
case .unsupportedPlaceholder(let title):
_ = NavigationAssertions.waitForAnyNavigationTitle([title], in: app, file: file, line: line)
}
NavigationAssertions.assertNotStuckOnLoading(app: app, file: file, line: line)
}
}