snapshot 1.15.0 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ab0c8a90c25504323f9cb4e593420b2398cc4a2
4
- data.tar.gz: eaa725687e667a1f60eff7fa461086edf805d9a7
3
+ metadata.gz: 0e2e45d4b91626395ae6af735f77e832402683da
4
+ data.tar.gz: 1cb9fc6127e5aad69764d6d69e4a3d8861adf590
5
5
  SHA512:
6
- metadata.gz: f84ab4ea8dbcbadbc5438caa9eb9527817b4eaf44a8388ed56c0eb0bd5a497937318cb3e8742af1358e6502a61c1c1a1bfbf40883235d32baa5d8add79b8004b
7
- data.tar.gz: 18447383ca6317df228bcbce85c12e2ce999d69093ed28bac4e2cdb8412ad0468652cc3dcc43a96c3eb96972b0c789157fb9bcd136bcc2259f0879ba8c4fc290
6
+ metadata.gz: fff03296bdeed4b15f2d56bdccf8881a4712f7c47da376c6f6d7057d3728a3134bc4a81b6bff784eed5c9f864b7af3d65c51844b81e531fd681198dba0863eea
7
+ data.tar.gz: 2f38154732cf07831bc7d31c47a5c7cd62c4ec12f0f0e2f115e60b84fbca2963f9257934a6901e63c35a64b4ee4224725d29c12d5b7bbd6bd6be439f903fde89
@@ -12,76 +12,76 @@ import XCTest
12
12
  var deviceLanguage = ""
13
13
  var locale = ""
14
14
 
