//
//  UITestNavigation.swift
//  suixinkanUITests
//
//  Created by Codex on 2026/6/26.
//

import XCTest

/// 用例间恢复到可继续测试的稳定导航状态。
enum UITestNavigation {
    /// 将 App 恢复到主 Tab 首页，尽量弹出深层导航栈。
    static func resetToHome(app: SuixinkanApp, file: StaticString = #filePath, line: UInt = #line) {
        app.application.activate()
        app.waitForGlobalLoadingToDisappear()

        if app.isOnLoginScreen {
            return
        }

        popToMainTabsIfNeeded(app: app)
        if app.isOnMainTabs {
            TabBarNavigator.select(.home, app: app, file: file, line: line)
        }
    }

    /// 连续返回直到回到主 Tab 或无法继续返回。
    private static func popToMainTabsIfNeeded(app: SuixinkanApp) {
        for _ in 0..<8 {
            if app.isOnMainTabs {
                return
            }

            BackNavigator.dismissCustomTopBarIfNeeded(app: app)
            if app.isOnMainTabs {
                return
            }

            let navigationBar = app.application.navigationBars.element(boundBy: 0)
            guard navigationBar.exists else { break }

            let backButton = navigationBar.buttons.element(boundBy: 0)
            guard backButton.waitForExistence(timeout: 1) else { break }

            backButton.tap()
            app.waitForGlobalLoadingToDisappear()
        }
    }
}
