auto_screenshot 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1151c54fb0fbb5d3ea5e8b387bb3d64cd8eabb54
4
+ data.tar.gz: 93dcf708c899d050d031473d139d4cc5636351aa
5
+ SHA512:
6
+ metadata.gz: f091e87e7bae90e61dad47ba510a9a653928f5e8e090d7e728c2bb1463852900bbea2334e8478bc37a4a26410c5aed51a5684b57d1199bffe64c2c219ddb6687
7
+ data.tar.gz: c3a77ce912c5bf587e48f5370d72fe59cdba4e991d122db73bfe7187f583627340904d0b329f9e909d421567ce327dbcda95a6547d2d6c95d01c807787858863
data/.gitignore CHANGED
@@ -12,6 +12,8 @@ lib/bundler/man
12
12
  pkg
13
13
  rdoc
14
14
  spec/reports
15
- test/tmp
16
- test/version_tmp
15
+ test/
17
16
  tmp
17
+ screenshots
18
+ .DS_Store
19
+ .rvmrc
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --format progress
3
+ -fd
4
+ --drb
data/Gemfile CHANGED
@@ -2,10 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in auto_screenshot.gemspec
4
4
  gemspec
5
-
6
- gem 'capybara'
7
- gem 'json'
8
-
9
- group :development do
10
- gem 'pry'
11
- end
data/README.md CHANGED
@@ -1,49 +1,84 @@
1
- Auto Screenshot
2
- ===============
1
+ # AutoScreenshot
3
2
 
4
- A small library designed to help the document web products.
3
+ Built to capture screenshots of a list of webpages in an automated fashion.
5
4
 
6
- ## Usage
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'auto_screenshot'
10
+
11
+ And then run:
12
+
13
+ bundle
14
+
15
+ Or install it yourself as:
7
16
 
8
17
  gem install auto_screenshot
9
18
 
10
- ### Basics
19
+ ## Options
20
+
21
+ ### URLs
22
+
23
+ An array of valid URLs. Pretty simple.
11
24
 
12
- Pass in an array of URL's,
25
+ ### Folder
13
26
 
14
- urls = ["http://domain.lvh.me:3000", "http://domain.lvh.me:3000/link/1"]
15
- s = Screenshot.new(:urls => urls)
27
+ `folder` is where the screenshots will be saved. The default location is the `screenshots` folder based on where the program is run. But, the example below passes a specific folder path to save screenshots at.
28
+
29
+ client = AutoScreenshot::Screenshot.new(:folder => '/path/to/folder/')
30
+
31
+ ### Action Map
32
+
33
+ `action_map` is a ruby hash. each key of the hash is a full URL string
34
+ and each key is a symbol. The symbol corresponds to a name of a method like `wait`. Here is an example:
35
+
36
+ action_map = {
37
+ "http://example.com/page" => :wait
38
+ }
39
+
40
+ And a custom method could look like:
41
+
42
+ def wait
43
+ sleep 10 # To allow you to login or something
44
+ end
45
+
46
+ ## Usage
16
47
 
17
- read from a [.json](/links.json) file,
48
+ AutoScreenshot saves screenshots of webpages as .png files in a folder. Create a Screenshot client and specify an array of URLs to capture.
18
49
 
19
- s = Screenshot.new(:file => "test.json") # an array of URL's as string
50
+ #### Create a Client. Then set options.
20
51
 
21
- or, read a [.rb](/links.rb) file.
52
+ client = AutoScreenshot::Screenshot.new #=> get a Screenshot object
53
+ client.urls = ["http://google.com, http://github.com"]
54
+ client.folder = "/custom/folder/path"
55
+ client.action_map = {
56
+ "http://example.com/do-something-custom-at-this-url" => :custom_method
57
+ }
22
58
 
23
- s = Screenshot.new(:file => "/users/name/path/to/links.rb")
24
59
 
25
- Run Capybara (Selenium) and Firefox.
60
+ or
26
61
 
27
- s.go # screenshots are saved to the /screenshots directory as .png files.
62
+ #### Create a Client with options.
28
63
 
29
- ### Logging in and custom stuff
64
+ client = AutoScreenshot::Screenshot.new(:urls => [], :folder => "/custom/folder/path", :action_map => {@url_string => :custom_method})
30
65
 
31
- [Action Map](/action_map.rb) - an action map allows you to specify certain URL's that call some ruby code that you write. I built this to accomodate logins. It can be used for whatever.
66
+ ## Contributing
32
67
 
