snapshot 1.15.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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