Mercurial > public > simoleon
annotate Simoleon/Helpers/SnapshotHelper.swift @ 171:70f0625bfcf1
Merge pull request #17 from denniscm190/development
open source project
committer: GitHub <noreply@github.com>
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Tue, 12 Oct 2021 16:17:35 +0200 |
parents | fastlane/SnapshotHelper.swift@05983a9275c1 fastlane/SnapshotHelper.swift@84137052813d |
children |
rev | line source |
---|---|
89
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // SnapshotHelper.swift |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // Example |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Felix Krause on 10/8/15. |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 // ----------------------------------------------------- |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 // IMPORTANT: When modifying this file, make sure to |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 // increment the version number at the very |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 // bottom of the file to notify users about |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 // the new SnapshotHelper.swift |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 // ----------------------------------------------------- |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 import Foundation |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 import XCTest |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 var deviceLanguage = "" |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 var locale = "" |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 Snapshot.setupSnapshot(app, waitForAnimations: waitForAnimations) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 func snapshot(_ name: String, waitForLoadingIndicator: Bool) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 if waitForLoadingIndicator { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 Snapshot.snapshot(name) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 } else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 Snapshot.snapshot(name, timeWaitingForIdle: 0) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 /// - Parameters: |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 /// - name: The name of the snapshot |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 /// - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait. |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 Snapshot.snapshot(name, timeWaitingForIdle: timeout) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 enum SnapshotError: Error, CustomDebugStringConvertible { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 case cannotFindSimulatorHomeDirectory |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 case cannotRunOnPhysicalDevice |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 var debugDescription: String { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 switch self { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 case .cannotFindSimulatorHomeDirectory: |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 return "Couldn't find simulator home location. Please, check SIMULATOR_HOST_HOME env variable." |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 case .cannotRunOnPhysicalDevice: |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 return "Can't use Snapshot on a physical device." |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 @objcMembers |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 open class Snapshot: NSObject { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
56 static var app: XCUIApplication? |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
57 static var waitForAnimations = true |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
58 static var cacheDirectory: URL? |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
59 static var screenshotsDirectory: URL? { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
60 return cacheDirectory?.appendingPathComponent("screenshots", isDirectory: true) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
61 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
62 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
63 open class func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
64 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
65 Snapshot.app = app |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
66 Snapshot.waitForAnimations = waitForAnimations |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
67 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
68 do { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
69 let cacheDir = try getCacheDirectory() |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
70 Snapshot.cacheDirectory = cacheDir |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
71 setLanguage(app) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
72 setLocale(app) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
73 setLaunchArguments(app) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
74 } catch let error { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
75 NSLog(error.localizedDescription) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
76 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
77 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
78 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
79 class func setLanguage(_ app: XCUIApplication) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
80 guard let cacheDirectory = self.cacheDirectory else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
81 NSLog("CacheDirectory is not set - probably running on a physical device?") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
82 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
83 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
84 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
85 let path = cacheDirectory.appendingPathComponent("language.txt") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
86 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
87 do { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
88 let trimCharacterSet = CharacterSet.whitespacesAndNewlines |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
89 deviceLanguage = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
90 app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"] |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
91 } catch { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
92 NSLog("Couldn't detect/set language...") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
93 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
94 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
95 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
96 class func setLocale(_ app: XCUIApplication) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
97 guard let cacheDirectory = self.cacheDirectory else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
98 NSLog("CacheDirectory is not set - probably running on a physical device?") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
99 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
100 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
101 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
102 let path = cacheDirectory.appendingPathComponent("locale.txt") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
103 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
104 do { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
105 let trimCharacterSet = CharacterSet.whitespacesAndNewlines |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
106 locale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
107 } catch { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
108 NSLog("Couldn't detect/set locale...") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
109 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
110 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
111 if locale.isEmpty && !deviceLanguage.isEmpty { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
112 locale = Locale(identifier: deviceLanguage).identifier |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
113 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
114 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
115 if !locale.isEmpty { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
116 app.launchArguments += ["-AppleLocale", "\"\(locale)\""] |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
117 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
118 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
119 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
120 class func setLaunchArguments(_ app: XCUIApplication) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
121 guard let cacheDirectory = self.cacheDirectory else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
122 NSLog("CacheDirectory is not set - probably running on a physical device?") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
123 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
124 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
125 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
126 let path = cacheDirectory.appendingPathComponent("snapshot-launch_arguments.txt") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
127 app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"] |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
128 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
129 do { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
130 let launchArguments = try String(contentsOf: path, encoding: String.Encoding.utf8) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
131 let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: []) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
132 let matches = regex.matches(in: launchArguments, options: [], range: NSRange(location: 0, length: launchArguments.count)) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
133 let results = matches.map { result -> String in |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
134 (launchArguments as NSString).substring(with: result.range) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
135 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
136 app.launchArguments += results |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
137 } catch { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
138 NSLog("Couldn't detect/set launch_arguments...") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
139 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
140 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
141 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
142 open class func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
143 if timeout > 0 { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
144 waitForLoadingIndicatorToDisappear(within: timeout) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
145 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
146 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
147 NSLog("snapshot: \(name)") // more information about this, check out https://docs.fastlane.tools/actions/snapshot/#how-does-it-work |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
148 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
149 if Snapshot.waitForAnimations { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
150 sleep(1) // Waiting for the animation to be finished (kind of) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
151 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
152 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
153 #if os(OSX) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
154 guard let app = self.app else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
155 NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
156 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
157 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
158 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
159 app.typeKey(XCUIKeyboardKeySecondaryFn, modifierFlags: []) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
160 #else |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
161 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
162 guard self.app != nil else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
163 NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
164 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
165 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
166 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
167 let screenshot = XCUIScreen.main.screenshot() |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
168 #if os(iOS) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
169 let image = XCUIDevice.shared.orientation.isLandscape ? fixLandscapeOrientation(image: screenshot.image) : screenshot.image |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
170 #else |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
171 let image = screenshot.image |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
172 #endif |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
173 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
174 guard var simulator = ProcessInfo().environment["SIMULATOR_DEVICE_NAME"], let screenshotsDir = screenshotsDirectory else { return } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
175 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
176 do { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
177 // The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
178 let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
179 let range = NSRange(location: 0, length: simulator.count) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
180 simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
181 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
182 let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
183 #if swift(<5.0) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
184 UIImagePNGRepresentation(image)?.write(to: path, options: .atomic) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
185 #else |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
186 try image.pngData()?.write(to: path, options: .atomic) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
187 #endif |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
188 } catch let error { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
189 NSLog("Problem writing screenshot: \(name) to \(screenshotsDir)/\(simulator)-\(name).png") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
190 NSLog(error.localizedDescription) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
191 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
192 #endif |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
193 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
194 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
195 class func fixLandscapeOrientation(image: UIImage) -> UIImage { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
196 #if os(watchOS) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
197 return image |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
198 #else |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
199 if #available(iOS 10.0, *) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
200 let format = UIGraphicsImageRendererFormat() |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
201 format.scale = image.scale |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
202 let renderer = UIGraphicsImageRenderer(size: image.size, format: format) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
203 return renderer.image { context in |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
204 image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
205 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
206 } else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
207 return image |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
208 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
209 #endif |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
210 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
211 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
212 class func waitForLoadingIndicatorToDisappear(within timeout: TimeInterval) { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
213 #if os(tvOS) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
214 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
215 #endif |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
216 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
217 guard let app = self.app else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
218 NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
219 return |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
220 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
221 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
222 let networkLoadingIndicator = app.otherElements.deviceStatusBars.networkLoadingIndicators.element |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
223 let networkLoadingIndicatorDisappeared = XCTNSPredicateExpectation(predicate: NSPredicate(format: "exists == false"), object: networkLoadingIndicator) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
224 _ = XCTWaiter.wait(for: [networkLoadingIndicatorDisappeared], timeout: timeout) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
225 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
226 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
227 class func getCacheDirectory() throws -> URL { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
228 let cachePath = "Library/Caches/tools.fastlane" |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
229 // on OSX config is stored in /Users/<username>/Library |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
230 // and on iOS/tvOS/WatchOS it's in simulator's home dir |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
231 #if os(OSX) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
232 let homeDir = URL(fileURLWithPath: NSHomeDirectory()) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
233 return homeDir.appendingPathComponent(cachePath) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
234 #elseif arch(i386) || arch(x86_64) || arch(arm64) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
235 guard let simulatorHostHome = ProcessInfo().environment["SIMULATOR_HOST_HOME"] else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
236 throw SnapshotError.cannotFindSimulatorHomeDirectory |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
237 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
238 let homeDir = URL(fileURLWithPath: simulatorHostHome) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
239 return homeDir.appendingPathComponent(cachePath) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
240 #else |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
241 throw SnapshotError.cannotRunOnPhysicalDevice |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
242 #endif |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
243 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
244 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
245 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
246 private extension XCUIElementAttributes { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
247 var isNetworkLoadingIndicator: Bool { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
248 if hasAllowListedIdentifier { return false } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
249 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
250 let hasOldLoadingIndicatorSize = frame.size == CGSize(width: 10, height: 20) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
251 let hasNewLoadingIndicatorSize = frame.size.width.isBetween(46, and: 47) && frame.size.height.isBetween(2, and: 3) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
252 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
253 return hasOldLoadingIndicatorSize || hasNewLoadingIndicatorSize |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
254 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
255 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
256 var hasAllowListedIdentifier: Bool { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
257 let allowListedIdentifiers = ["GeofenceLocationTrackingOn", "StandardLocationTrackingOn"] |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
258 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
259 return allowListedIdentifiers.contains(identifier) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
260 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
261 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
262 func isStatusBar(_ deviceWidth: CGFloat) -> Bool { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
263 if elementType == .statusBar { return true } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
264 guard frame.origin == .zero else { return false } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
265 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
266 let oldStatusBarSize = CGSize(width: deviceWidth, height: 20) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
267 let newStatusBarSize = CGSize(width: deviceWidth, height: 44) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
268 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
269 return [oldStatusBarSize, newStatusBarSize].contains(frame.size) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
270 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
271 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
272 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
273 private extension XCUIElementQuery { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
274 var networkLoadingIndicators: XCUIElementQuery { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
275 let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
276 guard let element = evaluatedObject as? XCUIElementAttributes else { return false } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
277 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
278 return element.isNetworkLoadingIndicator |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
279 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
280 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
281 return self.containing(isNetworkLoadingIndicator) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
282 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
283 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
284 var deviceStatusBars: XCUIElementQuery { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
285 guard let app = Snapshot.app else { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
286 fatalError("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().") |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
287 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
288 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
289 let deviceWidth = app.windows.firstMatch.frame.width |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
290 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
291 let isStatusBar = NSPredicate { (evaluatedObject, _) in |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
292 guard let element = evaluatedObject as? XCUIElementAttributes else { return false } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
293 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
294 return element.isStatusBar(deviceWidth) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
295 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
296 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
297 return self.containing(isStatusBar) |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
298 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
299 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
300 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
301 private extension CGFloat { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
302 func isBetween(_ numberA: CGFloat, and numberB: CGFloat) -> Bool { |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
303 return numberA...numberB ~= self |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
304 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
305 } |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
306 |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
307 // Please don't remove the lines below |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
308 // They are used to detect outdated configuration files |
05983a9275c1
Added fastlane snapshot
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
309 // SnapshotHelperVersion [1.27] |