























@@ -15,13 +15,12 @@
1515import Foundation
1616import XCTest
171718-var deviceLanguage = ""
19-var locale = ""
20-18+@MainActor
2119func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) {
2220Snapshot.setupSnapshot(app, waitForAnimations: waitForAnimations)
2321}
242223+@MainActor
2524func snapshot(_ name: String, waitForLoadingIndicator: Bool) {
2625if waitForLoadingIndicator {
2726Snapshot.snapshot(name)
@@ -33,6 +32,7 @@ func snapshot(_ name: String, waitForLoadingIndicator: Bool) {
3332/// - Parameters:
3433/// - name: The name of the snapshot
3534/// - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait.
35+@MainActor
3636func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
3737Snapshot.snapshot(name, timeWaitingForIdle: timeout)
3838}
@@ -52,13 +52,16 @@ enum SnapshotError: Error, CustomDebugStringConvertible {
5252}
53535454@objcMembers
55+@MainActor
5556open class Snapshot: NSObject {
5657static var app: XCUIApplication?
5758static var waitForAnimations = true
5859static var cacheDirectory: URL?
5960static var screenshotsDirectory: URL? {
6061return cacheDirectory?.appendingPathComponent("screenshots", isDirectory: true)
6162}
63+static var deviceLanguage = ""
64+static var currentLocale = ""
62656366open class func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) {
6467@@ -103,17 +106,17 @@ open class Snapshot: NSObject {
103106104107do {
105108let trimCharacterSet = CharacterSet.whitespacesAndNewlines
106-locale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet)
109+currentLocale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet)
107110} catch {
108111NSLog("Couldn't detect/set locale...")
109112}
110113111-if locale.isEmpty && !deviceLanguage.isEmpty {
112-locale = Locale(identifier: deviceLanguage).identifier
114+if currentLocale.isEmpty && !deviceLanguage.isEmpty {
115+currentLocale = Locale(identifier: deviceLanguage).identifier
113116}
114117115-if !locale.isEmpty {
116- app.launchArguments += ["-AppleLocale", "\"\(locale)\""]
118+if !currentLocale.isEmpty {
119+ app.launchArguments += ["-AppleLocale", "\"\(currentLocale)\""]
117120}
118121}
119122@@ -165,7 +168,7 @@ open class Snapshot: NSObject {
165168}
166169167170let screenshot = XCUIScreen.main.screenshot()
168-#if os(iOS)
171+#if os(iOS) && !targetEnvironment(macCatalyst)
169172let image = XCUIDevice.shared.orientation.isLandscape ? fixLandscapeOrientation(image: screenshot.image) : screenshot.image
170173#else
171174let image = screenshot.image
@@ -181,7 +184,7 @@ open class Snapshot: NSObject {
181184182185let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png")
183186#if swift(<5.0)
184-UIImagePNGRepresentation(image)?.write(to: path, options: .atomic)
187+try UIImagePNGRepresentation(image)?.write(to: path, options: .atomic)
185188#else
186189try image.pngData()?.write(to: path, options: .atomic)
187190#endif
@@ -281,6 +284,7 @@ private extension XCUIElementQuery {
281284return self.containing(isNetworkLoadingIndicator)
282285}
283286287+@MainActor
284288var deviceStatusBars: XCUIElementQuery {
285289guard let app = Snapshot.app else {
286290fatalError("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
@@ -306,4 +310,4 @@ private extension CGFloat {
306310307311// Please don't remove the lines below
308312// They are used to detect outdated configuration files
309-// SnapshotHelperVersion [1.27]
313+// SnapshotHelperVersion [1.30]
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。