snapshot 0.3.2 → 0.3.3
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 +22 -16
 - data/bin/snapshot +3 -2
 - data/lib/assets/SnapfileTemplate +2 -6
 - data/lib/snapshot/builder.rb +13 -6
 - data/lib/snapshot/dependency_checker.rb +8 -0
 - data/lib/snapshot/page.html.erb +3 -2
 - data/lib/snapshot/reports_generator.rb +2 -3
 - data/lib/snapshot/runner.rb +36 -6
 - data/lib/snapshot/snapshot_config.rb +5 -8
 - data/lib/snapshot/snapshot_file.rb +6 -9
 - 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: 63d4849c32160441375a38343e1788f096de13b1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 3aeddc0b99d47752887b6164fb5b6bc13d4bae9d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 72791e5862dc34a5c23f357c4636519a3b7c180a1ed7ed038f20159bc6f29c2a683a490782a940b9bceece5bbd3ebfaa88f66f555d6e91921ccdf22feae2a88f
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 962e41980b306165d10e226ba8a4228dde0f9dce9e79f3c513aafbadfe7088281673b7b39ede657e3e7d519558a2af12c1d2e7a63f631bc56b848d99e49bdc83
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,7 +2,8 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            <a href="https://github.com/KrauseFx/deliver">Deliver</a> • 
         
     | 
| 
       3 
3 
     | 
    
         
             
            <b>Snapshot</b> • 
         
     | 
| 
       4 
4 
     | 
    
         
             
            <a href="https://github.com/KrauseFx/frameit">FrameIt</a> • 
         
     | 
| 
       5 
     | 
    
         
            -
            <a href="https://github.com/KrauseFx/PEM">PEM</a>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <a href="https://github.com/KrauseFx/PEM">PEM</a> • 
         
     | 
| 
      
 6 
     | 
    
         
            +
            <a href="https://github.com/KrauseFx/sigh">Sigh</a>
         
     | 
| 
       6 
7 
     | 
    
         
             
            </p>
         
     | 
| 
       7 
8 
     | 
    
         
             
            -------
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
         @@ -10,7 +11,7 @@ 
     | 
|
| 
       10 
11 
     | 
    
         
             
                <img src="assets/snapshot.png">
         
     | 
| 
       11 
12 
     | 
    
         
             
            </p>
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            Snapshot - Create  
     | 
| 
      
 14 
     | 
    
         
            +
            Snapshot - Create iOS App Screenshots
         
     | 
| 
       14 
15 
     | 
    
         
             
            ============
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         
             
            [](https://twitter.com/KrauseFx)
         
     | 
| 
         @@ -41,13 +42,15 @@ Follow the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx) 
     | 
|
| 
       41 
42 
     | 
    
         | 
| 
       42 
43 
     | 
    
         | 
| 
       43 
44 
     | 
    
         
             
            -------
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
            <p align="center">
         
     | 
| 
      
 46 
     | 
    
         
            +
                <a href="#features">Features</a> • 
         
     | 
| 
      
 47 
     | 
    
         
            +
                <a href="#installation">Installation</a> • 
         
     | 
| 
      
 48 
     | 
    
         
            +
                <a href="#ui-automation">UI Automation</a> • 
         
     | 
| 
      
 49 
     | 
    
         
            +
                <a href="#quick-start">Quick Start</a> • 
         
     | 
| 
      
 50 
     | 
    
         
            +
                <a href="#usage">Usage</a> • 
         
     | 
| 
      
 51 
     | 
    
         
            +
                <a href="#tips">Tips</a> • 
         
     | 
| 
      
 52 
     | 
    
         
            +
                <a href="#need-help">Need help?</a>
         
     | 
| 
      
 53 
     | 
    
         
            +
            </p>
         
     | 
| 
       51 
54 
     | 
    
         | 
| 
       52 
55 
     | 
    
         
             
            -------
         
     | 
| 
       53 
56 
     | 
    
         | 
| 
         @@ -56,7 +59,8 @@ Follow the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx) 
     | 
|
| 
       56 
59 
     | 
    
         
             
            - Create hundreds of screenshots in multiple languages on all simulators
         
     | 
| 
       57 
60 
     | 
    
         
             
            - Configure it once, store the configuration in git
         
     | 
| 
       58 
61 
     | 
    
         
             
            - Do something else, while the computer takes the screenshots for you
         
     | 
| 
       59 
     | 
    
         
            -
            - Very easy to integrate with ```deliver```
         
     | 
