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 +4 -4
- data/README.md +113 -16
- data/lib/assets/SnapfileTemplate +5 -0
- data/lib/snapshot/dependency_checker.rb +1 -1
- data/lib/snapshot/page.html.erb +4 -1
- data/lib/snapshot/version.rb +1 -1
- metadata +21 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 128e1fba0308d08053dbf2817d712d0c469ffa19
|
4
|
+
data.tar.gz: d60afccfcb75690522e94724d620f24dfc52b061
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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> •
|
14
14
|
<a href="https://github.com/KrauseFx/produce">produce</a> •
|
15
15
|
<a href="https://github.com/KrauseFx/cert">cert</a> •
|
16
|
-
<a href="https://github.com/KrauseFx/codes">codes</a>
|
16
|
+
<a href="https://github.com/KrauseFx/codes">codes</a> •
|
17
|
+
<a href="https://github.com/fastlane/spaceship">spaceship</a> •
|
18
|
+
<a href="https://github.com/fastlane/pilot">pilot</a> •
|
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
|
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
|
-
-
|
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
|
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("./
|
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
|
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
|
-
##
|
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", "
|
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
|
data/lib/assets/SnapfileTemplate
CHANGED
@@ -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
|
43
|
+
Helper.log.info "# Falling back to xcodebuild instead "
|
44
44
|
Helper.log.info '#############################################################'
|
45
45
|
end
|
46
46
|
end
|
data/lib/snapshot/page.html.erb
CHANGED
@@ -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
|
-
|
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>
|
data/lib/snapshot/version.rb
CHANGED
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.
|
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-
|
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.
|
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
|