集成 MJRefresh 并重构主 TabBar 为系统 TabView 样式。

新增 SwiftUI 桥接层与单元测试,更新 Tab 图标资源命名和多倍图,同步调整 UI Test 的 Tab/扫码定位逻辑。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-29 10:22:53 +08:00
parent 79e735f628
commit 8997d1ba1c
140 changed files with 6574 additions and 877 deletions

View File

@ -78,10 +78,7 @@ final class SuixinkanApp {
/// Tab
var isOnMainTabs: Bool {
application.buttons[TabBarNavigator.Tab.home.identifier].exists
|| application.buttons[TabBarNavigator.Tab.orders.identifier].exists
|| application.buttons[TabBarNavigator.Tab.statistics.identifier].exists
|| application.buttons[TabBarNavigator.Tab.profile.identifier].exists
TabBarNavigator.isVisible(in: self)
}
/// Tab

View File

@ -37,7 +37,31 @@ enum TabBarNavigator {
app.waitForGlobalLoadingToDisappear()
}
/// TabBar Tab
///
static func scannerButton(in app: SuixinkanApp) -> XCUIElement {
let identifiedButton = app.application.buttons["main.scan"]
if identifiedButton.exists {
return identifiedButton
}
let systemTabButton = app.application.tabBars.buttons["扫码核销"]
if systemTabButton.exists {
return systemTabButton
}
return bottomTabButton(named: "扫码核销", in: app)
}
/// Tab
static func isVisible(in app: SuixinkanApp) -> Bool {
Tab.allCases.contains { tab in
app.application.tabBars.buttons[tab.rawValue].exists
|| app.application.buttons[tab.identifier].exists
|| app.application.buttons[tab.rawValue].exists
}
}
/// TabBar TabBar Tab
private static func bottomTabButton(named title: String, in app: SuixinkanApp) -> XCUIElement {
if let tab = Tab(rawValue: title) {
let identifiedButton = app.application.buttons[tab.identifier]
@ -46,6 +70,11 @@ enum TabBarNavigator {
}
}
let systemTabButton = app.application.tabBars.buttons[title]
if systemTabButton.exists {
return systemTabButton
}
let candidates = app.application.buttons.matching(NSPredicate(format: "label == %@", title))
let screenHeight = app.application.windows.element(boundBy: 0).frame.height
var bestMatch: XCUIElement?