snapshot 0.9.0 → 0.9.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: e7362693e9f1c922a699d79e0d24fc6f5ec122ff
4
- data.tar.gz: ac6413d4502074b7ddd4fb140228cb97dc2cb7b3
3
+ metadata.gz: 128e1fba0308d08053dbf2817d712d0c469ffa19
4
+ data.tar.gz: d60afccfcb75690522e94724d620f24dfc52b061
5
5
  SHA512:
6
- metadata.gz: c0e83d4693307a5f46e9b7f120cc76c42ad7ee6aa7a3642db09b178c8bc756889b17565c93c2ce549311cd3a38b47ece61623bd9e17f9dea554d65c39190a6ff
7
- data.tar.gz: 811d67b6f62e29423c84222269805b7e3e2effa328711933ab9447818aaa966fdd928be623199cf70542b966d132eda40e6d5ced86cdc439fbe38328aea3fb92
6
+ metadata.gz: 05fb00a65d26f783510606a53a862fc615944c9f6fe4fd747e99cd79094a4d82ccf9bae516ee3904cbf1e40092e75d577807d5d2958f43373eb7d00b37b36da8
7
+ data.tar.gz: 20c2b7848b7cb2bbf316d8dc286f688bc6d13a80c9b65b6464d9f914a371be58720f12d368cfbcb6ddf38390cd2498fb15fb9d405cb0e6a804ead7b60d4b4c9c
data/README.md CHANGED
@@ -13,7 +13,10 @@
13
13
  <a href="https://github.com/KrauseFx/sigh">sigh</a> &bull;
14
14
  <a href="https://github.com/KrauseFx/produce">produce</a> &bull;
15
15
  <a href="https://github.com/KrauseFx/cert">cert</a> &bull;
16
- <a href="https://github.com/KrauseFx/codes">codes</a>
16
+ <a href="https://github.com/KrauseFx/codes">codes</a> &bull;
17
+ <a href="https://github.com/fastlane/spaceship">spaceship</a> &bull;
18
+ <a href="https://github.com/fastlane/pilot">pilot</a> &bull;
19
+ <a href="https://github.com/fastlane/boarding">boarding</a>
17
20
  </p>
18
21
  -------
19
22
 
@@ -37,7 +40,7 @@ What's missing?
37
40
 
38
41
  You want them to look **perfect** and **gorgeous**. They should show the same screens on all devices in all languages.
39
42
 
40
- You have to manually create 20 (languages) x 4 (devices) x 5 (screenshots) = **400 screenshots**.
43
+ You have to manually create 20 (languages) x 5 (devices) x 5 (screenshots) = **500 screenshots**.
41
44
 
42
45
  It's hard to get everything right!
43
46
 
@@ -51,6 +54,21 @@ This gem solves all those problems. It will run completely in the background - y
51
54
 
52
55
  Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)
53
56
 
57
+ ### Note: Support for UI Tests with Xcode 7
58
+
59
+ Apple announced a new version of Xcode with support for UI Tests built in right into Xcode. This technology allows `snapshot` to be even better: Instead of dealing with UI Automation Javascript code, you will be able to write the screenshot code in Swift or Objective C allowing you to use debugging features like breakpoints.
60
+
61
+ It's still work in progress and there are some technical difficulties I need to solve.
62
+
63
+ As a result, `snapshot` will be completely rewritten from ground up without changing its public API :rocket:
64
+
65
+ **Why change to UI Tests?**
66
+
67
+ - UI Automation is deprecated
68
+ - UI Tests will evolve and support even more features in the future
69
+ - UI Tests are much easier to debug
70
+ - UI Tests are written in Swift or Objective C
71
+ - UI Tests can be executed in a much cleaner and better way
54
72
 
55
73
  -------
56
74
  <p align="center">
@@ -73,9 +91,10 @@ Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/Kr
73
91
  - Create hundreds of screenshots in multiple languages on all simulators
74
92
  - Configure it once, store the configuration in git
75
93
  - Do something else, while the computer takes the screenshots for you
