snapshot 0.4.5 → 0.4.6
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 +4 -4
- data/README.md +7 -2
- data/lib/snapshot/page.html.erb +1 -1
- data/lib/snapshot/reports_generator.rb +7 -5
- data/lib/snapshot/runner.rb +24 -16
- data/lib/snapshot/snapfile_creator.rb +2 -0
- data/lib/snapshot/snapshot_config.rb +19 -6
- data/lib/snapshot/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca1d44f5d3981444263228bcb8c0528b97cede47
|
4
|
+
data.tar.gz: 2a84ee85f3a7c0dd2c1d7da5557857abe5ee869a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f80391c3b5d104f8271c4cd90f03110cb4ee900d6edbe582ba9b061c83d744d13942ba9cda5c4853e4365275e16136f325f07db2665925eefcee8329cc297f92
|
7
|
+
data.tar.gz: 4a194d765aa44cfa75b3cca707dd65753e60e65874052cbc1e881acd558b8ad8b44edbdec69a5510dbb43675bc2fd683f3e69aabd23a3d5748a3365724e2d422
|
data/README.md
CHANGED
@@ -197,6 +197,8 @@ to your test file.
|
|
197
197
|
js_file './path/file.js'
|
198
198
|
```
|
199
199
|
|
200
|
+
You can add a custom script for iPads: `./path/file-iPad.js` and it will automatically be used if found. Just append the `-iPad` to your existing file.
|
201
|
+
|
200
202
|
### Scheme
|
201
203
|
To not be asked which scheme to use, just set it like this:
|
202
204
|
```ruby
|
@@ -242,8 +244,11 @@ This can be used to
|
|
242
244
|
|
243
245
|
To run a shell script, just use ```system('./script.sh')```.
|
244
246
|
```ruby
|
245
|
-
setup_for_device_change do |device|
|
246
|
-
puts "Preparing device: #{device}"
|
247
|
+
setup_for_device_change do |device, udid|
|
248
|
+
puts "Preparing device: #{device} with udid #{udid}"
|
249
|
+
|
250
|
+
# Completely reset the device before we start taking screenshots
|
251
|
+
system("xcrun simctl erase #{udid}")
|
247
252
|
end
|
248
253
|
|
249
254
|
setup_for_language_change do |lang, device|
|
data/lib/snapshot/page.html.erb
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
<% next if screen_path.include?"_framed.png" %>
|
42
42
|
<td>
|
43
43
|
<% path = screen_path.gsub("./screenshots/", "./") %>
|
44
|
-
<% screen_size = FastImage.size(screen_path) %>
|
44
|
+
<% screen_size = FastImage.size(File.join('screenshots', screen_path)) %>
|
45
45
|
<a href="<%= path %>" target="_blank">
|
46
46
|
<img class="screenshot"
|
47
47
|
src="<%= path %>",
|
@@ -9,17 +9,19 @@ module Snapshot
|
|
9
9
|
@data = {}
|
10
10
|
|
11
11
|
Dir["#{screens_path}/*"].sort.each do |language_path|
|
12
|
-
language =
|
13
|
-
Dir[
|
12
|
+
language = File.basename(language_path)
|
13
|
+
Dir[File.join(language_path, '*')].sort.each do |screenshot|
|
14
14
|
|
15
15
|
available_devices.each do |key_name, output_name|
|
16
16
|
|
17
|
-
if
|
17
|
+
if File.basename(screenshot).include?key_name
|
18
18
|
# This screenshot it from this device
|
19
19
|
@data[language] ||= {}
|
20
20
|
@data[language][output_name] ||= []
|
21
|
-
|
22
|
-
|
21
|
+
|
22
|
+
resulting_path = File.join('.', language, File.basename(screenshot))
|
23
|
+
@data[language][output_name] << resulting_path
|
24
|
+
break # to not include iPhone 6 and 6 Plus (name is contained in the other name)
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
data/lib/snapshot/runner.rb
CHANGED
@@ -5,7 +5,7 @@ module Snapshot
|
|
5
5
|
TRACE_DIR = '/tmp/snapshot_traces'
|
6
6
|
|
7
7
|
def work(clean: true)
|
8
|
-
SnapshotConfig.shared_instance.js_file # to verify the file can be found
|
8
|
+
SnapshotConfig.shared_instance.js_file # to verify the file can be found earlier
|
9
9
|
|
10
10
|
Builder.new.build_app(clean: clean)
|
11
11
|
@app_path = Dir.glob("/tmp/snapshot/build/*.app").first
|
@@ -15,7 +15,7 @@ module Snapshot
|
|
15
15
|
|
16
16
|
SnapshotConfig.shared_instance.devices.each do |device|
|
17
17
|
|
18
|
-
SnapshotConfig.shared_instance.blocks[:setup_for_device_change].call(device) # Callback
|
18
|
+
SnapshotConfig.shared_instance.blocks[:setup_for_device_change].call(device, udid_for_simulator(device)) # Callback
|
19
19
|
|
20
20
|
SnapshotConfig.shared_instance.languages.each do |language|
|
21
21
|
SnapshotConfig.shared_instance.blocks[:setup_for_language_change].call(language, device) # Callback
|
@@ -51,17 +51,21 @@ module Snapshot
|
|
51
51
|
FileUtils.mkdir_p(TRACE_DIR)
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
return current.match(/\[(.*)\]/)[1] if current.include?name
|
59
|
-
end
|
60
|
-
raise "Could not find simulator '#{name}' to install the app on."
|
54
|
+
def udid_for_simulator(name) # fetches the UDID of the simulator type
|
55
|
+
all = `instruments -s`.split("\n")
|
56
|
+
all.each do |current|
|
57
|
+
return current.match(/\[(.*)\]/)[1] if current.include?name
|
61
58
|
end
|
59
|
+
raise "Could not find simulator '#{name}' to install the app on."
|
60
|
+
end
|
61
|
+
|
62
|
+
def reinstall_app(device, language)
|
62
63
|
|
63
64
|
def app_identifier
|
64
|
-
@app_identifier ||=
|
65
|
+
@app_identifier ||= ENV["SNAPSHOT_APP_IDENTIFIER"]
|
66
|
+
@app_identifier ||= `/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /tmp/snapshot/build/*.app/Info.plist`
|
67
|
+
@app_identifier ||= `/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /tmp/snapshot/build/*.app/*.plist`
|
68
|
+
@app_identifier.strip
|
65
69
|
end
|
66
70
|
|
67
71
|
def com(cmd)
|
@@ -70,13 +74,16 @@ module Snapshot
|
|
70
74
|
puts result if result.to_s.length > 0
|
71
75
|
end
|
72
76
|
|
73
|
-
udid =
|
77
|
+
udid = udid_for_simulator(device)
|
78
|
+
|
79
|
+
|
74
80
|
com("killall 'iOS Simulator'")
|
81
|
+
sleep 3
|
75
82
|
com("xcrun simctl boot '#{udid}'")
|
76
|
-
com("xcrun simctl uninstall
|
83
|
+
com("xcrun simctl uninstall booted '#{app_identifier}'")
|
77
84
|
sleep 3
|
78
|
-
com("xcrun simctl install
|
79
|
-
com("xcrun simctl shutdown
|
85
|
+
com("xcrun simctl install booted '#{@app_path}'")
|
86
|
+
com("xcrun simctl shutdown booted")
|
80
87
|
end
|
81
88
|
|
82
89
|
def run_tests(device, language)
|
@@ -169,7 +176,8 @@ module Snapshot
|
|
169
176
|
end
|
170
177
|
|
171
178
|
def generate_test_command(device, language)
|
172
|
-
|
179
|
+
is_ipad = (device.downcase.include?'ipad')
|
180
|
+
script_path = SnapshotConfig.shared_instance.js_file(is_ipad)
|
173
181
|
|
174
182
|
[
|
175
183
|
"instruments",
|
@@ -184,4 +192,4 @@ module Snapshot
|
|
184
192
|
].join(' ')
|
185
193
|
end
|
186
194
|
end
|
187
|
-
end
|
195
|
+
end
|
@@ -10,10 +10,12 @@ module Snapshot
|
|
10
10
|
|
11
11
|
File.write(snapfile_path, File.read("#{gem_path}/lib/assets/SnapfileTemplate"))
|
12
12
|
File.write([path, 'snapshot.js'].join('/'), File.read("#{gem_path}/lib/assets/snapshot.js"))
|
13
|
+
File.write([path, 'snapshot-iPad.js'].join('/'), File.read("#{gem_path}/lib/assets/snapshot.js"))
|
13
14
|
File.write([path, 'SnapshotHelper.js'].join('/'), File.read("#{gem_path}/lib/assets/SnapshotHelper.js"))
|
14
15
|
|
15
16
|
puts "Successfully created SnapshotHelper.js '#{[path, 'SnapshotHelper.js'].join('/')}'".green
|
16
17
|
puts "Successfully created new UI Automation JS file at '#{[path, 'snapshot.js'].join('/')}'".green
|
18
|
+
puts "Successfully created new UI Automation JS file for iPad at '#{[path, 'snapshot-iPad.js'].join('/')}'".green
|
17
19
|
puts "Successfully created new Snapfile at '#{snapfile_path}'".green
|
18
20
|
end
|
19
21
|
|
@@ -109,15 +109,28 @@ module Snapshot
|
|
109
109
|
end
|
110
110
|
|
111
111
|
# The JavaScript UIAutomation file
|
112
|
-
def js_file
|
113
|
-
|
112
|
+
def js_file(ipad = false)
|
113
|
+
result = manual_js_file
|
114
114
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
115
|
+
unless result
|
116
|
+
files = Dir.glob("./*.js").delete_if { |path| (path.include?"SnapshotHelper.js" or path.include?"iPad.js") }
|
117
|
+
if files.count == 1
|
118
|
+
result = files.first
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
if ipad
|
123
|
+
ipad_file = result.split('.js').join('/') + '-iPad.js'
|
124
|
+
if File.exists?(ipad_file)
|
125
|
+
result = ipad_file
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
unless File.exists?result
|
119
130
|
raise "Could not determine which UIAutomation file to use. Please pass a path to your Javascript file using 'js_file'.".red
|
120
131
|
end
|
132
|
+
|
133
|
+
return result
|
121
134
|
end
|
122
135
|
|
123
136
|
# The scheme to use (either it's set, or there is only one, or user has to enter it)
|
data/lib/snapshot/version.rb
CHANGED
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: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|