| 
      
 62 
     | 
    
         
            +
            - Very easy to integrate with [```deliver```](https://github.com/KrauseFx/deliver)
         
     | 
| 
      
 63 
     | 
    
         
            +
            - Generates a beautiful web page, which shows all screenshots on all devices. This is perfect to send to Q&A or the marketing team
         
     | 
| 
       60 
64 
     | 
    
         
             
            - ```Snapshot``` automatically waits for network requests to be finished before taking a screenshot (we don't want loading images in the App Store screenshots)
         
     | 
| 
       61 
65 
     | 
    
         | 
| 
       62 
66 
     | 
    
         
             
            After ```Snapshot``` successfully created new screenshots, it will generate a beautiful html file to get a quick overview of all screens:
         
     | 
| 
         @@ -184,12 +188,6 @@ By default, ```snapshot``` will look for your project in the current directory. 
     | 
|
| 
       184 
188 
     | 
    
         
             
            project_path "./my_project/Project.xcworkspace"
         
     | 
| 
       185 
189 
     | 
    
         
             
            ```
         
     | 
| 
       186 
190 
     | 
    
         | 
| 
       187 
     | 
    
         
            -
            ### HTML Report Path
         
     | 
| 
       188 
     | 
    
         
            -
            After all screenshots were created, a HTML file will be generated, to quickly get an overview of all screens on all devices. You can set a custom export path, to easily integrate the HTML report as ```Jenkins``` test result page.
         
     | 
| 
       189 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       190 
     | 
    
         
            -
            html_path "~/Desktop/screens.html"
         
     | 
| 
       191 
     | 
    
         
            -
            ```
         
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
191 
     | 
    
         
             
            ### iOS Version
         
     | 
| 
       194 
192 
     | 
    
         
             
            I'll try to keep the script up to date. If you need to change the iOS version, you can do it like this:
         
     | 
| 
       195 
193 
     | 
    
         | 
| 
         @@ -238,6 +236,14 @@ end 
     | 
|
| 
       238 
236 
     | 
    
         
             
            In case you want to skip this process, just add ```skip_alpha_removal``` to your ```Snapfile```.
         
     | 
| 
       239 
237 
     | 
    
         | 
| 
       240 
238 
     | 
    
         
             
            # Tips
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
            ## Other helpful tools
         
     | 
| 
      
 241 
     | 
    
         
            +
            Check out other tools in this collection to speed up your deployment process:
         
     | 
| 
      
 242 
     | 
    
         
            +
            - [```deliver```](https://github.com/KrauseFx/deliver): Deploy screenshots, app metadata and app updates to the App Store using just one command.
         
     | 
| 
      
 243 
     | 
    
         
            +
            - [```FrameIt```](https://github.com/KrauseFx/frameit): Want a device frame around your screenshot? Do it in an instant!
         
     | 
| 
      
 244 
     | 
    
         
            +
            - [```PEM```](https://github.com/KrauseFx/pem): Tired of manually creating and maintaining your push certification profiles?
         
     | 
| 
      
 245 
     | 
    
         
            +
            - [```sigh```](https://github.com/KrauseFx/sigh): Because you would rather spend your time building stuff than fighting provisioning.
         
     | 
| 
      
 246 
     | 
    
         
            +
             
     | 
| 
       241 
247 
     | 
    
         
             
            ## Specify a custom ```Snapfile```
         
     | 
| 
       242 
248 
     | 
    
         | 
| 
       243 
249 
     | 
    
         
             
                snapshot --snapfile ./SpecialSnapfile
         
     | 
    
        data/bin/snapshot
    CHANGED
    
    | 
         @@ -31,10 +31,11 @@ command :run do |c| 
     | 
|
| 
       31 
31 
     | 
    
         
             
              c.syntax = 'snapshot'
         
     | 
| 
       32 
32 
     | 
    
         
             
              c.description = 'Run the script, to take all the screenshots'
         
     | 
| 
       33 
33 
     | 
    
         
             
              c.option '--snapfile STRING', String, 'Custom path for your Snapfile'
         
     | 
| 
      
 34 
     | 
    
         
            +
              c.option '--noclean', 'Skips the clean process when running snapshot.'
         
     | 
| 
       34 
35 
     | 
    
         | 
| 
       35 
36 
     | 
    
         
             
              c.action do |args, options|
         
     | 
| 
       36 
37 
     | 
    
         
             
                Snapshot::SnapshotConfig.shared_instance(options.snapfile) if options.snapfile # to set the custom Snapfile path if given
         
     | 
| 
       37 
     | 
    
         
            -
                Snapshot::Runner.new.work
         
     | 
| 
      
 38 
     | 
    
         
            +
                Snapshot::Runner.new.work(clean: !options.noclean)
         
     | 
| 
       38 
39 
     | 
    
         
             
              end
         
     | 
| 
       39 
40 
     | 
    
         
             
            end
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
         @@ -45,4 +46,4 @@ command :init do |c| 
     | 
|
| 
       45 
46 
     | 
    
         
             
              c.action do |args, options|
         
     | 
| 
       46 
47 
     | 
    
         
             
                Snapshot::SnapfileCreator.create('.')
         
     | 
| 
       47 
48 
     | 
    
         
             
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/assets/SnapfileTemplate
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #  
     | 
| 
      
 1 
     | 
    
         
            +
            # Uncomment the lines below you want to change by removing the # in the beginning
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # A list of devices you want to take the screenshots from
         
     | 
| 
       4 
4 
     | 
    
         
             
            devices([
         
     | 
| 
         @@ -30,10 +30,6 @@ screenshots_path "./screenshots" 
     | 
|
| 
       30 
30 
     | 
    
         
             
            # By default, the latest version should be used automatically. If you want to change it, do it here
         
     | 
| 
       31 
31 
     | 
    
         
             
            # ios_version '8.1'
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
            # The path, on which the HTML file should be exported to
         
     | 
| 
       34 
     | 
    
         
            -
            # html_path './screenshots.html'
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
33 
     | 
    
         
             
            # Custom Callbacks
         
     | 
| 
       38 
34 
     | 
    
         | 
| 
       39 
35 
     | 
    
         
             
            # setup_for_device_change do |device| 
         
     | 
| 
         @@ -52,4 +48,4 @@ screenshots_path "./screenshots" 
     | 
|
| 
       52 
48 
     | 
    
         
             
            # teardown_device do |device|
         
     | 
| 
       53 
49 
     | 
    
         
             
            #   puts "Cleaning device #{device}"
         
     | 
| 
       54 
50 
     | 
    
         
             
            #   system("./cleanup.sh")
         
     | 
| 
       55 
     | 
    
         
            -
            # end
         
     | 
| 
      
 51 
     | 
    
         
            +
            # end
         
     | 
    
        data/lib/snapshot/builder.rb
    CHANGED
    
    | 
         @@ -6,16 +6,18 @@ module Snapshot 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                def initialize
         
     | 
| 
       9 
     | 
    
         
            -
                   
     | 
| 
      
 9 
     | 
    
         
            +
                  
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                def build_app
         
     | 
| 
      
 12 
     | 
    
         
            +
                def build_app(clean: true)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  FileUtils.rm_rf(BUILD_DIR) if clean
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       13 
15 
     | 
    
         
             
                  command = SnapshotConfig.shared_instance.build_command
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         
             
                  if not command
         
     | 
| 
       16 
18 
     | 
    
         
             
                    # That's the default case, user did not provide a custom build_command
         
     | 
| 
       17 
19 
     | 
    
         
             
                    raise "Could not find project. Please pass the path to your project using 'project_path'.".red unless SnapshotConfig.shared_instance.project_name
         
     | 
| 
       18 
     | 
    
         
            -
                    command = generate_build_command
         
     | 
| 
      
 20 
     | 
    
         
            +
                    command = generate_build_command(clean: clean)
         
     | 
| 
       19 
21 
     | 
    
         
             
                  end
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
                  Helper.log.info "Building project '#{SnapshotConfig.shared_instance.project_name}' - this might take some time...".green
         
     | 
| 
         @@ -51,7 +53,7 @@ module Snapshot 
     | 
|
| 
       51 
53 
     | 
    
         
             
                    end
         
     | 
| 
       52 
54 
     | 
    
         
             
                  end
         
     | 
| 
       53 
55 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
                  def generate_build_command
         
     | 
| 
      
 56 
     | 
    
         
            +
                  def generate_build_command(clean: true)
         
     | 
| 
       55 
57 
     | 
    
         
             
                    scheme = SnapshotConfig.shared_instance.scheme
         
     | 
| 
       56 
58 
     | 
    
         | 
| 
       57 
59 
     | 
    
         
             
                    proj_path = SnapshotConfig.shared_instance.project_path
         
     | 
| 
         @@ -59,16 +61,21 @@ module Snapshot 
     | 
|
| 
       59 
61 
     | 
    
         
             
                    proj_key = 'workspace' if proj_path.end_with?'.xcworkspace'
         
     | 
| 
       60 
62 
     | 
    
         | 
| 
       61 
63 
     | 
    
         
             
                    build_command = (DependencyChecker.xctool_installed? ? 'xctool' : 'xcodebuild')
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                    actions = []
         
     | 
| 
      
 66 
     | 
    
         
            +
                    actions << 'clean' if clean
         
     | 
| 
      
 67 
     | 
    
         
            +
                    actions << "build"
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
       62 
69 
     | 
    
         
             
                    [
         
     | 
| 
       63 
70 
     | 
    
         
             
                      build_command,
         
     | 
| 
       64 
     | 
    
         
            -
                      "-sdk iphonesimulator 
     | 
| 
      
 71 
     | 
    
         
            +
                      "-sdk iphonesimulator",
         
     | 
| 
       65 
72 
     | 
    
         
             
                      "CONFIGURATION_BUILD_DIR='#{BUILD_DIR}/build'",
         
     | 
| 
       66 
73 
     | 
    
         
             
                      "-#{proj_key} '#{proj_path}'",
         
     | 
| 
       67 
74 
     | 
    
         
             
                      "-scheme '#{scheme}'",
         
     | 
| 
       68 
75 
     | 
    
         
             
                      "DSTROOT='#{BUILD_DIR}'",
         
     | 
| 
       69 
76 
     | 
    
         
             
                      "OBJROOT='#{BUILD_DIR}'",
         
     | 
| 
       70 
77 
     | 
    
         
             
                      "SYMROOT='#{BUILD_DIR}'",
         
     | 
| 
       71 
     | 
    
         
            -
                       
     | 
| 
      
 78 
     | 
    
         
            +
                      actions.join(' ')
         
     | 
| 
       72 
79 
     | 
    
         
             
                    ].join(' ')
         
     | 
| 
       73 
80 
     | 
    
         
             
                  end
         
     | 
| 
       74 
81 
     | 
    
         
             
              end
         
     | 
| 
         @@ -5,6 +5,7 @@ module Snapshot 
     | 
|
| 
       5 
5 
     | 
    
         
             
                  self.check_simulators
         
     | 
| 
       6 
6 
     | 
    
         
             
                  self.check_xctool
         
     | 
| 
       7 
7 
     | 
    
         
             
                  self.check_for_automation_subfolder
         
     | 
| 
      
 8 
     | 
    
         
            +
                  self.check_simctl
         
     | 
| 
       8 
9 
     | 
    
         
             
                end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                def self.check_xcode_select
         
     | 
| 
         @@ -24,6 +25,7 @@ module Snapshot 
     | 
|
| 
       24 
25 
     | 
    
         
             
                    Helper.log.fatal '#############################################################'
         
     | 
| 
       25 
26 
     | 
    
         
             
                    Helper.log.fatal "# You have to add new simulators using Xcode"
         
     | 
| 
       26 
27 
     | 
    
         
             
                    Helper.log.fatal "# Xcode => Window => Devices"
         
     | 
| 
      
 28 
     | 
    
         
            +
                    Helper.log.fatal "# Please run `instruments -s` to verify your xcode path"
         
     | 
| 
       27 
29 
     | 
    
         
             
                    Helper.log.fatal '#############################################################'
         
     | 
| 
       28 
30 
     | 
    
         
             
                    raise "Create the new simulators and run this script again"
         
     | 
| 
       29 
31 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -48,5 +50,11 @@ module Snapshot 
     | 
|
| 
       48 
50 
     | 
    
         
             
                    raise "Seems like you have an 'Automation' folder in the current directory. You need to delete/rename it!".red
         
     | 
| 
       49 
51 
     | 
    
         
             
                  end
         
     | 
| 
       50 
52 
     | 
    
         
             
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def self.check_simctl
         
     | 
| 
      
 55 
     | 
    
         
            +
                  unless `xcrun simctl`.include?"openurl"
         
     | 
| 
      
 56 
     | 
    
         
            +
                    raise "Could not find `xcrun simctl`. Make sure you have the latest version of Xcode and Mac OS installed.".red
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
       51 
59 
     | 
    
         
             
              end
         
     | 
| 
       52 
60 
     | 
    
         
             
            end
         
     | 
    
        data/lib/snapshot/page.html.erb
    CHANGED
    
    | 
         @@ -40,10 +40,11 @@ 
     | 
|
| 
       40 
40 
     | 
    
         
             
                        <% screens.each do |screen_path| %>
         
     | 
| 
       41 
41 
     | 
    
         
             
                          <% next if screen_path.include?"_framed.png" %>
         
     | 
| 
       42 
42 
     | 
    
         
             
                          <td>
         
     | 
| 
      
 43 
     | 
    
         
            +
                            <% path = screen_path.gsub("./screenshots/", "./") %>
         
     | 
| 
       43 
44 
     | 
    
         
             
                            <% screen_size = FastImage.size(screen_path) %>
         
     | 
| 
       44 
     | 
    
         
            -
                            <a href="<%=  
     | 
| 
      
 45 
     | 
    
         
            +
                            <a href="<%= path %>" target="_blank">
         
     | 
| 
       45 
46 
     | 
    
         
             
                              <img class="screenshot" 
         
     | 
| 
       46 
     | 
    
         
            -
                                     src="<%=  
     | 
| 
      
 47 
     | 
    
         
            +
                                     src="<%= path %>",
         
     | 
| 
       47 
48 
     | 
    
         
             
                                   style="width: <%= [(screen_size[0] / divide_size_by).round, max_width].min %>px;" />
         
     | 
| 
       48 
49 
     | 
    
         
             
                            </a>
         
     | 
| 
       49 
50 
     | 
    
         
             
                          </td>
         
     | 
| 
         @@ -28,11 +28,10 @@ module Snapshot 
     | 
|
| 
       28 
28 
     | 
    
         
             
                  html_path = [lib_path, "snapshot/page.html.erb"].join('/')
         
     | 
| 
       29 
29 
     | 
    
         
             
                  html = ERB.new(File.read(html_path)).result(binding) # http://www.rrn.dk/rubys-erb-templating-system
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                  
         
     | 
| 
       32 
     | 
    
         
            -
                  export_path = SnapshotConfig.shared_instance.html_path
         
     | 
| 
      
 31 
     | 
    
         
            +
                  export_path = "#{screens_path}/screenshots.html"
         
     | 
| 
       33 
32 
     | 
    
         
             
                  File.write(export_path, html)
         
     | 
| 
       34 
33 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                  Helper.log.info "Successfully created HTML file with all the screenshots: #{export_path}".green
         
     | 
| 
      
 34 
     | 
    
         
            +
                  Helper.log.info "Successfully created HTML file with an overview of all the screenshots: '#{File.expand_path(export_path)}'".green
         
     | 
| 
       36 
35 
     | 
    
         
             
                end
         
     | 
| 
       37 
36 
     | 
    
         | 
| 
       38 
37 
     | 
    
         
             
                private
         
     | 
    
        data/lib/snapshot/runner.rb
    CHANGED
    
    | 
         @@ -8,18 +8,23 @@ module Snapshot 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  Snapshot::DependencyChecker.check_dependencies
         
     | 
| 
       9 
9 
     | 
    
         
             
                end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                def work
         
     | 
| 
      
 11 
     | 
    
         
            +
                def work(clean: true)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  SnapshotConfig.shared_instance.js_file # to verify the file can be found
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                  Builder.new.build_app
         
     | 
| 
      
 14 
     | 
    
         
            +
                  Builder.new.build_app(clean: clean)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @app_path = Dir.glob("/tmp/snapshot/build/*.app").first
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         
             
                  counter = 0
         
     | 
| 
       17 
18 
     | 
    
         
             
                  errors = []
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       18 
20 
     | 
    
         
             
                  SnapshotConfig.shared_instance.devices.each do |device|
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
22 
     | 
    
         
             
                    SnapshotConfig.shared_instance.blocks[:setup_for_device_change].call(device)  # Callback
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
24 
     | 
    
         
             
                    SnapshotConfig.shared_instance.languages.each do |language|
         
     | 
| 
      
 25 
     | 
    
         
            +
                      
         
     | 
| 
      
 26 
     | 
    
         
            +
                      # uninstall_app(device)
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       23 
28 
     | 
    
         
             
                      SnapshotConfig.shared_instance.blocks[:setup_for_language_change].call(language, device) # Callback
         
     | 
| 
       24 
29 
     | 
    
         | 
| 
       25 
30 
     | 
    
         
             
                      begin
         
     | 
| 
         @@ -57,12 +62,11 @@ module Snapshot 
     | 
|
| 
       57 
62 
     | 
    
         | 
| 
       58 
63 
     | 
    
         
             
                def run_tests(device, language)
         
     | 
| 
       59 
64 
     | 
    
         
             
                  Helper.log.info "Running tests on #{device} in language #{language}".green
         
     | 
| 
       60 
     | 
    
         
            -
                  app_path = Dir.glob("/tmp/snapshot/build/*.app").first
         
     | 
| 
       61 
65 
     | 
    
         | 
| 
       62 
66 
     | 
    
         
             
                  clean_old_traces
         
     | 
| 
       63 
67 
     | 
    
         | 
| 
       64 
68 
     | 
    
         
             
                  ENV['SNAPSHOT_LANGUAGE'] = language
         
     | 
| 
       65 
     | 
    
         
            -
                  command = generate_test_command(device, language 
     | 
| 
      
 69 
     | 
    
         
            +
                  command = generate_test_command(device, language)
         
     | 
| 
       66 
70 
     | 
    
         
             
                  Helper.log.debug command.yellow
         
     | 
| 
       67 
71 
     | 
    
         | 
| 
       68 
72 
     | 
    
         
             
                  retry_run = false
         
     | 
| 
         @@ -98,6 +102,32 @@ module Snapshot 
     | 
|
| 
       98 
102 
     | 
    
         
             
                  return errors
         
     | 
| 
       99 
103 
     | 
    
         
             
                end
         
     | 
| 
       100 
104 
     | 
    
         | 
| 
      
 105 
     | 
    
         
            +
                # def uninstall_app(device)
         
     | 
| 
      
 106 
     | 
    
         
            +
                #   def com(str)
         
     | 
| 
      
 107 
     | 
    
         
            +
                #     puts str.yellow
         
     | 
| 
      
 108 
     | 
    
         
            +
                #     puts `#{str}`
         
     | 
| 
      
 109 
     | 
    
         
            +
                #     sleep 1.0
         
     | 
| 
      
 110 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                #   def find_simulator(name)
         
     | 
| 
      
 113 
     | 
    
         
            +
                #     all = `instruments -s`.split("\n")
         
     | 
| 
      
 114 
     | 
    
         
            +
                #     all.each do |current|
         
     | 
| 
      
 115 
     | 
    
         
            +
                #       return current.match(/\[(.*)\]/)[1] if current.include?name
         
     | 
| 
      
 116 
     | 
    
         
            +
                #     end
         
     | 
| 
      
 117 
     | 
    
         
            +
                #     raise "Could not find simulator '#{name}' to install the app on."
         
     | 
| 
      
 118 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                #   udid = find_simulator(device)
         
     | 
| 
      
 121 
     | 
    
         
            +
                #   com("killall 'iOS Simulator'")
         
     | 
| 
      
 122 
     | 
    
         
            +
                #   com("xcrun simctl boot '#{udid}'")
         
     | 
| 
      
 123 
     | 
    
         
            +
                #   com("xcrun simctl uninstall '#{udid}' 'net.sunapps.123'") # TODO: Dynamic
         
     | 
| 
      
 124 
     | 
    
         
            +
                #   sleep 3
         
     | 
| 
      
 125 
     | 
    
         
            +
                #   com("xcrun simctl install '#{udid}' '#{@app_path}'")
         
     | 
| 
      
 126 
     | 
    
         
            +
                #   com("xcrun simctl shutdown '#{udid}'")
         
     | 
| 
      
 127 
     | 
    
         
            +
                #   sleep 1
         
     | 
| 
      
 128 
     | 
    
         
            +
                #   com("killall 'iOS Simulator'")
         
     | 
| 
      
 129 
     | 
    
         
            +
                # end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
       101 
131 
     | 
    
         
             
                def parse_test_line(line)
         
     | 
| 
       102 
132 
     | 
    
         
             
                  if line =~ /.*Target failed to run.*/
         
     | 
| 
       103 
133 
     | 
    
         
             
                    return :retry
         
     | 
| 
         @@ -127,7 +157,7 @@ module Snapshot 
     | 
|
| 
       127 
157 
     | 
    
         
             
                  return Dir.glob("#{TRACE_DIR}/**/*.png").count
         
     | 
| 
       128 
158 
     | 
    
         
             
                end
         
     | 
| 
       129 
159 
     | 
    
         | 
| 
       130 
     | 
    
         
            -
                def generate_test_command(device, language 
     | 
| 
      
 160 
     | 
    
         
            +
                def generate_test_command(device, language)
         
     | 
| 
       131 
161 
     | 
    
         
             
                  script_path = SnapshotConfig.shared_instance.js_file
         
     | 
| 
       132 
162 
     | 
    
         | 
| 
       133 
163 
     | 
    
         
             
                  [
         
     | 
| 
         @@ -135,7 +165,7 @@ module Snapshot 
     | 
|
| 
       135 
165 
     | 
    
         
             
                    "-w '#{device}'",
         
     | 
| 
       136 
166 
     | 
    
         
             
                    "-D '#{TRACE_DIR}/trace'",
         
     | 
| 
       137 
167 
     | 
    
         
             
                    "-t 'Automation'",
         
     | 
| 
       138 
     | 
    
         
            -
                    "'#{app_path}'",
         
     | 
| 
      
 168 
     | 
    
         
            +
                    "'#{@app_path}'",
         
     | 
| 
       139 
169 
     | 
    
         
             
                    "-e UIARESULTSPATH '#{TRACE_DIR}'",
         
     | 
| 
       140 
170 
     | 
    
         
             
                    "-e UIASCRIPT '#{script_path}'",
         
     | 
| 
       141 
171 
     | 
    
         
             
                    "-AppleLanguages '(#{language})'",
         
     | 
| 
         @@ -25,9 +25,6 @@ module Snapshot 
     | 
|
| 
       25 
25 
     | 
    
         
             
                # @return (String) The path, in which the screenshots should be stored
         
     | 
| 
       26 
26 
     | 
    
         
             
                attr_accessor :screenshots_path
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                # @return (String) The path, in which the HTML file should be exported to
         
     | 
| 
       29 
     | 
    
         
            -
                attr_accessor :html_path
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
28 
     | 
    
         
             
                # @return (String) The build command, wich should build the app to '/tmp/snapshot'
         
     | 
| 
       32 
29 
     | 
    
         
             
                attr_accessor :build_command
         
     | 
| 
       33 
30 
     | 
    
         | 
| 
         @@ -48,12 +45,14 @@ module Snapshot 
     | 
|
| 
       48 
45 
     | 
    
         
             
                  path ||= './Snapfile'
         
     | 
| 
       49 
46 
     | 
    
         
             
                  set_defaults
         
     | 
| 
       50 
47 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                  if  
     | 
| 
      
 48 
     | 
    
         
            +
                  if File.exists?path
         
     | 
| 
      
 49 
     | 
    
         
            +
                    Helper.log.info "Using '#{path}'".green
         
     | 
| 
       52 
50 
     | 
    
         
             
                    self.snapshot_file = SnapshotFile.new(path, self)
         
     | 
| 
       53 
51 
     | 
    
         
             
                  else
         
     | 
| 
       54 
52 
     | 
    
         
             
                    if path != './Snapfile'
         
     | 
| 
       55 
53 
     | 
    
         
             
                      raise "Could not find Snapfile at path '#{path}'. Make sure you pass the full path, including 'Snapfile'".red
         
     | 
| 
       56 
54 
     | 
    
         
             
                    else
         
     | 
| 
      
 55 
     | 
    
         
            +
                      # Using default settings, since user didn't provide a path
         
     | 
| 
       57 
56 
     | 
    
         
             
                      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.".red
         
     | 
| 
       58 
57 
     | 
    
         
             
                    end
         
     | 
| 
       59 
58 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -81,8 +80,6 @@ module Snapshot 
     | 
|
| 
       81 
80 
     | 
    
         
             
                  self.project_path = (Dir.glob("./*.xcworkspace").first rescue nil) # prefer workspaces ofc
         
     | 
| 
       82 
81 
     | 
    
         
             
                  self.project_path ||= (Dir.glob("./*.xcodeproj").first rescue nil)
         
     | 
| 
       83 
82 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                  self.html_path = './screenshots.html'
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
83 
     | 
    
         
             
                  empty = Proc.new {}
         
     | 
| 
       87 
84 
     | 
    
         
             
                  self.blocks = {
         
     | 
| 
       88 
85 
     | 
    
         
             
                    setup_for_device_change: empty, 
         
     | 
| 
         @@ -102,7 +99,7 @@ module Snapshot 
     | 
|
| 
       102 
99 
     | 
    
         | 
| 
       103 
100 
     | 
    
         
             
                # Returns the file name of the project
         
     | 
| 
       104 
101 
     | 
    
         
             
                def project_name
         
     | 
| 
       105 
     | 
    
         
            -
                  (self.project_path 
     | 
| 
      
 102 
     | 
    
         
            +
                  File.basename(self.project_path, ".*" )
         
     | 
| 
       106 
103 
     | 
    
         
             
                end
         
     | 
| 
       107 
104 
     | 
    
         | 
| 
       108 
105 
     | 
    
         
             
                # The JavaScript UIAutomation file
         
     | 
| 
         @@ -120,7 +117,7 @@ module Snapshot 
     | 
|
| 
       120 
117 
     | 
    
         
             
                # The scheme to use (either it's set, or there is only one, or user has to enter it)
         
     | 
| 
       121 
118 
     | 
    
         
             
                def scheme
         
     | 
| 
       122 
119 
     | 
    
         
             
                  begin
         
     | 
| 
       123 
     | 
    
         
            -
                    command = "cd '#{ 
     | 
| 
      
 120 
     | 
    
         
            +
                    command = "cd '#{File.expand_path('..', project_path)}'; xcodebuild -list"
         
     | 
| 
       124 
121 
     | 
    
         
             
                    schemes = `#{command}`.split("Schemes:").last.split("\n").each { |a| a.strip! }.delete_if { |a| a == '' }
         
     | 
| 
       125 
122 
     | 
    
         
             
                    Helper.log.debug "Found available schemes: #{schemes}"
         
     | 
| 
       126 
123 
     | 
    
         | 
| 
         @@ -36,14 +36,10 @@ module Snapshot 
     | 
|
| 
       36 
36 
     | 
    
         
             
                    when :js_file
         
     | 
| 
       37 
37 
     | 
    
         
             
                      raise "js_file has to be an String".red unless value.kind_of?String
         
     | 
| 
       38 
38 
     | 
    
         
             
                      raise "js_file at path '#{value}' not found".red unless File.exists?value
         
     | 
| 
       39 
     | 
    
         
            -
                      @config.manual_js_file =  
     | 
| 
      
 39 
     | 
    
         
            +
                      @config.manual_js_file = File.expand_path(value)
         
     | 
| 
       40 
40 
     | 
    
         
             
                    when :screenshots_path
         
     | 
| 
       41 
41 
     | 
    
         
             
                      raise "screenshots_path has to be an String".red unless value.kind_of?String
         
     | 
| 
       42 
     | 
    
         
            -
                      @config.screenshots_path =  
     | 
| 
       43 
     | 
    
         
            -
                    when :html_path
         
     | 
| 
       44 
     | 
    
         
            -
                      raise "html_path has to be an String".red unless value.kind_of?String
         
     | 
| 
       45 
     | 
    
         
            -
                      @config.html_path = value.gsub("~", ENV['HOME'])
         
     | 
| 
       46 
     | 
    
         
            -
                      @config.html_path = @config.html_path + "/screenshots.html" unless @config.html_path.include?".html"
         
     | 
| 
      
 42 
     | 
    
         
            +
                      @config.screenshots_path = File.expand_path(value)
         
     | 
| 
       47 
43 
     | 
    
         
             
                    when :build_command
         
     | 
| 
       48 
44 
     | 
    
         
             
                      raise "build_command has to be an String".red unless value.kind_of?String
         
     | 
| 
       49 
45 
     | 
    
         
             
                      @config.build_command = value
         
     | 
| 
         @@ -52,10 +48,11 @@ module Snapshot 
     | 
|
| 
       52 
48 
     | 
    
         
             
                    when :project_path
         
     | 
| 
       53 
49 
     | 
    
         
             
                      raise "project_path has to be an String".red unless value.kind_of?String
         
     | 
| 
       54 
50 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                       
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
                      path = File.expand_path(value)
         
     | 
| 
      
 52 
     | 
    
         
            +
                      if File.exists?path and (path.end_with?".xcworkspace" or path.end_with?".xcodeproj")
         
     | 
| 
      
 53 
     | 
    
         
            +
                        @config.project_path = path
         
     | 
| 
       57 
54 
     | 
    
         
             
                      else
         
     | 
| 
       58 
     | 
    
         
            -
                        raise "The given project_path '#{ 
     | 
| 
      
 55 
     | 
    
         
            +
                        raise "The given project_path '#{path}' could not be found. Make sure to include the extension as well.".red
         
     | 
| 
       59 
56 
     | 
    
         
             
                      end
         
     | 
| 
       60 
57 
     | 
    
         | 
| 
       61 
58 
     | 
    
         
             
                    # Blocks
         
     | 
    
        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.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Felix Krause
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2014- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-12-09 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: json
         
     |