15
- @available(*, deprecated, message="use setupSnapshot: instead")
16
- func setLanguage(app: XCUIApplication) {
15
+ @available(*, deprecated, message: "use setupSnapshot: instead")
16
+ func setLanguage(_ app: XCUIApplication) {
17
17
  setupSnapshot(app)
18
18
  }
19
19
 
20
- func setupSnapshot(app: XCUIApplication) {
20
+ func setupSnapshot(_ app: XCUIApplication) {
21
21
  Snapshot.setupSnapshot(app)
22
22
  }
23
23
 
24
- func snapshot(name: String, waitForLoadingIndicator: Bool = true) {
24
+ func snapshot(_ name: String, waitForLoadingIndicator: Bool = true) {
25
25
  Snapshot.snapshot(name, waitForLoadingIndicator: waitForLoadingIndicator)
26
26
  }
27
27
 
28
- public class Snapshot: NSObject {
28
+ open class Snapshot: NSObject {
29
29
 
30
- public class func setupSnapshot(app: XCUIApplication) {
30
+ open class func setupSnapshot(_ app: XCUIApplication) {
31
31
  setLanguage(app)
32
32
  setLocale(app)
33
33
  setLaunchArguments(app)
34
34
  }
35
35
 
36
- class func setLanguage(app: XCUIApplication) {
36
+ class func setLanguage(_ app: XCUIApplication) {
37
37
  guard let prefix = pathPrefix() else {
38
38
  return
39
39
  }
40
40
 
41
- let path = prefix.stringByAppendingPathComponent("language.txt")
41
+ let path = prefix.appendingPathComponent("language.txt")
42
42
 
43
43
  do {
44
- let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
45
- deviceLanguage = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String
44
+ let trimCharacterSet = CharacterSet.whitespacesAndNewlines
45
+ deviceLanguage = try NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue).trimmingCharacters(in: trimCharacterSet) as String
46
46
  app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"]
47
47
  } catch {
48
48
  print("Couldn't detect/set language...")
49
49
  }
50
50
  }
51
51
 
52
- class func setLocale(app: XCUIApplication) {
52
+ class func setLocale(_ app: XCUIApplication) {
53
53
  guard let prefix = pathPrefix() else {
54
54
  return
55
55
  }
56
56
 
57
- let path = prefix.stringByAppendingPathComponent("locale.txt")
57
+ let path = prefix.appendingPathComponent("locale.txt")
58
58
 
59
59
  do {
60
- let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
61
- locale = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String
60
+ let trimCharacterSet = CharacterSet.whitespacesAndNewlines
61
+ locale = try NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue).trimmingCharacters(in: trimCharacterSet) as String
62
62
  } catch {
63
63
  print("Couldn't detect/set locale...")
64
64
  }
65
65
  if locale.isEmpty {
66
- locale = NSLocale(localeIdentifier: deviceLanguage).localeIdentifier
66
+ locale = Locale(identifier: deviceLanguage).identifier
67
67
  }
68
68
  app.launchArguments += ["-AppleLocale", "\"\(locale)\""]
69
69
  }
70
70
 
71
- class func setLaunchArguments(app: XCUIApplication) {
71
+ class func setLaunchArguments(_ app: XCUIApplication) {
72
72
  guard let prefix = pathPrefix() else {
73
73
  return
74
74
  }
75
75
 
76
- let path = prefix.stringByAppendingPathComponent("snapshot-launch_arguments.txt")
76
+ let path = prefix.appendingPathComponent("snapshot-launch_arguments.txt")
77
77
  app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"]
78
78
 
79
79
  do {
80
- let launchArguments = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) as String
80
+ let launchArguments = try NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue) as String
81
81
  let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: [])
82
- let matches = regex.matchesInString(launchArguments, options: [], range: NSRange(location:0, length:launchArguments.characters.count))
82
+ let matches = regex.matches(in: launchArguments, options: [], range: NSRange(location:0, length:launchArguments.characters.count))
83
83
  let results = matches.map { result -> String in
84
- (launchArguments as NSString).substringWithRange(result.range)
84
+ (launchArguments as NSString).substring(with: result.range)
85
85
  }
86
86
  app.launchArguments += results
87
87
  } catch {
@@ -89,7 +89,7 @@ public class Snapshot: NSObject {
89
89
  }
90
90
  }
91
91
 
92
- public class func snapshot(name: String, waitForLoadingIndicator: Bool = true) {
92
+ open class func snapshot(_ name: String, waitForLoadingIndicator: Bool = true) {
93
93
  if waitForLoadingIndicator {
94
94
  waitForLoadingIndicatorToDisappear()
95
95
  }
@@ -101,7 +101,7 @@ public class Snapshot: NSObject {
101
101
  #if os(tvOS)
102
102
  XCUIApplication().childrenMatchingType(.Browser).count
103
103
  #else
104
- XCUIDevice.sharedDevice().orientation = .Unknown
104
+ XCUIDevice.shared().orientation = .unknown
105
105
  #endif
106
106
  }
107
107
 
@@ -110,17 +110,17 @@ public class Snapshot: NSObject {
110
110
  return;
111
111
  #endif
112
112
 
113
- let query = XCUIApplication().statusBars.childrenMatchingType(.Other).elementBoundByIndex(1).childrenMatchingType(.Other)
113
+ let query = XCUIApplication().statusBars.children(matching: .other).element(boundBy: 1).children(matching: .other)
114
114
 
115
- while (0..<query.count).map({ query.elementBoundByIndex($0) }).contains({ $0.isLoadingIndicator }) {
115
+ while (0..<query.count).map({ query.element(boundBy: $0) }).contains(where: { $0.isLoadingIndicator }) {
116
116
  sleep(1)
117
117
  print("Waiting for loading indicator to disappear...")
118
118
  }
119
119
  }
120
120
 
121
121
  class func pathPrefix() -> NSString? {
122
- if let path = NSProcessInfo().environment["SIMULATOR_HOST_HOME"] as NSString? {
123
- return path.stringByAppendingPathComponent("Library/Caches/tools.fastlane")
122
+ if let path = ProcessInfo().environment["SIMULATOR_HOST_HOME"] as NSString? {
123
+ return path.appendingPathComponent("Library/Caches/tools.fastlane") as NSString?
124
124
  }
125
125
  print("Couldn't find Snapshot configuration files at ~/Library/Caches/tools.fastlane")
126
126
  return nil
@@ -0,0 +1,140 @@
1
+ //
2
+ // SnapshotHelper.swift
3
+ // Example
4
+ //
5
+ // Created by Felix Krause on 10/8/15.
6
+ // Copyright © 2015 Felix Krause. All rights reserved.
7
+ //
8
+
9
+ // This file should be used if your UI Tests are written in Swift 2.3
10
+
11
+ import Foundation
12
+ import XCTest
13
+
14
+ var deviceLanguage = ""
15
+ var locale = ""
16
+
17
+ @available(*, deprecated, message="use setupSnapshot: instead")
18
+ func setLanguage(app: XCUIApplication) {
19
+ setupSnapshot(app)
20
+ }
21
+
22
+ func setupSnapshot(app: XCUIApplication) {
23
+ Snapshot.setupSnapshot(app)
24
+ }
25
+
26
+ func snapshot(name: String, waitForLoadingIndicator: Bool = true) {
27
+ Snapshot.snapshot(name, waitForLoadingIndicator: waitForLoadingIndicator)
28
+ }
29
+
30
+ public class Snapshot: NSObject {
31
+
32
+ public class func setupSnapshot(app: XCUIApplication) {
33
+ setLanguage(app)
34
+ setLocale(app)
35
+ setLaunchArguments(app)
36
+ }
37
+
38
+ class func setLanguage(app: XCUIApplication) {
39
+ guard let prefix = pathPrefix() else {
40
+ return
41
+ }
42
+
43
+ let path = prefix.stringByAppendingPathComponent("language.txt")
44
+
45
+ do {
46
+ let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
47
+ deviceLanguage = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String
48
+ app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"]
49
+ } catch {
50
+ print("Couldn't detect/set language...")
51
+ }
52
+ }
53
+
54
+ class func setLocale(app: XCUIApplication) {
55
+ guard let prefix = pathPrefix() else {
56
+ return
57
+ }
58
+
59
+ let path = prefix.stringByAppendingPathComponent("locale.txt")
60
+
61
+ do {
62
+ let trimCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
63
+ locale = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding).stringByTrimmingCharactersInSet(trimCharacterSet) as String
64
+ } catch {
65
+ print("Couldn't detect/set locale...")
66
+ }
67
+ if locale.isEmpty {
68
+ locale = NSLocale(localeIdentifier: deviceLanguage).localeIdentifier
69
+ }
70
+ app.launchArguments += ["-AppleLocale", "\"\(locale)\""]
71
+ }
72
+
73
+ class func setLaunchArguments(app: XCUIApplication) {
74
+ guard let prefix = pathPrefix() else {
75
+ return
76
+ }
77
+
78
+ let path = prefix.stringByAppendingPathComponent("snapshot-launch_arguments.txt")
79
+ app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"]
80
+
81
+ do {
82
+ let launchArguments = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) as String
83
+ let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: [])
84
+ let matches = regex.matchesInString(launchArguments, options: [], range: NSRange(location:0, length:launchArguments.characters.count))
85
+ let results = matches.map { result -> String in
86
+ (launchArguments as NSString).substringWithRange(result.range)
87
+ }
88
+ app.launchArguments += results
89
+ } catch {
90
+ print("Couldn't detect/set launch_arguments...")
91
+ }
92
+ }
93
+
94
+ public class func snapshot(name: String, waitForLoadingIndicator: Bool = true) {
95
+ if waitForLoadingIndicator {
96
+ waitForLoadingIndicatorToDisappear()
97
+ }
98
+
99
+ print("snapshot: \(name)") // more information about this, check out https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work
100
+
101
+ sleep(1) // Waiting for the animation to be finished (kind of)
102
+
103
+ #if os(tvOS)
104
+ XCUIApplication().childrenMatchingType(.Browser).count
105
+ #else
106
+ XCUIDevice.sharedDevice().orientation = .Unknown
107
+ #endif
108
+ }
109
+
110
+ class func waitForLoadingIndicatorToDisappear() {
111
+ #if os(tvOS)
112
+ return;
113
+ #endif
114
+
115
+ let query = XCUIApplication().statusBars.childrenMatchingType(.Other).elementBoundByIndex(1).childrenMatchingType(.Other)
116
+
117
+ while (0..<query.count).map({ query.elementBoundByIndex($0) }).contains({ $0.isLoadingIndicator }) {
118
+ sleep(1)
119
+ print("Waiting for loading indicator to disappear...")
120
+ }
121
+ }
122
+
123
+ class func pathPrefix() -> NSString? {
124
+ if let path = NSProcessInfo().environment["SIMULATOR_HOST_HOME"] as NSString? {
125
+ return path.stringByAppendingPathComponent("Library/Caches/tools.fastlane")
126
+ }
127
+ print("Couldn't find Snapshot configuration files at ~/Library/Caches/tools.fastlane")
128
+ return nil
129
+ }
130
+ }
131
+
132
+ extension XCUIElement {
133
+ var isLoadingIndicator: Bool {
134
+ return self.frame.size == CGSize(width: 10, height: 20)
135
+ }
136
+ }
137
+
138
+ // Please don't remove the lines below
139
+ // They are used to detect outdated configuration files
140
+ // SnapshotHelperVersion [1.2]
@@ -10,9 +10,11 @@ module Snapshot
10
10
 
11
11
  File.write(snapfile_path, File.read("#{Snapshot::ROOT}/lib/assets/SnapfileTemplate"))
12
12
  File.write(File.join(path, 'SnapshotHelper.swift'), File.read("#{Snapshot::ROOT}/lib/assets/SnapshotHelper.swift"))
13
+ File.write(File.join(path, 'SnapshotHelper2-3.swift'), File.read("#{Snapshot::ROOT}/lib/assets/SnapshotHelper2-3.swift"))
13
14
 
14
- puts "Successfully created SnapshotHelper.swift '#{File.join(path, 'SnapshotHelper.swift')}'".green
15
- puts "Successfully created new Snapfile at '#{snapfile_path}'".green
15
+ puts "Successfully created SnapshotHelper.swift '#{File.join(path, 'SnapshotHelper.swift')}'".green
16
+ puts "Successfully created SnapshotHelper2-3.swift '#{File.join(path, 'SnapshotHelper2-3.swift')} (if your UI tests are written in Swift 2.3)'".green
17
+ puts "✅ Successfully created new Snapfile at '#{snapfile_path}'".green
16
18
 
17
19
  puts "-------------------------------------------------------".yellow
18
20
  puts "Open your Xcode project and make sure to do the following:".yellow
@@ -1,4 +1,4 @@
1
1
  module Snapshot
2
- VERSION = "1.15.0".freeze
2
+ VERSION = "1.16.0".freeze
3
3
  DESCRIPTION = "Automate taking localized screenshots of your iOS app on every device"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snapshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-20 00:00:00.000000000 Z
11
+ date: 2016-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastimage
@@ -225,6 +225,7 @@ files:
225
225
  - bin/snapshot
226
226
  - lib/assets/SnapfileTemplate
227
227
  - lib/assets/SnapshotHelper.swift
228
+ - lib/assets/SnapshotHelper2-3.swift
228
229
  - lib/snapshot.rb
229
230
  - lib/snapshot/collector.rb
230
231
  - lib/snapshot/commands_generator.rb
@@ -266,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
267
  version: '0'
267
268
  requirements: []
268
269
  rubyforge_project:
269
- rubygems_version: 2.4.5.1
270
+ rubygems_version: 2.6.6
270
271
  signing_key:
271
272
  specification_version: 4
272
273
  summary: Automate taking localized screenshots of your iOS app on every device