Files
sing-box-for-apple/SFMUITests/SnapshotTests.swift
T
2026-02-08 18:23:42 +08:00

79 lines
2.4 KiB
Swift

import XCTest
@MainActor
final class SnapshotTests: XCTestCase {
let app = XCUIApplication()
override func setUpWithError() throws {
continueAfterFailure = false
app.terminate()
configureLanguage()
if let value = ProcessInfo.processInfo.environment["SCREENSHOT_WINDOW_PIXEL_HEIGHT"] {
app.launchEnvironment["SCREENSHOT_WINDOW_PIXEL_HEIGHT"] = value
}
if let value = ProcessInfo.processInfo.environment["SCREENSHOT_WINDOW_HEIGHT"] {
app.launchEnvironment["SCREENSHOT_WINDOW_HEIGHT"] = value
}
if let page = screenshotPage() {
app.launchEnvironment["SCREENSHOT_PAGE"] = page
} else {
app.launchEnvironment["SCREENSHOT_PAGE"] = ""
}
setupSnapshot(app)
app.launch()
}
private func configureLanguage() {
let environment = ProcessInfo.processInfo.environment
var language = environment["SCREENSHOT_LANGUAGE"]?
.trimmingCharacters(in: .whitespacesAndNewlines)
var locale = environment["SCREENSHOT_LOCALE"]?
.trimmingCharacters(in: .whitespacesAndNewlines)
if language == nil || language?.isEmpty == true {
let cached = loadScreenshotLanguage()
language = cached.language
if locale == nil || locale?.isEmpty == true {
locale = cached.locale
}
}
guard let language, !language.isEmpty else {
return
}
app.launchArguments += ["-AppleLanguages", "(\(language))"]
app.launchEnvironment["SCREENSHOT_LANGUAGE"] = language
if let locale, !locale.isEmpty {
app.launchArguments += ["-AppleLocale", locale]
app.launchEnvironment["SCREENSHOT_LOCALE"] = locale
}
}
private func screenshotPage() -> String? {
let testName = name
if testName.contains("test01Dashboard") {
return "dashboard"
}
if testName.contains("test02Logs") {
return "logs"
}
if testName.contains("test03Settings") {
return "settings"
}
return nil
}
func test01Dashboard() {
sleep(1)
snapshot("01_Dashboard")
}
func test02Logs() {
sleep(1)
snapshot("02_Logs")
}
func test03Settings() {
sleep(1)
snapshot("03_Settings")
}
}