33
- s = Screenshot.new({ :file => "/some/links/in/ruby.rb",
34
- :action_map => "/users/name/path/to/action_map.rb" })
68
+ 1. Say [hi](https://twitter.com/randw) and let me know you're using aut
69
+ 1. Fork it
70
+ 1. Create your feature branch (`git checkout -b my-new-feature`)
71
+ 1. Commit your changes (`git commit -am 'Add some feature'`)
72
+ 1. Push to the branch (`git push origin my-new-feature`)
73
+ 1. Create new Pull Request
35
74
 
36
- load 'lib/auto_screenshot.rb'
75
+ ### During Development
37
76
 
38
- s = AutoScreenshot::Screenshot.new({
39
- :links => "/users/ryanw/Desktop/ci.rb",
40
- :action_mappings => "/path/to/action_mappings.json",
41
- :action_map => "/path/to/action_map.rb",
42
- :folder => "/path/to/screenshot_images"
43
- })
77
+ Run this from the `auto_screenshot/` directory.
44
78
 
79
+ irb
80
+ load 'lib/auto_screenshot.rb'
45
81
 
46
- #### Remember
82
+ And, to build the .gem:
47
83
 
48
- * Ensure your website is running when testing locally.
49
- * Don't abuse anybody's website.
84
+ gem build auto_screenshot.gemspec
@@ -1,18 +1,29 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/auto_screenshot/version', __FILE__)
1
+ #encoding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'auto_screenshot/version'
3
5
 
4
6
  Gem::Specification.new do |gem|
7
+ gem.name = "auto_screenshot"
8
+ gem.version = AutoScreenshot::VERSION
5
9
  gem.authors = ["Ryan Wold"]
6
10
  gem.email = ["wold@afomi.com"]
7
11
  gem.description = %q{'Automatically screenshot webpages'}
8
12
  gem.summary = %q{'Automating webpage screenshots'}
9
13
  gem.homepage = "http://github.com/afomi/auto_screenshot"
14
+ gem.license = "MIT"
10
15
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.files = `git ls-files -z`.split("\x0")
17
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
13
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "auto_screenshot"
15
19
  gem.require_paths = ["lib"]
16
- gem.version = AutoScreenshot::VERSION
17
- gem.add_runtime_dependency 'capybara'
20
+
21
+ gem.add_dependency "capybara"
22
+ gem.add_dependency "json"
23
+ gem.add_dependency "nokogiri"
24
+ gem.add_dependency "selenium-webdriver"
25
+ gem.add_development_dependency "bundler"
26
+ gem.add_development_dependency "pry"
27
+ gem.add_development_dependency "rake"
28
+ gem.add_development_dependency "rspec"
18
29
  end
@@ -0,0 +1,9 @@
1
+ [
2
+ "http://lvh.me/1",
3
+ "http://lvh.me/2",
4
+ "http://lvh.me/3",
5
+ "http://lvh.me/4",
6
+ "http://lvh.me/5",
7
+ "http://lvh.me/6",
8
+ "http://lvh.me/7"
9
+ ]
@@ -0,0 +1,17 @@
1
+ # Sample links.rb file for AutoScreenshot
2
+ #
3
+ # Important: Be sure to return an Array of URL's
4
+
5
+ links = []
6
+
7
+ links << "http://lvh.me/1"
8
+ links << "http://lvh.me/2"
9
+ # links << "http://lvh.me/3"
10
+
11
+ (4..10).each do |i|
12
+ links << "http://lvh.me/#{i}"
13
+ end
14
+
15
+ links << "http://dev.lvh.me:3000/login"
16
+
17
+ $links = links
@@ -1,51 +1,48 @@
1
1
  require "auto_screenshot/version"
2
-
3
- require 'uri'
4
- require 'json'
5
2
  require 'capybara/dsl'
3
+ require 'json'
4
+ require 'uri'
6
5
 
7
6
  module AutoScreenshot
8
7
 
9
8
  class Screenshot
9
+ attr_accessor :urls, :folder, :action_map
10
+
10
11
  include Capybara::DSL
11
12
  Capybara.default_driver = :selenium
12
13
 
13
- attr_accessor :links, :folder, :action_mappings, :action_map
14
-
15
- # Pass in an array of URL's, with http(s)
16
- # or
17
- # Pass in a .json or .rb file of links
14
+ # urls: an array of full URL strings
15
+ # folder: where to store the files
16
+ # action_map: a hash where
17
+ # keys are URL's that are visited
18
+ # values are symbols for custom actions
18
19
  #
19
- # pass in an action_map
20
- # pass in a folder path to where to store the screenshots
21
- def initialize(opts = { :links => "", :action_mappings => [], :action_map => "", :folder => "" })
22
- raise Exception, "please pass in an array of urls like {:urls => []}, or a file, like {:file => \"test.json\"}" unless opts[:links]
23
-
24
- @links = opts[:links]
25
- if @links.class == Array
26
- @links = links
27
- elsif links.class == String
28
- ext = File.extname(@links)
29
- if ext == ".rb"
30
- load @links
31
- @links = $links
32
- elsif ext == ".json"
33
- @links = JSON.parse(File.open(@links, "r").read)
34
- end
35
- end
36
-
37
- @action_mappings = set_action_mappings(opts[:action_mappings])
38
- load opts[:action_map].to_s
39
- @folder = opts[:folder] ||= "screenshots"
20
+ # see the `wait` method for an example of mapping an action
21
+ def initialize(options = {
22
+ urls: [],
23
+ folder: nil,
24
+ action_map: {}
25
+ })
26
+ @urls = options[:urls]
27
+ @folder = options[:folder] ||= "screenshots"
28
+ @action_map = options[:action_map]
40
29
  end
41
30
 
42
- def go
31
+ # Passing `dry_run=true`
32
+ # only lists the URL's that would be processed
33
+ # but does not take screenshots
34
+ def go(dry_run = false)
35
+ raise 'no URLs specified' if @urls.empty?
36
+
43
37
  errors = []
44
- @links.each do |url|
38
+
39
+ @urls.each do |url|
40
+ p url; next if dry_run
41
+
45
42
  begin
46
43
  puts "Getting #{url}"
47
44
  visit "#{url}"
48
-
45
+ sleep 3.0 # arbitrary sleep to allow heavily ajax-y pages to load
49
46
  snap
50
47
  actions(url)
51
48
  rescue => err
@@ -55,31 +52,32 @@ module AutoScreenshot
55
52
  end
56
53
  end
57
54
 
58
- puts errors
55
+ errors
59
56
  end
60
57
 
61
- # Load an action map .json file
62
- # see /action_mappings.json as an example
63
- # {
64
- # "url":<method in action_map.rb>
65
- # }
66
- def set_action_mappings(path)
67
- return {} if path && path.empty?
68
-
69
- json = File.open(path).read
70
- hash = JSON.parse(json)
71
- end
72
-
73
- # do a specific action for a url, like login
58
+ # Custom actions, based on a page url
59
+ # do a specific action for a url, like #wait
74
60
  def actions(url)
75
- if action_mappings.has_key?(url)
76
- sleep 10.0
77
- # self.send(action_mappings[url])
61
+ if action_map && action_map.has_key?(url)
62
+ self.send(action_map[url])
78
63
  else
79
64
  nil
80
65
  end
81
66
  end
82
67
 
68
+ # Define custom actions by monkey-patching.
69
+ # Use the custom actions
70
+ # by passing action_map: { :url => :method }
71
+ #
72
+ # class AutoScreenshot::Screenshot
73
+ # def your_custom_action
74
+ # end
75
+ # end
76
+ def wait
77
+ sleep 10.0
78
+ end
79
+
80
+ # TODO: Helper Method
83
81
  def grab_links(url)
84
82
  links = []
85
83
 
@@ -91,13 +89,39 @@ module AutoScreenshot
91
89
  links.uniq
92
90
  end
93
91
 
94
- def snap
95
- page.execute_script('$(window).width(1200)')
96
- name = page.current_url.gsub("https:\/\/", "").gsub("http:\/\/", "").gsub(":", "").gsub("\/", "-").gsub("&", "-").gsub("?", "_").gsub("dev.lvh.me3000-", "").gsub("admin.lvh.me3000-", "").gsub("localhost3001-", "").gsub("dev.dev.lvh.me3000-", "").gsub("test.civicideasstaging.com", "")
97
- Capybara.current_session.driver.browser.manage.window.resize_to(1000, 800)
98
- Capybara.current_session.driver.browser.save_screenshot("#{@folder}/#{name}.png")
92
+ # passing a `descriptor`
93
+ # adds a string to the filename, so you can name a sub-state for a page
94
+ def snap(descriptor = "")
95
+ name = clean_url(page.current_url)
96
+
97
+ # Descriptor
98
+ name = name + (descriptor.empty? ? "" : "-state-#{descriptor}")
99
+ p "#snap", "name", name unless name.empty?
100
+
101
+ set_window_size
102
+
103
+ # Ensure @folder exists
104
+ FileUtils.mkdir_p(@folder) unless File.exists?(@folder)
105
+ Capybara.current_session.driver.browser.save_screenshot("#{@folder}/#{name}.png")
99
106
  end
100
107
 
101
- end
102
108
 
109
+ private
110
+
111
+ def clean_url(full_url)
112
+ p "#clean_url", full_url
113
+
114
+ full_url.gsub("https:\/\/", "")
115
+ .gsub("http:\/\/", "")
116
+ .gsub(":", "")
117
+ .gsub("\/", "-")
118
+ .gsub("&", "-")
119
+ .gsub("?", "_")
120
+ end
121
+
122
+ def set_window_size
123
+ Capybara.current_session.driver.browser.manage.window.resize_to(1200, 800)
124
+ end
125
+
126
+ end
103
127
  end
@@ -1,3 +1,3 @@
1
1
  module AutoScreenshot
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ describe AutoScreenshot::Screenshot do
4
+
5
+ describe "#initialize" do
6
+ context "no args" do
7
+ before do
8
+ @client = AutoScreenshot::Screenshot.new
9
+ end
10
+
11
+ it "instantiates" do
12
+ expect(@client.instance_variables).to match_array [:@urls, :@folder, :@action_map]
13
+ expect(@client.urls.size).to eq 0
14
+ expect(@client.action_map).to eq {}
15
+ expect(@client.folder).to eq 'screenshots'
16
+ end
17
+ end
18
+
19
+ context "with :urls" do
20
+ before do
21
+ @client = AutoScreenshot::Screenshot.new({
22
+ urls: [
23
+ "http://google.com",
24
+ "http://communicatingdesign.com"
25
+ ]
26
+ })
27
+ end
28
+
29
+ describe ".new" do
30
+ it "instantiates" do
31
+ expect(@client.urls.size).to eq 2
32
+ expect(@client.folder).to eq 'screenshots'
33
+ expect(@client.action_map).to eq {}
34
+ end
35
+ end
36
+ end
37
+
38
+ context "with :folder" do
39
+ before do
40
+ @client = AutoScreenshot::Screenshot.new({
41
+ folder: 'custom_folder',
42
+ urls: '[http://google.com]'
43
+ })
44
+ end
45
+
46
+ it "instantiates" do
47
+ expect(@client.folder).to eq 'custom_folder'
48
+ end
49
+ end
50
+
51
+ context "with :action_map" do
52
+ before do
53
+ @client = AutoScreenshot::Screenshot.new({
54
+ action_map: {
55
+ :url => :custom_method
56
+ }
57
+ })
58
+ end
59
+
60
+ it "instantiates" do
61
+ expect(@client.action_map).to eq ({
62
+ :url => :custom_method
63
+ })
64
+ end
65
+ end
66
+ end
67
+
68
+ describe "#go" do
69
+ before do
70
+ @client = AutoScreenshot::Screenshot.new({
71
+ urls: [
72
+ "http://google.com",
73
+ "http://communicatingdesign.com"
74
+ ]
75
+ })
76
+ end
77
+
78
+ describe "#go" do
79
+ before do
80
+ @client.go
81
+ end
82
+
83
+ it "save screenshots as .png on Filesystem" do
84
+ expect(Dir.glob("screenshots/communicatingdesign*.png").size).to eq 1
85
+ expect(Dir.glob("screenshots/www.google*.png").size).to eq 1
86
+ end
87
+ end
88
+ end
89
+
90
+ describe "#actions" do
91
+ end
92
+
93
+ describe "#grab_links" do
94
+ end
95
+
96
+ describe "#wait" do
97
+ # `wait` is an example of an action used by the `action_map`
98
+ end
99
+
100
+ describe "#snap" do
101
+ end
102
+
103
+ end
@@ -0,0 +1,85 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
4
+ # file to always be loaded, without a need to explicitly require it in any files.
5
+ #
6
+ # Given that it is always loaded, you are encouraged to keep this file as
7
+ # light-weight as possible. Requiring heavyweight dependencies from this file
8
+ # will add to the boot time of your test suite on EVERY test run, even for an
9
+ # individual file that may not need all of that loaded. Instead, make a
10
+ # separate helper file that requires this one and then use it only in the specs
11
+ # that actually need it.
12
+ #
13
+ # The `.rspec` file also contains a few flags that are not defaults but that
14
+ # users commonly want.
15
+ #
16
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+ RSpec.configure do |config|
18
+
19
+ require 'auto_screenshot'
20
+ require 'pry'
21
+
22
+ # The settings below are suggested to provide a good initial experience
23
+ # with RSpec, but feel free to customize to your heart's content.
24
+
25
+ # These two settings work together to allow you to limit a spec run
26
+ # to individual examples or groups you care about by tagging them with
27
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
28
+ # get run.
29
+ config.filter_run :focus
30
+ config.run_all_when_everything_filtered = true
31
+
32
+ # Many RSpec users commonly either run the entire suite or an individual
33
+ # file, and it's useful to allow more verbose output when running an
34
+ # individual spec file.
35
+ if config.files_to_run.one?
36
+ # Use the documentation formatter for detailed output,
37
+ # unless a formatter has already been configured
38
+ # (e.g. via a command-line flag).
39
+ config.default_formatter = 'doc'
40
+ end
41
+
42
+ # Print the 10 slowest examples and example groups at the
43
+ # end of the spec run, to help surface which specs are running
44
+ # particularly slow.
45
+ config.profile_examples = 10
46
+
47
+ # Run specs in random order to surface order dependencies. If you find an
48
+ # order dependency and want to debug it, you can fix the order by providing
49
+ # the seed, which is printed after each run.
50
+ # --seed 1234
51
+ config.order = :random
52
+
53
+ config.before(:all, :type => :request) do
54
+ Capybara.current_session.driver.browser.manage.window.resize_to(1100, 800)
55
+ end
56
+
57
+ # Seed global randomization in this process using the `--seed` CLI option.
58
+ # Setting this allows you to use `--seed` to deterministically reproduce
59
+ # test failures related to randomization by passing the same `--seed` value
60
+ # as the one that triggered the failure.
61
+ Kernel.srand config.seed
62
+
63
+ # rspec-expectations config goes here. You can use an alternate
64
+ # assertion/expectation library such as wrong or the stdlib/minitest
65
+ # assertions if you prefer.
66
+ config.expect_with :rspec do |expectations|
67
+ # Enable only the newer, non-monkey-patching expect syntax.
68
+ # For more details, see:
69
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
70
+ expectations.syntax = :expect
71
+ end
72
+
73
+ # rspec-mocks config goes here. You can use an alternate test double
74
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
75
+ config.mock_with :rspec do |mocks|
76
+ # Enable only the newer, non-monkey-patching expect syntax.
77
+ # For more details, see:
78
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
79
+ mocks.syntax = :expect
80
+
81
+ # Prevents you from mocking or stubbing a method that does not exist on
82
+ # a real object. This is generally recommended.
83
+ mocks.verify_partial_doubles = true
84
+ end
85
+ end
metadata CHANGED
@@ -1,65 +1,171 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_screenshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ryan Wold
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-20 00:00:00.000000000Z
11
+ date: 2014-12-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: capybara
16
- requirement: &70237450785980 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70237450785980
25
- description: ! '''Automatically screenshot webpages'''
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: selenium-webdriver
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: "'Automatically screenshot webpages'"
26
126
  email:
27
127
  - wold@afomi.com
28
128
  executables: []
29
129
  extensions: []
30
130
  extra_rdoc_files: []
31
131
  files:
32
- - .gitignore
132
+ - ".gitignore"
133
+ - ".rspec"
33
134
  - Gemfile
34
135
  - LICENSE
35
136
  - README.md
36
137
  - Rakefile
37
138
  - auto_screenshot.gemspec
139
+ - examples/links.json
140
+ - examples/links.rb
38
141
  - lib/auto_screenshot.rb
39
142
  - lib/auto_screenshot/version.rb
143
+ - spec/lib/auto_screenshot_spec.rb
144
+ - spec/spec_helper.rb
40
145
  homepage: http://github.com/afomi/auto_screenshot
41
- licenses: []
146
+ licenses:
147
+ - MIT
148
+ metadata: {}
42
149
  post_install_message:
43
150
  rdoc_options: []
44
151
  require_paths:
45
152
  - lib
46
153
  required_ruby_version: !ruby/object:Gem::Requirement
47
- none: false
48
154
  requirements:
49
- - - ! '>='
155
+ - - ">="
50
156
  - !ruby/object:Gem::Version
51
157
  version: '0'
52
158
  required_rubygems_version: !ruby/object:Gem::Requirement
53
- none: false
54
159
  requirements:
55
- - - ! '>='
160
+ - - ">="
56
161
  - !ruby/object:Gem::Version
57
162
  version: '0'
58
163
  requirements: []
59
164
  rubyforge_project:
60
- rubygems_version: 1.8.15
165
+ rubygems_version: 2.4.3
61
166
  signing_key:
62
- specification_version: 3
63
- summary: ! '''Automating webpage screenshots'''
64
- test_files: []
65
- has_rdoc:
167
+ specification_version: 4
168
+ summary: "'Automating webpage screenshots'"
169
+ test_files:
170
+ - spec/lib/auto_screenshot_spec.rb
171
+ - spec/spec_helper.rb