snapshot 0.2.1.beta1 → 0.2.1

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: 6c2536f41985227165492325889d7840b12dde0d
4
- data.tar.gz: 35a2065343d4f96e79a1a47be751c44c466cc134
3
+ metadata.gz: f9587bca312d28377307565bc943291fed8b44f5
4
+ data.tar.gz: 624c2a496b4c50820964d2626b20a61a413a4535
5
5
  SHA512:
6
- metadata.gz: 41fa64e0018686214581fbb62e6cb17211b59954274cf77f24b746ba57cd2c8af31269fccbfadac6be89fc060d7aad8bb347d118d65472865d378f9b1d41822c
7
- data.tar.gz: 94751b98456aa3a4e824cb37413a8c398b6643a0ef86134b3b3eb9a881a5e581da2bc64fc09448b3af042f5998d71ac822dd58fa012afa663b303d60e1b3eff4
6
+ metadata.gz: f8ccb3fcc29be45f88c5ce7c9d8d2b61d8fa8c483c60226a2477c5991be56503d3e68b2d24fdd5d943ed41cf2413f992e7dca7b7e37164f42151b811f007691c
7
+ data.tar.gz: ef10c5745da09e21ccff13dfb420e8a31761949e314e379acd7147518563faffaf1355c256804e2b16ae887877c3bdadc43738a641500cd41c553564b57d725f
data/README.md CHANGED
@@ -91,13 +91,10 @@ Here a few links to get started:
91
91
 
92
92
  # Quick Start
93
93
 
94
- ## Record your first script
95
-
94
+ - Run ```snapshot init``` in your project folder
96
95
  - Profile your app (CMD + I), choose ```Automation``` and click the Record button on the bottom of the window.
97
- - This will get you started. Save the generated file with the extension ```js``` into your project root.
98
- - Copy the ```SnapshotHelper.js``` file from the example folder to your project.
99
- - Add ```#import "SnapshotHelper.js"``` on the top of your newly created JS file.
100
- - Now you can use ```captureLocalizedScreenshot('0-name')``` to take a snapshot.
96
+ - This will get you started. Copy the generated code into ```./snapshot.js```. Make sure, you leave the import statement on the top.
97
+ - To take a screenshot, use ```captureLocalizedScreenshot('0-name')```
101
98
 
102
99
  You can take a look at the example project to play around with it.
103
100
 
@@ -0,0 +1,43 @@
1
+ function wait_for_loading_indicator_to_be_finished()
2
+ {
3
+ re = UIATarget.localTarget().frontMostApp().statusBar().elements()[2].rect()
4
+ while (re['size']['width'] == 10 && re['size']['height'] == 20) {
5
+ UIALogger.logMessage("Loading indicator is visible... waiting")
6
+ UIATarget.localTarget().delay(1)
7
+ re = UIATarget.localTarget().frontMostApp().statusBar().elements()[2].rect()
8
+ }
9
+ }
10
+
11
+ function captureLocalizedScreenshot(name) {
12
+ wait_for_loading_indicator_to_be_finished();
13
+
14
+ var target = UIATarget.localTarget();
15
+ var model = target.model();
16
+ var rect = target.rect();
17
+
18
+ if (model.match(/iPhone/))
19
+ {
20
+ if (rect.size.height > 667) {
21
+ model = "iPhone6Plus";
22
+ } else if (rect.size.height == 667) {
23
+ model = "iPhone6";
24
+ } else if (rect.size.height == 568){
25
+ model = "iPhone5";
26
+ } else {
27
+ model = "iPhone4";
28
+ }
29
+ }
30
+ else
31
+ {
32
+ model = "iOS-iPad";
33
+ }
34
+
35
+ var orientation = "portrait";
36
+ if (rect.size.height < rect.size.width) orientation = "landscape";
37
+
38
+ var result = target.host().performTaskWithPathArgumentsTimeout("/usr/bin/printenv" , ["SNAPSHOT_LANGUAGE"], 5);
39
+ var language = result.stdout.substring(0, result.stdout.length - 1);
40
+
41
+ var parts = [language, model, orientation, name];
42
+ target.captureScreenWithName(parts.join("-"));
43
+ }
@@ -0,0 +1,13 @@
1
+ #import "SnapshotHelper.js"
2
+
3
+ var target = UIATarget.localTarget();
4
+ var app = target.frontMostApp();
5
+ var window = app.mainWindow();
6
+
7
+
8
+ target.delay(3)
9
+ captureLocalizedScreenshot("0-LandingScreen")
10
+
11
+ target.frontMostApp().tabBar().buttons()[1].tap();
12
+ target.delay(1)
13
+ captureLocalizedScreenshot("1-SecondScreen")
@@ -14,11 +14,12 @@ module Snapshot
14
14
  Builder.new.build_app
15
15
 
16
16
  counter = 0
17
+ errors = []
17
18
  SnapshotConfig.shared_instance.devices.each do |device|
18
19
  SnapshotConfig.shared_instance.languages.each do |language|
19
20
 
20
21
  begin
21
- run_tests(device, language)
22
+ errors.concat(run_tests(device, language))
22
23
  counter += copy_screenshots(language)
23
24
  rescue Exception => ex
