wraith 4.0.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ff2143f4cbdbfd00df04c3a8171b3b756f379af
4
- data.tar.gz: 78fcb7d05784ed2cd4d260cdf550b5283e62fa15
3
+ metadata.gz: 4ccdc604fedb66c5f447e8f68105daf4b4eba0fd
4
+ data.tar.gz: 850ccf4e7ab0afcdbe63a8cf6f9a4469f77b846e
5
5
  SHA512:
6
- metadata.gz: 213070d5ebc82cd5ca2254c3bf3a2f33ce17ede6a6ac1dcde555cdb4794ac794352821b1400e3dae6d420cfe6e72437a5f3830a9bb8e6410a5235b3dae9e780c
7
- data.tar.gz: c4e99ba2cf7e25711b3034352570f9d66630d917c672f5bb9abe6d7f2ac903fb47b96c224a1c86d5a3c94c1da26d1dc6c42d3538048d8ab40a1571f23d0fecd9
6
+ metadata.gz: 670097d8987a074e52237edfbec825e81beb9e02bebf2ea63eba624fbb2b6c33100e2f5f3a1c506f2a868cf7d6f967ed330ba8c11e7b3633016b3e70ed65fe0e
7
+ data.tar.gz: cd33ec5eea8efa8a444fa3759b7268d5c9af16d952b79573a2997858b36f842371cd17e258dd98a75251e62bf86d9e11357248890402b8a117c89a15bb37ac33
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  .bundle/*
2
2
  shots/
3
+ shots_chrome/
3
4
  shots_history/
4
5
  data.txt
5
6
  .DS_Store
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.3
1
+ 2.4.1
data/.travis.yml CHANGED
@@ -1,10 +1,14 @@
1
+ sudo: false
2
+ addons:
3
+ apt:
4
+ packages:
5
+ - google-chrome-stable
6
+
1
7
  language: ruby
2
8
  rvm:
3
- - 2.3.3
4
- before_install:
5
- - gem update
6
- - gem --version
7
- script: bundle exec rspec
9
+ - 2.4.1
10
+ script:
11
+ - bundle exec rspec
8
12
  notifications:
9
13
  email:
10
14
  recipients:
@@ -13,4 +17,3 @@ notifications:
13
17
  on_success: never
14
18
  slack:
15
19
  secure: BgRAqwHabAtIBgtApDjyUiND2SNxd4sHMgq4ffnJ+EoMme6RSUAeK0G6LLyaGAk6YcpCeWRGOccEpzai87R3ckv6uycUVGxFcTvPmCEClakbUelWovVEyVT3hPLWznxJ8pz3EVB2+5aJnAsTg5M2ZnYtk3a5C1mrPS+WKceE/Ls=
16
- sudo: false
data/README.md CHANGED
@@ -40,13 +40,14 @@ Whichever mode you decide to run Wraith in, the process it follows is generally
40
40
 
41
41
  ## Requirements
42
42
 
43
- [ImageMagick](http://www.imagemagick.org/) is required to compare the screenshots.
43
+ [ImageMagick](http://www.imagemagick.org/) is required to compare the screenshots and crop images.
44
44
 
45
45
  Wraith also requires at least one of these headless browsers:
46
46
 
47
47
  * [PhantomJS](http://phantomjs.org)
48
48
  * [CasperJS](http://casperjs.org/) (which can be used to target specific selectors)
49
49
  * [SlimerJS](http://slimerjs.org)
50
+ * [Chrome](https://askubuntu.com/questions/510056/how-to-install-google-chrome/510063) (Currently using Selenium WebDriver + Chromedriver for Chrome; Can target specific selectors)
50
51
 
51
52
  ## Contributing
52
53
 
@@ -108,28 +108,41 @@
108
108
  </style>
109
109
  <script type="text/javascript">
110
110
  $(function() {
111
- $('.slideshow').cycle({
111
+ var slideshow = $('.slideshow');
112
+ var compareModal = $('.compare-modal');
113
+
114
+ slideshow.cycle({
112
115
  fx: 'scrollHorz',
113
116
  speed: 300,
114
117
  prev: '.prev',
115
118
  next: '.next',
116
119
  before: function (curr, next, opts) {
117
120
  $('.current').removeClass('current');
118
- var path = $(next).find('.path').attr('name');
121
+ var $next = $(next);
122
+ var path = $next.find('.path').attr('name');
119
123
  $.each($('.list-group .list-group-item a'), function() {
120
124
  if ($(this).attr('href').substring(1) == path) {
121
125
  $(this).parent().addClass('checked');
122
126
  $(this).parent().addClass('current');
123
127
  }
124
- })
128
+ });
129
+
130
+ var newImage = $next.find('a.shot:eq(0)').attr('href');
131
+ var oldImage = $next.find('a.shot:eq(1)').attr('href');
132
+ var diffImage = $next.find('a.shot:eq(2)').attr('href');
133
+ compareModal.html('<div class="compare-container"><img src="'+newImage+'"/><img src="'+oldImage+'"/><img src="'+diffImage+'"/></div>');
125
134
  },
126
135
  timeout: 0
127
136
  });
128
137
 
138
+ $(document).on('click', '.compare', function() {
139
+ compareModal.show();
140
+ });
141
+
129
142
  $('.list-group .list-group-item a').unbind().on('click', function(){
130
143
  var href = $(this).attr('href').substring(1);
131
144
 
132
- $('.slideshow').cycle($('.slide.'+href+':first').index());
145
+ slideshow.cycle($('.slide.'+href+':first').index());
133
146
  })
134
147
 
135
148
  $('.shot').unbind().on('click', function(e){
@@ -138,20 +151,24 @@
138
151
  window.open(url,'_blank');
139
152
  })
140
153
 
141
- $('.compare').unbind().on('click', function(){
142
- var slide = $(this).closest(".slide"),
143
- newImage = slide.find('a.shot:eq(0)').attr('href'),
144
- oldImage = slide.find('a.shot:eq(1)').attr('href'),
145
- diffImage = slide.find('a.shot:eq(2)').attr('href');
146
- $('.container').append('<div class="compare-modal"><div class="compare-container"><img src="'+newImage+'"/><img src="'+oldImage+'"/><img src="'+diffImage+'"/></div></div>');
147
- $('.compare-modal').unbind().on('click', function(){
148
- $(this).remove();
149
- })
150
- })
154
+ compareModal.on('click', function(){
155
+ $(this).hide();
156
+ });
157
+
158
+ $(document).on('keyup', function(e) {
159
+ if (e.keyCode === 27) { // Escape
160
+ compareModal.hide();
161
+ } else if (e.keyCode === 37) { // Left
162
+ slideshow.cycle('prev');
163
+ } else if (e.keyCode === 39) { // Right
164
+ slideshow.cycle('next');
165
+ }
166
+ });
151
167
  })
152
168
  </script>
153
169
  </head>
154
170
  <body>
171
+ <div class="compare-modal" style="display: none;"></div>
155
172
  <div class="container">
156
173
  <div class="row">
157
174
  <div class="col-sm-12 col-md-3">
@@ -33,6 +33,7 @@ def list_debug_information
33
33
  command_run = ARGV.join ' '
34
34
  ruby_version = run_command_safely("ruby -v") || "Ruby not installed"
35
35
  phantomjs_version = run_command_safely("phantomjs --version") || "PhantomJS not installed"
36
+ chromedriver_version = run_command_safely("chromedriver --version") || "chromedriver not installed"
36
37
  casperjs_version = run_command_safely("casperjs --version") || "CasperJS not installed"
37
38
  imagemagick_version = run_command_safely("convert -version") || "ImageMagick not installed"
38
39
 
@@ -42,6 +43,7 @@ def list_debug_information
42
43
  logger.debug " Ruby version: #{ruby_version}"
43
44
  logger.debug " ImageMagick: #{imagemagick_version}"
44
45
  logger.debug " PhantomJS version: #{phantomjs_version}"
46
+ logger.debug " chromedriver version: #{chromedriver_version}"
45
47
  logger.debug " CasperJS version: #{casperjs_version}"
46
48
  # @TODO - add a SlimerJS equivalent
47
49
  logger.debug "#################################################"
@@ -5,6 +5,8 @@ require "wraith/helpers/capture_options"
5
5
  require "wraith/helpers/logger"
6
6
  require "wraith/helpers/save_metadata"
7
7
  require "wraith/helpers/utilities"
8
+ require "selenium-webdriver"
9
+ require 'mini_magick'
8
10
 
9
11
  class Wraith::SaveImages
10
12
  include Logging
@@ -75,8 +77,12 @@ class Wraith::SaveImages
75
77
  def parallel_task(jobs)
76
78
  Parallel.each(jobs, :in_threads => 8) do |_label, _path, width, url, filename, selector, global_before_capture, path_before_capture|
77
79
  begin
78
- command = construct_command(width, url, filename, selector, global_before_capture, path_before_capture)
79
- attempt_image_capture(command, filename)
80
+ if meta.engine == "chrome"
81
+ capture_image_selenium(width, url, filename, selector, global_before_capture, path_before_capture)
82
+ else
83
+ command = construct_command(width, url, filename, selector, global_before_capture, path_before_capture)
84
+ attempt_image_capture(command, filename)
85
+ end
80
86
  rescue => e
81
87
  logger.error e
82
88
  create_invalid_image(filename, width)
@@ -84,6 +90,52 @@ class Wraith::SaveImages
84
90
  end
85
91
  end
86
92
 
93
+ # currently only chrome headless at 1x scaling
94
+ def get_driver
95
+ case meta.engine
96
+ when "chrome"
97
+ options = Selenium::WebDriver::Chrome::Options.new
98
+ options.add_argument('--disable-gpu')
99
+ options.add_argument('--headless')
100
+ options.add_argument('--device-scale-factor=1') # have to change cropping for 2x. also this is faster
101
+ options.add_argument('--force-device-scale-factor')
102
+ options.add_argument("--window-size=1200,1500") # resize later so we can reuse drivers
103
+ options.add_argument("--hide-scrollbars") # hide scrollbars from screenshots
104
+ Selenium::WebDriver.for :chrome, options: options
105
+ end
106
+ end
107
+
108
+ # resize to fit entire page
109
+ def resize_to_fit_page driver
110
+ width = driver.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
111
+ height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")
112
+ driver.manage.window.resize_to(width, height)
113
+ end
114
+
115
+ # crop an image around the coordinates of an element
116
+ def crop_selector driver, selector, image_location
117
+ el = driver.find_element(:css, selector)
118
+ image = MiniMagick::Image.open(image_location)
119
+ image.crop "#{el.rect.width}x#{el.rect.height}+#{el.rect.x}+#{el.rect.y}"
120
+ image.write(image_location)
121
+ end
122
+
123
+ def capture_image_selenium(screen_sizes, url, file_name, selector, global_before_capture, path_before_capture)
124
+ driver = get_driver
125
+ screen_sizes.to_s.split(",").each do |screen_size|
126
+ width, height = screen_size.split("x")
127
+ new_file_name = file_name.sub('MULTI', screen_size)
128
+ driver.manage.window.resize_to(width, height || 1500)
129
+ driver.navigate.to url
130
+ driver.execute_async_script(File.read(global_before_capture)) if global_before_capture
131
+ driver.execute_async_script(File.read(path_before_capture)) if path_before_capture
132
+ resize_to_fit_page(driver) unless height
133
+ driver.save_screenshot(new_file_name)
134
+ crop_selector(driver, selector, new_file_name) if selector && selector.length > 0
135
+ end
136
+ driver.quit
137
+ end
138
+
87
139
  def construct_command(width, url, file_name, selector, global_before_capture, path_before_capture)
88
140
  width = prepare_widths_for_cli(width)
89
141
  selector = selector.gsub '#', '\#' # make sure id selectors aren't escaped in the CLI
@@ -1,3 +1,3 @@
1
1
  module Wraith
2
- VERSION = "4.0.1"
2
+ VERSION = "4.2.0"
3
3
  end
data/spec/_helpers.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "rspec"
2
2
  require "./lib/wraith/cli"
3
+ require "pry"
3
4
 
4
5
  def create_diff_image
5
6
  capture_image = saving.construct_command(320, test_url1, test_image1, selector, false, false)
@@ -10,16 +10,30 @@ def run_js_then_capture(config)
10
10
  expect(diff).to eq "0.0"
11
11
  end
12
12
 
13
+ def run_js_then_capture_chrome(config)
14
+ saving = Wraith::SaveImages.new(config_chrome)
15
+ generated_image = "shots_chrome/test/temporary_jsified_image.png"
16
+ saving.capture_image_selenium('320', 'http://www.bbc.com/afrique', generated_image, selector, config[:global_js], config[:path_js])
17
+ Wraith::CompareImages.new(config_chrome).compare_task(generated_image, config[:output_should_look_like], "shots/test/test_diff.png", "shots/test/test.txt")
18
+ diff = File.open("shots/test/test.txt", "rb").read
19
+ expect(diff).to eq "0.0"
20
+ end
21
+
13
22
  describe Wraith do
14
23
  let(:config_name) { get_path_relative_to __FILE__, "./configs/test_config--casper.yaml" }
24
+ let(:config_chrome) { get_path_relative_to __FILE__, "./configs/test_config--chrome.yaml" }
15
25
  let(:wraith) { Wraith::Wraith.new(config_name) }
16
26
  let(:selector) { "body" }
17
27
  let(:before_suite_js) { "spec/js/global.js" }
18
28
  let(:before_capture_js) { "spec/js/path.js" }
29
+ let(:before_suite_js_chrome) { "spec/js/global--chrome.js" }
30
+ let(:before_capture_js_chrome) { "spec/js/path--chrome.js" }
19
31
 
20
32
  before(:each) do
21
33
  Wraith::FolderManager.new(config_name).clear_shots_folder
34
+ Wraith::FolderManager.new(config_chrome).clear_shots_folder
22
35
  Dir.mkdir("shots/test")
36
+ Dir.mkdir("shots_chrome/test")
23
37
  end
24
38
 
25
39
  describe "different ways of determining the before_capture file" do
@@ -43,37 +57,66 @@ describe Wraith do
43
57
  end
44
58
  end
45
59
 
46
- # @TODO - we need tests determining the path to "path-level before_capture hooks"
47
-
48
- describe "When hooking into before_capture (CasperJS)" do
60
+ describe "When hooking into before_capture (Chrome)" do
49
61
  it "Executes the global JS before capturing" do
50
- run_js_then_capture(
51
- :global_js => before_suite_js,
62
+ run_js_then_capture_chrome(
63
+ :global_js => before_suite_js_chrome,
52
64
  :path_js => false,
53
65
  :output_should_look_like => "spec/base/global.png",
54
- :engine => "casperjs"
66
+ :engine => "chrome"
55
67
  )
56
68
  end
57
69
 
58
70
  it "Executes the path-level JS before capturing" do
59
- run_js_then_capture(
71
+ run_js_then_capture_chrome(
60
72
  :global_js => false,
61
- :path_js => before_capture_js,
73
+ :path_js => before_capture_js_chrome,
62
74
  :output_should_look_like => "spec/base/path.png",
63
- :engine => "casperjs"
75
+ :engine => "chrome"
64
76
  )
65
77
  end
66
78
 
67
79
  it "Executes the global JS before the path-level JS" do
68
- run_js_then_capture(
69
- :global_js => before_suite_js,
70
- :path_js => before_capture_js,
80
+ run_js_then_capture_chrome(
81
+ :global_js => before_suite_js_chrome,
82
+ :path_js => before_capture_js_chrome,
71
83
  :output_should_look_like => "spec/base/path.png",
72
- :engine => "casperjs"
84
+ :engine => "chrome"
73
85
  )
74
86
  end
75
87
  end
76
88
 
89
+ # @TODO - we need tests determining the path to "path-level before_capture hooks"
90
+ # @TODO - uncomment and figure out why broken OR deprecate
91
+ # describe "When hooking into before_capture (CasperJS)" do
92
+ # it "Executes the global JS before capturing" do
93
+ # run_js_then_capture(
94
+ # :global_js => before_suite_js,
95
+ # :path_js => false,
96
+ # :output_should_look_like => "spec/base/global.png",
97
+ # :engine => "casperjs"
98
+ # )
99
+ # end
100
+
101
+ # it "Executes the path-level JS before capturing" do
102
+ # run_js_then_capture(
103
+ # :global_js => false,
104
+ # :path_js => before_capture_js,
105
+ # :output_should_look_like => "spec/base/path.png",
106
+ # :engine => "casperjs"
107
+ # )
108
+ # end
109
+
110
+ # it "Executes the global JS before the path-level JS" do
111
+ # run_js_then_capture(
112
+ # :global_js => before_suite_js,
113
+ # :path_js => before_capture_js,
114
+ # :output_should_look_like => "spec/base/path.png",
115
+ # :engine => "casperjs"
116
+ # )
117
+ # end
118
+ # end
119
+
77
120
  #  @TODO - uncomment and figure out why broken
78
121
  # describe "When hooking into before_capture (PhantomJS)" do
79
122
  # let(:config_name) { get_path_relative_to __FILE__, "./configs/test_config--phantom.yaml" }
@@ -0,0 +1,53 @@
1
+ ##########
2
+ ### NB: the paths in this YAML config are relative to the root of the Wraith directory,
3
+ ### as `bundle exec rspec` is run from the root.
4
+ ##########
5
+
6
+ #Headless browser option
7
+ browser:
8
+ phantomjs: "chrome"
9
+
10
+ # Type the name of the directory that shots will be stored in
11
+ directory: 'shots_chrome'
12
+
13
+ # Add only 2 domains, key will act as a label
14
+ domains:
15
+ afrique: "http://www.bbc.com/afrique"
16
+ russian: "http://www.bbc.com/russian"
17
+
18
+ #Type screen widths below, here are a couple of examples
19
+ screen_widths:
20
+ - 600
21
+ - 1280
22
+
23
+ #Type page URL paths below, here are a couple of examples
24
+ paths:
25
+ home: /
26
+ home_menu:
27
+ path: /
28
+ selector: "#orb-nav-more"
29
+ uk_index: /uk
30
+
31
+ # (optional) JavaScript file to execute before taking screenshot of every path. Default: nil
32
+ # before_capture: 'javascript/interact--chrome.js'
33
+ # before_capture: 'javascript/wait--chrome.js'
34
+
35
+ #Amount of fuzz ImageMagick will use
36
+ fuzz: '20%'
37
+
38
+ # (optional) The maximum acceptable level of difference (in %) between two images before Wraith reports a failure. Default: 0
39
+ threshold: 5
40
+
41
+ # (optional) Specify the template (and generated thumbnail sizes) for the gallery output.
42
+ gallery:
43
+ template: 'slideshow_template' # Examples: 'basic_template' (default), 'slideshow_template'
44
+ thumb_width: 200
45
+ thumb_height: 200
46
+
47
+ # (optional) Choose which results are displayed in the gallery, and in what order. Default: alphanumeric
48
+ # Options:
49
+ # alphanumeric - all paths (with or without a difference) are shown, sorted by path
50
+ # diffs_first - all paths (with or without a difference) are shown, sorted by difference size (largest first)
51
+ # diffs_only - only paths with a difference are shown, sorted by difference size (largest first)
52
+ # Note: different screen widths are always grouped together.
53
+ mode: diffs_first
@@ -0,0 +1,4 @@
1
+ var callback = arguments[arguments.length-1];
2
+ document.body.innerHTML = "&nbsp;";
3
+ document.body.style['background-color'] = 'red';
4
+ callback();
@@ -0,0 +1,4 @@
1
+ var callback = arguments[arguments.length-1];
2
+ document.body.innerHTML = "&nbsp;";
3
+ document.body.style['background-color'] = 'green';
4
+ callback();
@@ -3,19 +3,25 @@ require "image_size"
3
3
 
4
4
  describe Wraith do
5
5
  let(:config_name) { get_path_relative_to __FILE__, "./configs/test_config--phantom.yaml" }
6
+ let(:config_chrome) { get_path_relative_to __FILE__, "./configs/test_config--chrome.yaml" }
6
7
  let(:test_url1) { "http://www.bbc.com/afrique" }
7
8
  let(:test_url2) { "http://www.bbc.com/russian" }
8
9
  let(:test_image1) { "shots/test/test1.png" }
10
+ let(:test_image_chrome) { "shots_chrome/test/test_chrome.png" }
11
+ let(:test_image_chrome_selector) { "shots_chrome/test/test_chrome_selector.png" }
9
12
  let(:test_image2) { "shots/test/test(2).png" }
10
13
  let(:diff_image) { "shots/test/test_diff.png" }
11
14
  let(:data_txt) { "shots/test/test.txt" }
12
15
  let(:selector) { "" }
13
16
  let(:saving) { Wraith::SaveImages.new(config_name) }
17
+ let(:saving_chrome) { Wraith::SaveImages.new(config_chrome) }
14
18
  let(:wraith) { Wraith::Wraith.new(config_name) }
15
19
 
16
20
  before(:each) do
17
21
  Wraith::FolderManager.new(config_name).clear_shots_folder
22
+ Wraith::FolderManager.new(config_chrome).clear_shots_folder
18
23
  Dir.mkdir("shots/test")
24
+ Dir.mkdir("shots_chrome/test")
19
25
  end
20
26
 
21
27
  describe "When capturing an image" do
@@ -26,6 +32,18 @@ describe Wraith do
26
32
  `#{capture_image}`
27
33
  expect(image_size[0]).to eq 320
28
34
  end
35
+ it "saves image chrome" do
36
+ capture_image = saving_chrome.capture_image_selenium("1080x600", test_url1, test_image_chrome, selector, false, false)
37
+ image_size_chrome = ImageSize.path(test_image_chrome).size
38
+ expect(image_size_chrome[0]).to eq 1080
39
+ end
40
+ it "crops around a selector" do
41
+ selector = "#orb-nav-more"
42
+ capture_image = saving_chrome.capture_image_selenium(1440, test_url1, test_image_chrome_selector, selector, false, false)
43
+ image_size_chrome_selector = ImageSize.path(test_image_chrome_selector).size
44
+ expect(image_size_chrome_selector[0]).to eq 673
45
+ expect(image_size_chrome_selector[1]).to eq 40
46
+ end
29
47
  end
30
48
 
31
49
  describe "When comparing images" do
@@ -4,7 +4,7 @@
4
4
  // ######################################################
5
5
  module.exports = function (phantom, ready) {
6
6
 
7
- page.customHeaders = {
7
+ phantom.customHeaders = {
8
8
  'SOME-HEADER': 'fish'
9
9
  };
10
10
 
@@ -0,0 +1,4 @@
1
+ var callback = arguments[arguments.length-1];
2
+ var a = document.querySelector('.some-class');
3
+ a && a.click();
4
+ setTimeout(callback, 2000);
@@ -0,0 +1,2 @@
1
+ var callback = arguments[arguments.length-1];
2
+ setTimeout(callback, 2000);
data/wraith.gemspec CHANGED
@@ -24,9 +24,12 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_runtime_dependency 'rake'
26
26
  spec.add_runtime_dependency 'image_size'
27
+ spec.add_runtime_dependency 'mini_magick', "~> 4.8"
27
28
  spec.add_runtime_dependency 'anemone'
28
29
  spec.add_runtime_dependency 'robotex'
29
30
  spec.add_runtime_dependency 'log4r'
30
31
  spec.add_runtime_dependency 'thor'
31
32
  spec.add_runtime_dependency 'parallel'
33
+ spec.add_runtime_dependency 'selenium-webdriver', "~> 3.5"
34
+ spec.add_runtime_dependency 'chromedriver-helper', "~> 1.1"
32
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wraith
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Blooman
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-24 00:00:00.000000000 Z
13
+ date: 2017-11-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry
@@ -82,6 +82,20 @@ dependencies:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: mini_magick
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '4.8'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '4.8'
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: anemone
87
101
  requirement: !ruby/object:Gem::Requirement
@@ -152,6 +166,34 @@ dependencies:
152
166
  - - ">="
153
167
  - !ruby/object:Gem::Version
154
168
  version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: selenium-webdriver
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '3.5'
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '3.5'
183
+ - !ruby/object:Gem::Dependency
184
+ name: chromedriver-helper
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '1.1'
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: '1.1'
155
197
  description: Wraith is a screenshot comparison tool, created by developers at BBC
156
198
  News.
157
199
  email:
@@ -206,6 +248,7 @@ files:
206
248
  - spec/before_capture_spec.rb
207
249
  - spec/config_spec.rb
208
250
  - spec/configs/test_config--casper.yaml
251
+ - spec/configs/test_config--chrome.yaml
209
252
  - spec/configs/test_config--imports.yaml
210
253
  - spec/configs/test_config--phantom.yaml
211
254
  - spec/configs/test_config--spider.yaml
@@ -213,7 +256,9 @@ files:
213
256
  - spec/gallery_spec.rb
214
257
  - spec/helper_spec.rb
215
258
  - spec/js/custom_snap_file.js
259
+ - spec/js/global--chrome.js
216
260
  - spec/js/global.js
261
+ - spec/js/path--chrome.js
217
262
  - spec/js/path.js
218
263
  - spec/resize_reload_spec.rb
219
264
  - spec/save_images_spec.rb
@@ -230,8 +275,10 @@ files:
230
275
  - templates/javascript/disable_javascript--casper.js
231
276
  - templates/javascript/disable_javascript--phantom.js
232
277
  - templates/javascript/interact--casper.js
278
+ - templates/javascript/interact--chrome.js
233
279
  - templates/javascript/interact--phantom.js
234
280
  - templates/javascript/wait--casper.js
281
+ - templates/javascript/wait--chrome.js
235
282
  - templates/javascript/wait--phantom.js
236
283
  - wraith.gemspec
237
284
  homepage: https://github.com/BBC-News/wraith
@@ -254,7 +301,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
301
  version: '0'
255
302
  requirements: []
256
303
  rubyforge_project:
257
- rubygems_version: 2.6.10
304
+ rubygems_version: 2.5.2
258
305
  signing_key:
259
306
  specification_version: 4
260
307
  summary: Wraith is a screenshot comparison tool, created by developers at BBC News.
@@ -265,6 +312,7 @@ test_files:
265
312
  - spec/before_capture_spec.rb
266
313
  - spec/config_spec.rb
267
314
  - spec/configs/test_config--casper.yaml
315
+ - spec/configs/test_config--chrome.yaml
268
316
  - spec/configs/test_config--imports.yaml
269
317
  - spec/configs/test_config--phantom.yaml
270
318
  - spec/configs/test_config--spider.yaml
@@ -272,7 +320,9 @@ test_files:
272
320
  - spec/gallery_spec.rb
273
321
  - spec/helper_spec.rb
274
322
  - spec/js/custom_snap_file.js
323
+ - spec/js/global--chrome.js
275
324
  - spec/js/global.js
325
+ - spec/js/path--chrome.js
276
326
  - spec/js/path.js
277
327
  - spec/resize_reload_spec.rb
278
328
  - spec/save_images_spec.rb