Files
suixinkan_ios_new/suixinkanUITests/Orders/OrdersFlowUITests.swift
汉秋 79e735f628 为 TabBar 和扫码页补充 accessibilityIdentifier,并在模拟器/UI Test 中禁用真实相机采集。
预初始化各 Tab 路由容器,修正 iOS 17 ContentUnavailableView 调用,提升自定义 TabBar 与扫码流程的 UI Test 稳定性。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 09:34:09 +08:00

76 lines
2.8 KiB
Swift

//
// OrdersFlowUITests.swift
// suixinkanUITests
//
import XCTest
final class OrdersFlowUITests: AuthenticatedUITestCase {
///
func testStoreOrderDetailFlow() throws {
TabBarNavigator.select(.orders, app: app)
app.application.staticTexts["订单管理"].tap()
app.waitForGlobalLoadingToDisappear()
let firstOrderCard = app.application.otherElements
.matching(NSPredicate(format: "identifier BEGINSWITH 'orders.store.card.'"))
.firstMatch
if !firstOrderCard.waitForExistence(timeout: 10) {
throw XCTSkip("测试账号当前景区下暂无门店订单,跳过详情流测试。")
}
firstOrderCard.tap()
NavigationAssertions.waitForNavigationTitle("订单详情", in: app)
BackNavigator.goBack(app: app)
}
///
func testWriteOffOrderDetailFlow() throws {
TabBarNavigator.select(.orders, app: app)
app.application.staticTexts["核销订单"].tap()
app.waitForGlobalLoadingToDisappear()
let firstDetailButton = app.application.buttons
.matching(NSPredicate(format: "identifier BEGINSWITH 'orders.writeoff.detail.'"))
.firstMatch
if !firstDetailButton.waitForExistence(timeout: 10) {
throw XCTSkip("测试账号当前景区下暂无核销订单,跳过详情流测试。")
}
firstDetailButton.tap()
NavigationAssertions.waitForNavigationTitle("核销订单详情", in: app)
BackNavigator.goBack(app: app)
}
///
func testDepositOrderFlow() throws {
app = try UITestSession.relaunch(openMenu: "押金订单详情")
NavigationAssertions.waitForNavigationTitle("押金订单", in: app)
let firstCell = app.application.cells.element(boundBy: 0)
if firstCell.waitForExistence(timeout: 8) {
firstCell.tap()
NavigationAssertions.waitForNavigationTitle("押金订单详情", in: app)
BackNavigator.goBack(app: app)
} else {
throw XCTSkip("测试账号暂无押金订单,跳过详情流测试。")
}
}
///
func testScannerCanOpenAndClose() {
TabBarNavigator.select(.orders, app: app)
let scanButton = app.application.buttons["main.scan"]
XCTAssertTrue(scanButton.waitForExistence(timeout: 6))
scanButton.tap()
let closeButton = app.application.buttons["scanner.close"]
XCTAssertTrue(closeButton.waitForExistence(timeout: 8))
closeButton.tap()
NavigationAssertions.waitForNavigationTitle("订单", in: app)
}
}