24
25
  Helper.log.error(ex)
@@ -27,9 +28,18 @@ module Snapshot
27
28
  end
28
29
  end
29
30
 
30
- Helper.log.info "Successfully finished generating #{counter} screenshots.".green
31
- Helper.log.info "Check it out here: #{SnapshotConfig.shared_instance.screenshots_path}".green
32
31
  ReportsGenerator.new.generate
32
+
33
+ if errors.count > 0
34
+ Helper.log.error "-----------------------------------------------------------"
35
+ Helper.log.error errors.join(' - ').red
36
+ Helper.log.error "-----------------------------------------------------------"
37
+ raise "Finished generating #{counter} screenshots with #{errors.count} errors.".red
38
+ else
39
+ Helper.log.info "Successfully finished generating #{counter} screenshots.".green
40
+ end
41
+
42
+ Helper.log.info "Check it out here: #{SnapshotConfig.shared_instance.screenshots_path}".green
33
43
  end
34
44
 
35
45
  def clean_old_traces
@@ -50,16 +60,23 @@ module Snapshot
50
60
  retry_run = false
51
61
 
52
62
  lines = []
63
+ errors = []
53
64
  PTY.spawn(command) do |stdin, stdout, pid|
54
65
  stdin.each do |line|
55
66
  lines << line
56
- result = parse_test_line(line)
57
-
58
- case result
59
- when :retry
60
- retry_run = true
61
- when :screenshot
62
- Helper.log.info "Successfully took screenshot 📱"
67
+ begin
68
+ result = parse_test_line(line)
69
+
70
+ case result
71
+ when :retry
72
+ retry_run = true
73
+ when :screenshot
74
+ Helper.log.info "Successfully took screenshot 📱"
75
+ end
76
+ rescue Exception => ex
77
+ Helper.log.error lines.join('')
78
+ Helper.log.error ex.to_s.red
79
+ errors << ex.to_s
63
80
  end
64
81
  end
65
82
  end
@@ -67,8 +84,10 @@ module Snapshot
67
84
  if retry_run
68
85
  Helper.log.error "Instruments tool failed again. Re-trying..."
69
86
  sleep 2 # We need enough sleep... that's an instruments bug
70
- run_tests(device, language)
87
+ errors = run_tests(device, language)
71
88
  end
89
+
90
+ return errors
72
91
  end
73
92
 
74
93
  def parse_test_line(line)
@@ -2,14 +2,15 @@ module Snapshot
2
2
  class SnapfileCreator
3
3
  # This method will take care of creating a Snapfile
4
4
  def self.create(path)
5
- path = [path, 'Snapfile'].join("/")
5
+ snapfile_path = [path, 'Snapfile'].join("/")
6
6
 
7
- raise "Snapfile already exists at path '#{path}'. Run 'snapshot' to use Snapshot.".red if File.exists?(path)
7
+ raise "Snapfile already exists at path '#{snapfile_path}'. Run 'snapshot' to use Snapshot.".red if File.exists?(snapfile_path)
8
8
 
9
- template = File.read("#{gem_path}/lib/assets/SnapfileTemplate")
10
- File.write(path, template)
9
+ File.write(snapfile_path, File.read("#{gem_path}/lib/assets/SnapfileTemplate"))
10
+ File.write([path, 'snapshot.js'].join('/'), File.read("#{gem_path}/lib/assets/snapshot.js"))
11
+ File.write([path, 'SnapshotHelper.js'].join('/'), File.read("#{gem_path}/lib/assets/SnapshotHelper.js"))
11
12
 
12
- puts "Successfully created new Snapfile at '#{path}'".green
13
+ puts "Successfully created new Snapfile at '#{snapfile_path}'".green
13
14
  end
14
15
 
15
16
  private
@@ -41,7 +41,7 @@ module Snapshot
41
41
  if path and File.exists?path
42
42
  self.snapshot_file = SnapshotFile.new(path, self)
43
43
  else
44
- Helper.log.error "Could not find './Snapfile'. It is recommended to create a file into the current directory. Using the defaults now."
44
+ Helper.log.error "Could not find './Snapfile'. It is recommended to create a file using 'snapshot init' into the current directory. Using the defaults now."
45
45
  end
46
46
  end
47
47
 
@@ -1,3 +1,3 @@
1
1
  module Snapshot
2
- VERSION = "0.2.1.beta1"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snapshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1.beta1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -176,6 +176,8 @@ files:
176
176
  - README.md
177
177
  - bin/snapshot
178
178
  - lib/assets/SnapfileTemplate
179
+ - lib/assets/SnapshotHelper.js
180
+ - lib/assets/snapshot.js
179
181
  - lib/snapshot.rb
180
182
  - lib/snapshot/builder.rb
181
183
  - lib/snapshot/dependency_checker.rb
@@ -204,9 +206,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
206
  version: 2.0.0
205
207
  required_rubygems_version: !ruby/object:Gem::Requirement
206
208
  requirements:
207
- - - ">"
209
+ - - ">="
208
210
  - !ruby/object:Gem::Version
209
- version: 1.3.1
211
+ version: '0'
210
212
  requirements: []
211
213
  rubyforge_project:
212
214
  rubygems_version: 2.2.2