76
- - Integrated with [`fastlane`](https://fastlane.tools) and [`deliver`](https://github.com/KrauseFx/deliver)
94
+ - Integrates with [`fastlane`](https://fastlane.tools) and [`deliver`](https://github.com/KrauseFx/deliver)
77
95
  - Generates a beautiful web page, which shows all screenshots on all devices. This is perfect to send to Q&A or the marketing team
78
96
  - ```snapshot``` automatically waits for network requests to be finished before taking a screenshot (we don't want loading images in the App Store screenshots)
97
+ - Support for advanced configuration, like preprocess macros or [prefilling of data](#prefilling)
79
98
 
80
99
  ##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
81
100
 
@@ -90,7 +109,7 @@ This gem automatically switches the language and device type and runs the automa
90
109
  - It takes **hours** to take screenshots
91
110
  - It is an integration test: You can test for UI elements and other things inside your scripts
92
111
  - Be so nice, and provide new screenshots with every App Store update. Your customers deserve it
93
- - You realise, there is a spelling mistake in one of the screens? Well, just correct it and re-run the script.
112
+ - You realise, there is a spelling mistake in one of the screens? Well, just correct it and re-run the script
94
113
  - You get a great overview of all your screens, running on all available simulators without the need to manually start it hundreds of times
95
114
  - Easy verification that localizations fit into labels on all screen dimensions
96
115
  - Easy verification for translators (without an iDevice) that translations do make sense in real App context
@@ -101,7 +120,7 @@ I've been using many other solutions out there. Unfortunately none of them were
101
120
 
102
121
  - **UI Automation in Instruments**: Instruments can only run your app on one device in one language. You have to manually switch it.
103
122
  - **[ui-screen-shooter](https://github.com/jonathanpenn/ui-screen-shooter)**: This is the best alternative out there right now. It's based on AppleScript, you can not update it properly and there are quite some hacks in there. ```snapshot``` uses a very similar technique - just in a clean and maintainable Ruby gem.
104
- - **[Subliminal](https://github.com/inkling/Subliminal)**: A good approach to write the interaction code in Objective C. Unfortunately it has a lot of open issues with the latest release of Xcode. Also, it requires modifications of your Xcode project and schemes, which might break some other things.
123
+ - **[Subliminal](https://github.com/inkling/Subliminal)**: A good approach to write the interaction code in Objective C. Unfortunately the project seems to be dead and doesn't work with the latest version of Xcode yet. Also, it requires modifications of your Xcode project and schemes, which might break some other things.
105
124
 
106
125
  # Installation
107
126
 
@@ -123,6 +142,7 @@ Here a few links to get started:
123
142
  - [Apple's official documentation](https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html)
124
143
  - [UI Automation: An Introduction (cocoamanifest.net)](http://cocoamanifest.net/articles/2011/05/uiautomation-an-introduction.html)
125
144
  - [Functional Testing UI Automation (mattmccomb.com)](http://www.mattmccomb.com/blog/2013/06/02/ios-functional-testing-with-uiautomation/)
145
+ - [Cheat and use NSNotifications with HSUIAutomationCheat (github.com)](https://github.com/ConfusedVorlon/HSUIAutomationCheat)
126
146
 
127
147
  # Quick Start
128
148
 
@@ -310,7 +330,7 @@ To run a shell script, just use ```system('./script.sh')```.
310
330
  ```ruby
311
331
  setup_for_device_change do |device, udid, language|
312
332
  puts "Running #{language} on #{device}"
313
- system("./popuplateDatabase.sh")
333
+ system("./populateDatabase.sh")
314
334
  end
315
335
 
316
336
  teardown_device do |language, device|
@@ -322,13 +342,6 @@ end
322
342
  ### Skip alpha removal from screenshots
323
343
  In case you want to skip this process, just add ```skip_alpha_removal``` to your ```Snapfile```.
324
344
 
325
- ### Pass Bundle Identifier
326
- This is only required in case there is a problem automatically detecting it.
327
-
328
- ```
329
- SNAPSHOT_APP_IDENTIFIER="com.krausefx.app" snapshot
330
- ```
331
-
332
345
  ### Clear old screenshots
333
346
 
334
347
  If you add this line in your `Snapfile`, the previously generated screenshots will be deleted before generating new ones:
@@ -353,13 +366,16 @@ You can use the environment variable `SNAPSHOT_FORCE_DELETE` to stop asking for
353
366
  ## [`fastlane`](https://fastlane.tools) Toolchain
354
367
 
355
368
  - [`fastlane`](https://fastlane.tools): Connect all deployment tools into one streamlined workflow
356
- - [`deliver`](https://github.com/KrauseFx/deliver): Upload screenshots, metadata and your app to the App Store using a single command
369
+ - [`deliver`](https://github.com/KrauseFx/deliver): Upload screenshots, metadata and your app to the App Store
357
370
  - [`frameit`](https://github.com/KrauseFx/frameit): Quickly put your screenshots into the right device frames
358
371
  - [`PEM`](https://github.com/KrauseFx/pem): Automatically generate and renew your push notification profiles
359
372
  - [`sigh`](https://github.com/KrauseFx/sigh): Because you would rather spend your time building stuff than fighting provisioning
360
373
  - [`produce`](https://github.com/KrauseFx/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
361
374
  - [`cert`](https://github.com/KrauseFx/cert): Automatically create and maintain iOS code signing certificates
362
375
  - [`codes`](https://github.com/KrauseFx/codes): Create promo codes for iOS Apps using the command line
376
+ - [`spaceship`](https://github.com/fastlane/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
377
+ - [`pilot`](https://github.com/fastlane/pilot): The best way to manage your TestFlight testers and builds from your terminal
378
+ - [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
363
379
 
364
380
  ##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
365
381
 
@@ -367,7 +383,82 @@ You can use the environment variable `SNAPSHOT_FORCE_DELETE` to stop asking for
367
383
 
368
384
  If you want to add frames around the screenshots and even put a title on top, check out [frameit](https://github.com/fastlane/frameit).
369
385
 
370
- ## Run in Continuous Integration
386
+ ## Prefilling
387
+
388
+ Usually you want to mock your screenshot data to show the same content for all screenshots.
389
+
390
+ There are 2 ways of doing this:
391
+
392
+ #### Preprocessor macro
393
+ Use the preprocessor macro `SNAPSHOT` to check if `snapshot` is currently running in your code. This enables you to add checks like this:
394
+
395
+ ```objective-c
396
+ #ifdef SNAPSHOT
397
+ // Your Code here
398
+ #endif
399
+ ```
400
+
401
+ Open your `Snapfile` and add `custom_build_args "GCC_PREPROCESSOR_DEFINITIONS='$(inherited) SNAPSHOT=1'"` to it.
402
+
403
+ #### By pre-filling data/documents in the bundle
404
+
405
+ As used by [MindNode](https://github.com/fastlane/examples/blob/master/MindNode/Snapfile) you can fill your bundle after building with demo data using your `Snapfile` to use it on run-time.
406
+
407
+ ```ruby
408
+ example_files = './ExampleDocuments'
409
+ folder_name = "ExampleDocuments"
410
+
411
+ setup_for_device_change do |device, udid, language|
412
+ # This will make sure, all example documents are installed on the simulator
413
+
414
+ puts "Copying example files to .app"
415
+
416
+ app_path = "/tmp/snapshot/build/MindNode.app/"
417
+
418
+ FileUtils.mkdir_p(File.join(app_path, folder_name))
419
+
420
+ Dir.glob(File.join(example_files, '*.mindnode')).each do |example_path|
421
+ puts "Copying '#{example_path}' to .app container"
422
+ FileUtils.cp_r(example_path, File.join(app_path, folder_name)) rescue nil # in case the file already exists
423
+ end
424
+ end
425
+ ```
426
+
427
+ This is simple Ruby that gets executed **after** the app was built and **before** it is installed on the simulator.
428
+
429
+ In your `Objective-C` code you can now load the documents from your bundle and copy them over to your `Documents` folder (if necessary).
430
+
431
+ ```objective-c
432
+ #ifdef SNAPSHOT
433
+ /** This method will take care of copying over the example documents from the app's bundle into the `Documents` directory */
434
+ + (void)load
435
+ {
436
+ static NSString *exampleFolderName = @"ExampleDocuments";
437
+ if ([[NSBundle mainBundle] pathForResource:exampleFolderName ofType:@""]) {
438
+ NSArray *filesToCopy = @[@"File1",
439
+ @"File2"];
440
+ NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
441
+
442
+ for (NSString *currentFile in filesToCopy) {
443
+ NSString *from = [[NSBundle mainBundle] pathForResource:currentFile ofType:@"filetype" inDirectory:exampleFolderName];
444
+ if (from && documents) {
445
+ NSError *error = nil;
446
+ NSString *resultingFileName = [NSString stringWithFormat:@"%@.filetype", currentFile];
447
+ [[NSFileManager defaultManager] copyItemAtPath:from
448
+ toPath:[documents stringByAppendingPathComponent:resultingFileName]
449
+ error:&error];
450
+
451
+ if (error) {
452
+ NSLog(@"Error copying the example MindNode file: %@", error);
453
+ }
454
+ }
455
+ }
456
+ }
457
+ }
458
+
459
+ ```
460
+
461
+ ## Run in Continuous Integration System
371
462
  If you want to run `snapshot` on your `Jenkins` machine (or any other CI-system), you might run into an `authorization` popup coming up.
372
463
 
373
464
  You can disable this dialog, running the following command:
@@ -386,7 +477,7 @@ Be aware: The file will be executed from the current directory, not the location
386
477
 
387
478
  ## Available language codes
388
479
  ```ruby
389
- ["da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "zh_CN", "cmn-Hant"]
480
+ ["cs-CZ", "da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "cmn-Hant"]
390
481
  ```
391
482
 
392
483
  ## Use a clean status bar
@@ -434,6 +525,10 @@ When the app dies directly after the application is launched there might be 2 pr
434
525
  - The simulator is somehow in a broken state and you need to re-create it. You can use `snapshot reset_simulators` to reset all simulators (this will remove all installed apps)
435
526
  - You haven't enabled the correct architectures. Make sure you have the same architectures as in the example project of this repository.
436
527
 
528
+ ### Snapshot throws an `Instruments Usage Error: Timed out waiting for device to boot: ...` error
529
+
530
+ This can happen when you launch `fastlane` or `snapshot` inside of a tool like `tmux`. Thankfully, Chris Johnsen wrote a fix to help us out, which you can find [here](https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard). Just follow the instructions at his repository, and launching the Simulator from `tmux` will work!
531
+
437
532
  ## Determine language in UI Automation script
438
533
 
439
534
  To detect the currently used localization in your Javascript file, use the following code:
@@ -450,6 +545,8 @@ var language = result.stdout.substring(0, result.stdout.length - 1);
450
545
  # License
451
546
  This project is licensed under the terms of the MIT license. See the LICENSE file.
452
547
 
548
+ > This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.
549
+
453
550
  # Contributing
454
551
 
455
552
  1. Create an issue to discuss about your idea
@@ -32,6 +32,11 @@ screenshots_path "./screenshots"
32
32
  # By default, the latest version should be used automatically. If you want to change it, do it here
33
33
  # ios_version '8.1'
34
34
 
35
+ # Comment out the line below to add a `SNAPSHOT` preprocessor macro
36
+ # More information available: https://github.com/krausefx/snapshot#custom-args-for-the-build-command
37
+ # custom_build_args "GCC_PREPROCESSOR_DEFINITIONS='$(inherited) SNAPSHOT=1'"
38
+
39
+
35
40
  # Custom Callbacks
36
41
 
37
42
  # setup_for_device_change do |device, udid, language|
@@ -40,7 +40,7 @@ module Snapshot
40
40
  Helper.log.info '#############################################################'
41
41
  Helper.log.info "# xctool is recommended to build the apps"
42
42
  Helper.log.info "# Install it using 'brew install xctool'"
43
- Helper.log.info "# Falling back to xcode build instead "
43
+ Helper.log.info "# Falling back to xcodebuild instead "
44
44
  Helper.log.info '#############################################################'
45
45
  end
46
46
  end
@@ -27,6 +27,7 @@
27
27
  }
28
28
  td {
29
29
  text-align: center;
30
+ min-width: 200px;
30
31
  }
31
32
  #overlay {
32
33
  position:fixed;
@@ -176,7 +177,7 @@
176
177
  overlay.style.display = "none";
177
178
  })
178
179
 
179
- document.onkeypress = function(e) {
180
+ function keyPressed(e) {
180
181
  e = e || window.event;
181
182
  var charCode = e.keyCode || e.which;
182
183
  switch(charCode) {
@@ -196,9 +197,11 @@
196
197
  case 100:
197
198
  e.preventDefault();
198
199
  document.getElementById('imageDisplay').dataset.counter -= 2; // hacky
200
+ doClick(imageDisplay);
199
201
  break;
200
202
  }
201
203
  };
204
+ document.body.addEventListener('keydown', keyPressed);
202
205
  </script>
203
206
  </body>
204
207
  </html>
@@ -1,3 +1,3 @@
1
1
  module Snapshot
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snapshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
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-05-15 00:00:00.000000000 Z
11
+ date: 2015-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastimage
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.6.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.6.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fastlane_core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.7.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.7.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 3.1.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.1.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: yard
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: 0.8.7.4
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.8.7.4
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: codeclimate-test-reporter
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  description: Automate taking localized screenshots of your iOS app on every device
@@ -161,17 +161,17 @@ require_paths:
161
161
  - lib
162
162
  required_ruby_version: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: 2.0.0
167
167
  required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  requirements:
169
- - - '>='
169
+ - - ">="
170
170
  - !ruby/object:Gem::Version
171
171
  version: '0'
172
172
  requirements: []
173
173
  rubyforge_project:
174
- rubygems_version: 2.2.2
174
+ rubygems_version: 2.4.6
175
175
  signing_key:
176
176
  specification_version: 4
177
177
  summary: Automate taking localized screenshots of your iOS app on every device