wraith 4.2.3 → 4.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 28550759d50cdaed1ea1b698a3fb77303bc6a8fd
4
- data.tar.gz: c14df69165a2e68e4200eecbe505c1d9b6a61b54
2
+ SHA256:
3
+ metadata.gz: 0db0af6f5dd16e7a2277219f65fa5dd11809e249a6178e9a23fd83b5d528507d
4
+ data.tar.gz: 597f19e645590a2d0f7d2f33bfb4fb485c07bef157bd7fab791a2399b47e488b
5
5
  SHA512:
6
- metadata.gz: 2efc466ce8a7bbbea675899da063d3221f80418beeaf4f5c983d43595f226afb4ec09fc2cb10f7d0f87f1e72dc20445197a4181327f61e234dc6c87b4582736f
7
- data.tar.gz: b3317399aa23705af8dddc3a55912d4c0ec11b2bf6ba404230c7810df313368bcde9c30620703d44138144042d4e8f26eadea9c859ca45be864e822aa55c29f0
6
+ metadata.gz: 4bfbc11c06483924537b9566dad29e46bed9923dc58f22f6a345c1512308d363c317d144ce6f6b91d2976ead8f501c4f7a43d990a22e5e7b26caac49a5a3b18a
7
+ data.tar.gz: 5289d351bf42e7b2c19c97b62d6df870b59e4395a78285e08948d9a83913e7d191901a2d58f096d06a6256ade62f69ad9262cd6c7329820787058d3dec03609e
data/README.md CHANGED
@@ -66,7 +66,7 @@ Wraith is available to everyone under the terms of the Apache 2.0 open source li
66
66
 
67
67
  ## Selenium-Wraith
68
68
 
69
- Anyone interested in integrating selenium capability with Wraith should check out [Selenium-Wraith](https://github.com/andrewccadman/wraith-selenium) (by Andrew Tekle-Cadman of Future Visible), which was forked from BBC's Wraith on 16/04/14 and adds the following capabilities:
69
+ Anyone interested in integrating selenium capability with Wraith should check out [Selenium-Wraith](https://github.com/mathew-hall/wraith-selenium) (maintained by Mathew Hall), which was forked from BBC's Wraith on 16/04/14 and adds the following capabilities:
70
70
 
71
71
  1. Selenium integration, both running locally on a desktop or on a selenium grid
72
72
  2. Browser to browser screenshot comparison
Binary file
Binary file
@@ -31,7 +31,7 @@ class Wraith::CompareImages
31
31
  end
32
32
 
33
33
  def compare_task(base, compare, output, info)
34
- cmdline = "compare -dissimilarity-threshold 1 -fuzz #{wraith.fuzz} -metric AE -highlight-color #{wraith.highlight_color} #{base} #{compare.shellescape} #{output}"
34
+ cmdline = "compare -fuzz #{wraith.fuzz} -metric AE -highlight-color #{wraith.highlight_color} #{base} #{compare.shellescape} #{output}"
35
35
  px_value = Open3.popen3(cmdline) { |_stdin, _stdout, stderr, _wait_thr| stderr.read }.to_f
36
36
  begin
37
37
  img_size = ImageSize.path(output).size.inject(:*)
@@ -1,4 +1,5 @@
1
1
  require "wraith"
2
+ require "fileutils"
2
3
 
3
4
  class SaveMetadata
4
5
  attr_reader :wraith, :history
@@ -14,6 +15,8 @@ class SaveMetadata
14
15
 
15
16
  def file_names(width, label, domain_label)
16
17
  width = "MULTI" if width.is_a? Array
18
+
19
+ FileUtils::mkdir_p "#{wraith.directory}/#{label}" # ensure the directory exists
17
20
  "#{wraith.directory}/#{label}/#{width}_#{engine}_#{domain_label}.png"
18
21
  end
19
22
 
@@ -53,8 +53,8 @@ class Wraith::SaveImages
53
53
  compare_file_name = meta.file_names(width, label, meta.compare_label)
54
54
 
55
55
  jobs = []
56
- jobs << [label, settings.path, prepare_widths_for_cli(width), settings.base_url, base_file_name, settings.selector, wraith.before_capture, settings.before_capture]
57
- jobs << [label, settings.path, prepare_widths_for_cli(width), settings.compare_url, compare_file_name, settings.selector, wraith.before_capture, settings.before_capture] unless settings.compare_url.nil?
56
+ jobs << [label, settings.path, prepare_widths_for_cli(width), settings.base_url, base_file_name, settings.selector, wraith.before_capture, settings.before_capture, 'invalid1.jpg']
57
+ jobs << [label, settings.path, prepare_widths_for_cli(width), settings.compare_url, compare_file_name, settings.selector, wraith.before_capture, settings.before_capture, 'invalid2.jpg'] unless settings.compare_url.nil?
58
58
 
59
59
  jobs
60
60
  end
@@ -67,6 +67,7 @@ class Wraith::SaveImages
67
67
 
68
68
  def run_command(command)
69
69
  output = []
70
+ command.gsub!(/'/, '')
70
71
  IO.popen(command).each do |line|
71
72
  logger.info line
72
73
  output << line.chomp!
@@ -75,7 +76,7 @@ class Wraith::SaveImages
75
76
  end
76
77
 
77
78
  def parallel_task(jobs)
78
- Parallel.each(jobs, :in_threads => 8) do |_label, _path, width, url, filename, selector, global_before_capture, path_before_capture|
79
+ Parallel.each(jobs, :in_threads => wraith.threads) do |_label, _path, width, url, filename, selector, global_before_capture, path_before_capture|
79
80
  begin
80
81
  if meta.engine == "chrome"
81
82
  capture_image_selenium(width, url, filename, selector, global_before_capture, path_before_capture)
@@ -84,8 +85,8 @@ class Wraith::SaveImages
84
85
  attempt_image_capture(command, filename)
85
86
  end
86
87
  rescue => e
87
- logger.error e
88
- create_invalid_image(filename, width)
88
+ logger.error "#{e}\n URL = #{url}"
89
+ create_invalid_image(filename, width, invalid_image_name)
89
90
  end
90
91
  end
91
92
  end
@@ -95,12 +96,16 @@ class Wraith::SaveImages
95
96
  case meta.engine
96
97
  when "chrome"
97
98
  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
99
+ [
100
+ 'disable-gpu',
101
+ 'headless',
102
+ 'no-sandbox',
103
+ 'device-scale-factor=1',
104
+ 'force-device-scale-factor',
105
+ 'window-size=1200,1500',
106
+ 'hide-scrollbars',
107
+ 'ignore-certificate-errors'
108
+ ].each { |arg| options.add_argument("--#{arg}") }
104
109
  Selenium::WebDriver.for :chrome, options: options
105
110
  end
106
111
  end
@@ -110,7 +115,7 @@ class Wraith::SaveImages
110
115
  width = driver.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
111
116
  height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")
112
117
  driver.manage.window.resize_to(width, height)
113
- end
118
+ end
114
119
 
115
120
  # crop an image around the coordinates of an element
116
121
  def crop_selector driver, selector, image_location
@@ -122,16 +127,25 @@ class Wraith::SaveImages
122
127
 
123
128
  def capture_image_selenium(screen_sizes, url, file_name, selector, global_before_capture, path_before_capture)
124
129
  driver = get_driver
130
+ driver.manage.timeouts.implicit_wait = 10;
125
131
  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
132
+ for attempt in 1..3 do
133
+ begin
134
+ width, height = screen_size.split("x")
135
+ new_file_name = file_name.sub('MULTI', screen_size)
136
+ driver.manage.window.resize_to(width, height || 1500)
137
+ driver.navigate.to url
138
+ driver.manage.timeouts.implicit_wait = wraith.settle
139
+ driver.execute_script(File.read(global_before_capture)) if global_before_capture
140
+ driver.execute_script(File.read(path_before_capture)) if path_before_capture
141
+ resize_to_fit_page(driver) unless height
142
+ driver.save_screenshot(new_file_name)
143
+ crop_selector(driver, selector, new_file_name) if selector && selector.length > 0
144
+ break
145
+ rescue Net::ReadTimeout => e
146
+ logger.error "Got #{e} on attempt #{attempt} at screen size #{screensize}. URL = #{url}"
147
+ end
148
+ end
135
149
  end
136
150
  driver.quit
137
151
  end
@@ -163,9 +177,9 @@ class Wraith::SaveImages
163
177
  wraith.resize or File.exist? filename
164
178
  end
165
179
 
166
- def create_invalid_image(filename, width)
180
+ def create_invalid_image(filename, width, invalid_image_name)
167
181
  logger.warn "Using fallback image instead"
168
- invalid = File.expand_path("../../assets/invalid.jpg", File.dirname(__FILE__))
182
+ invalid = File.expand_path("../../assets/#{invalid_image_name}", File.dirname(__FILE__))
169
183
  FileUtils.cp invalid, filename
170
184
 
171
185
  set_image_width(filename, width)
@@ -1,3 +1,3 @@
1
1
  module Wraith
2
- VERSION = "4.2.3"
2
+ VERSION = "4.2.4"
3
3
  end
@@ -72,7 +72,7 @@ class Wraith::Wraith
72
72
  end
73
73
 
74
74
  def history_dir
75
- @config["history_dir"] || false
75
+ @config.fetch('history_dir', false)
76
76
  end
77
77
 
78
78
  def engine
@@ -109,7 +109,7 @@ class Wraith::Wraith
109
109
 
110
110
  def resize
111
111
  # @TODO make this default to true, once it's been tested a bit more thoroughly
112
- @config["resize_or_reload"] ? (@config["resize_or_reload"] == "resize") : false
112
+ @config.fetch('resize_or_reload', 'reload') == "resize"
113
113
  end
114
114
 
115
115
  def domains
@@ -132,8 +132,16 @@ class Wraith::Wraith
132
132
  domains.keys[1]
133
133
  end
134
134
 
135
+ def settle
136
+ @config.fetch('settle', 10)
137
+ end
138
+
139
+ def threads
140
+ @config.fetch('threads', '8').to_i
141
+ end
142
+
135
143
  def spider_file
136
- @config["spider_file"] ? @config["spider_file"] : "spider.txt"
144
+ @config.fetch('spider_file', 'spider.txt')
137
145
  end
138
146
 
139
147
  def spider_days
@@ -157,7 +165,7 @@ class Wraith::Wraith
157
165
  end
158
166
 
159
167
  def highlight_color
160
- @config["highlight_color"] ? @config["highlight_color"] : "blue"
168
+ @config.fetch('highlight_color', 'blue')
161
169
  end
162
170
 
163
171
  def mode
@@ -169,34 +177,19 @@ class Wraith::Wraith
169
177
  end
170
178
 
171
179
  def threshold
172
- @config["threshold"] ? @config["threshold"] : 0
180
+ @config.fetch('threshold', 0)
173
181
  end
174
182
 
175
183
  def gallery_template
176
- default = "basic_template"
177
- if @config["gallery"].nil?
178
- default
179
- else
180
- @config["gallery"]["template"] || default
181
- end
184
+ @config.fetch('gallery', {}).fetch('template', 'basic_template')
182
185
  end
183
186
 
184
187
  def thumb_height
185
- default = 200
186
- if @config["gallery"].nil?
187
- default
188
- else
189
- @config["gallery"]["thumb_height"] || default
190
- end
188
+ @config.fetch('gallery', {}).fetch('thumb_height', 200)
191
189
  end
192
190
 
193
191
  def thumb_width
194
- default = 200
195
- if @config["gallery"].nil?
196
- default
197
- else
198
- @config["gallery"]["thumb_width"] || default
199
- end
192
+ @config.fetch('gallery', {}).fetch('thumb_width', 200)
200
193
  end
201
194
 
202
195
  def phantomjs_options
@@ -204,11 +197,11 @@ class Wraith::Wraith
204
197
  end
205
198
 
206
199
  def imports
207
- @config['imports'] || false
200
+ @config.fetch('imports', false)
208
201
  end
209
202
 
210
203
  def verbose
211
204
  # @TODO - also add a `--verbose` CLI flag which overrides whatever you have set in the config
212
- @config["verbose"] || false
205
+ @config.fetch('verbose', false)
213
206
  end
214
207
  end
@@ -1,6 +1,5 @@
1
1
  require "rspec"
2
2
  require "./lib/wraith/cli"
3
- require "pry"
4
3
 
5
4
  def create_diff_image
6
5
  capture_image = saving.construct_command(320, test_url1, test_image1, selector, false, false)
@@ -17,6 +17,26 @@ describe "wraith config" do
17
17
  expect(wraith.config).to include "directory" => "shots"
18
18
  end
19
19
 
20
+ it 'returns default values for threads' do
21
+ expect(wraith.threads).to eq 8
22
+ end
23
+ it 'returns default values for settle' do
24
+ expect(wraith.settle).to eq 10
25
+ end
26
+
27
+ context 'non-standard config values' do
28
+ let(:config) { YAML.load "browser: phantomjs\nthreads: 2\nsettle: 5"}
29
+ let(:non_standard_wraith) { Wraith::Wraith.new( config, { yaml_passed: true }) }
30
+
31
+ it 'returns overridden value when threads is specified in config' do
32
+ expect(non_standard_wraith.threads).to eq 2
33
+ end
34
+
35
+ it 'returns overridden value when settle is specified in config' do
36
+ expect(non_standard_wraith.settle).to eq 5
37
+ end
38
+ end
39
+
20
40
  it "should be able to import other configs" do
21
41
  config_name = get_path_relative_to __FILE__, "./configs/test_config--imports.yaml"
22
42
  wraith = Wraith::Wraith.new(config_name)
@@ -28,3 +28,6 @@ paths:
28
28
 
29
29
  #Amount of fuzz ImageMagick will use
30
30
  fuzz: '20%'
31
+
32
+ # Number of threads used when saving images
33
+ threads: 7
@@ -32,3 +32,7 @@ paths:
32
32
 
33
33
  #Amount of fuzz ImageMagick will use
34
34
  fuzz: '20%'
35
+
36
+
37
+ # Number of threads used when saving images
38
+ #threads: 7
@@ -1,4 +1,4 @@
1
- var callback = arguments[arguments.length-1];
2
- document.body.innerHTML = "&nbsp;";
3
- document.body.style['background-color'] = 'red';
4
- callback();
1
+ (function () {
2
+ document.body.innerHTML = "&nbsp;";
3
+ document.body.style['background-color'] = 'red';
4
+ })();
@@ -1,4 +1,4 @@
1
- var callback = arguments[arguments.length-1];
2
- document.body.innerHTML = "&nbsp;";
3
- document.body.style['background-color'] = 'green';
4
- callback();
1
+ (function () {
2
+ document.body.innerHTML = "&nbsp;";
3
+ document.body.style['background-color'] = 'green';
4
+ })();
@@ -21,6 +21,8 @@ describe "wraith config" do
21
21
  test: http://www.bbc.com
22
22
  paths:
23
23
  test: /mypage
24
+ directory:
25
+ test
24
26
  screen_widths:
25
27
  - 320
26
28
  - 464
@@ -41,10 +43,10 @@ describe "wraith config" do
41
43
  expect(efficient_jobs.length).to be 1
42
44
  expect(inefficient_jobs.length).to be 3 # 1 for each screen width
43
45
 
44
- # [["test", "/mypage", "320,464,624", "http://www.bbc.com/mypage", "/test/MULTI__test.png", " ", "false", "false"]]
46
+ # [["test", "/mypage", "320,464,624", "http://www.bbc.com/mypage", "test/MULTI__test.png", " ", "false", "false"]]
45
47
  expect(efficient_jobs[0][2]).to eq "320,464,624"
46
48
 
47
- # [["test", "/mypage", 320, "http://www.bbc.com/mypage", "/test/320__test.png", " ", "false", "false"], ["test", "/mypage", 464, "http://www.bbc.com/mypage", "/test/464__test.png", " ", "false", "false"], ["test", "/mypage", 624, "http://www.bbc.com/mypage", "/test/624__test.png", " ", "false", "false"]]
49
+ # [["test", "/mypage", 320, "http://www.bbc.com/mypage", "test/320__test.png", " ", "false", "false"], ["test", "/mypage", 464, "http://www.bbc.com/mypage", "/test/464__test.png", " ", "false", "false"], ["test", "/mypage", 624, "http://www.bbc.com/mypage", "/test/624__test.png", " ", "false", "false"]]
48
50
  expect(inefficient_jobs[0][2]).to eq 320
49
51
  end
50
52
  end
@@ -59,3 +59,7 @@ gallery:
59
59
  # diffs_only - only paths with a difference are shown, sorted by difference size (largest first)
60
60
  # Note: different screen widths are always grouped together.
61
61
  mode: diffs_first
62
+
63
+ # (optional) Set the number of threads to use when saving images. Raising this value can improve performance, but very high
64
+ # values can lead to server connection issues. Set to around 1.5 the available CPU cores for best performance. Default: 8
65
+ threads: 8
@@ -79,3 +79,7 @@ highlight_color: red
79
79
 
80
80
  # (optional) Parameters to pass to Phantom/Casper command line. Default: '--ignore-ssl-errors=true --ssl-protocol=tlsv1'
81
81
  phantomjs_options: ''
82
+
83
+ # (optional) Set the number of threads to use when saving images. Raising this value can improve performance, but very high
84
+ # values can lead to server connection issues. Set to around 1.5 the available CPU cores for best performance. Default: 8
85
+ threads: 8
@@ -58,3 +58,7 @@ directory: 'shots'
58
58
  # diffs_first - all paths (with or without a difference) are shown, sorted by difference size (largest first)
59
59
  # diffs_only - only paths with a difference are shown, sorted by difference size (largest first)
60
60
  mode: diffs_first
61
+
62
+ # (optional) Set the number of threads to use when saving images. Raising this value can improve performance, but very high
63
+ # values can lead to server connection issues. Set to around 1.5 the available CPU cores for best performance. Default: 8
64
+ threads: 8
@@ -8,17 +8,16 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Wraith::VERSION
9
9
  spec.authors = ['Dave Blooman', 'Simon Thulbourn', 'Chris Ashton']
10
10
  spec.email = ['david.blooman@gmail.com', 'simon+github@thulbourn.com', 'chrisashtonweb@gmail.com']
11
- spec.summary = 'Wraith is a screenshot comparison tool, created by developers at BBC News.'
11
+ spec.summary = 'Wraith screenshot comparison tool'
12
12
  spec.description = 'Wraith is a screenshot comparison tool, created by developers at BBC News.'
13
13
  spec.homepage = 'https://github.com/BBC-News/wraith'
14
- spec.license = 'Apache 2'
14
+ spec.license = 'Apache-2.0'
15
15
 
16
16
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'pry'
22
21
  spec.add_development_dependency 'rspec'
23
22
  spec.add_development_dependency 'casperjs'
24
23
 
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.2.3
4
+ version: 4.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Blooman
@@ -10,188 +10,174 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-07-31 00:00:00.000000000 Z
13
+ date: 2019-06-26 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: pry
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - '>='
27
- - !ruby/object:Gem::Version
28
- version: '0'
29
15
  - !ruby/object:Gem::Dependency
30
16
  name: rspec
31
17
  requirement: !ruby/object:Gem::Requirement
32
18
  requirements:
33
- - - '>='
19
+ - - ">="
34
20
  - !ruby/object:Gem::Version
35
21
  version: '0'
36
22
  type: :development
37
23
  prerelease: false
38
24
  version_requirements: !ruby/object:Gem::Requirement
39
25
  requirements:
40
- - - '>='
26
+ - - ">="
41
27
  - !ruby/object:Gem::Version
42
28
  version: '0'
43
29
  - !ruby/object:Gem::Dependency
44
30
  name: casperjs
45
31
  requirement: !ruby/object:Gem::Requirement
46
32
  requirements:
47
- - - '>='
33
+ - - ">="
48
34
  - !ruby/object:Gem::Version
49
35
  version: '0'
50
36
  type: :development
51
37
  prerelease: false
52
38
  version_requirements: !ruby/object:Gem::Requirement
53
39
  requirements:
54
- - - '>='
40
+ - - ">="
55
41
  - !ruby/object:Gem::Version
56
42
  version: '0'
57
43
  - !ruby/object:Gem::Dependency
58
44
  name: rake
59
45
  requirement: !ruby/object:Gem::Requirement
60
46
  requirements:
61
- - - '>='
47
+ - - ">="
62
48
  - !ruby/object:Gem::Version
63
49
  version: '0'
64
50
  type: :runtime
65
51
  prerelease: false
66
52
  version_requirements: !ruby/object:Gem::Requirement
67
53
  requirements:
68
- - - '>='
54
+ - - ">="
69
55
  - !ruby/object:Gem::Version
70
56
  version: '0'
71
57
  - !ruby/object:Gem::Dependency
72
58
  name: image_size
73
59
  requirement: !ruby/object:Gem::Requirement
74
60
  requirements:
75
- - - '>='
61
+ - - ">="
76
62
  - !ruby/object:Gem::Version
77
63
  version: '0'
78
64
  type: :runtime
79
65
  prerelease: false
80
66
  version_requirements: !ruby/object:Gem::Requirement
81
67
  requirements:
82
- - - '>='
68
+ - - ">="
83
69
  - !ruby/object:Gem::Version
84
70
  version: '0'
85
71
  - !ruby/object:Gem::Dependency
86
72
  name: mini_magick
87
73
  requirement: !ruby/object:Gem::Requirement
88
74
  requirements:
89
- - - ~>
75
+ - - "~>"
90
76
  - !ruby/object:Gem::Version
91
77
  version: '4.8'
92
78
  type: :runtime
93
79
  prerelease: false
94
80
  version_requirements: !ruby/object:Gem::Requirement
95
81
  requirements:
96
- - - ~>
82
+ - - "~>"
97
83
  - !ruby/object:Gem::Version
98
84
  version: '4.8'
99
85
  - !ruby/object:Gem::Dependency
100
86
  name: anemone
101
87
  requirement: !ruby/object:Gem::Requirement
102
88
  requirements:
103
- - - '>='
89
+ - - ">="
104
90
  - !ruby/object:Gem::Version
105
91
  version: '0'
106
92
  type: :runtime
107
93
  prerelease: false
108
94
  version_requirements: !ruby/object:Gem::Requirement
109
95
  requirements:
110
- - - '>='
96
+ - - ">="
111
97
  - !ruby/object:Gem::Version
112
98
  version: '0'
113
99
  - !ruby/object:Gem::Dependency
114
100
  name: robotex
115
101
  requirement: !ruby/object:Gem::Requirement
116
102
  requirements:
117
- - - '>='
103
+ - - ">="
118
104
  - !ruby/object:Gem::Version
119
105
  version: '0'
120
106
  type: :runtime
121
107
  prerelease: false
122
108
  version_requirements: !ruby/object:Gem::Requirement
123
109
  requirements:
124
- - - '>='
110
+ - - ">="
125
111
  - !ruby/object:Gem::Version
126
112
  version: '0'
127
113
  - !ruby/object:Gem::Dependency
128
114
  name: log4r
129
115
  requirement: !ruby/object:Gem::Requirement
130
116
  requirements:
131
- - - '>='
117
+ - - ">="
132
118
  - !ruby/object:Gem::Version
133
119
  version: '0'
134
120
  type: :runtime
135
121
  prerelease: false
136
122
  version_requirements: !ruby/object:Gem::Requirement
137
123
  requirements:
138
- - - '>='
124
+ - - ">="
139
125
  - !ruby/object:Gem::Version
140
126
  version: '0'
141
127
  - !ruby/object:Gem::Dependency
142
128
  name: thor
143
129
  requirement: !ruby/object:Gem::Requirement
144
130
  requirements:
145
- - - '>='
131
+ - - ">="
146
132
  - !ruby/object:Gem::Version
147
133
  version: '0'
148
134
  type: :runtime
149
135
  prerelease: false
150
136
  version_requirements: !ruby/object:Gem::Requirement
151
137
  requirements:
152
- - - '>='
138
+ - - ">="
153
139
  - !ruby/object:Gem::Version
154
140
  version: '0'
155
141
  - !ruby/object:Gem::Dependency
156
142
  name: parallel
157
143
  requirement: !ruby/object:Gem::Requirement
158
144
  requirements:
159
- - - '>='
145
+ - - ">="
160
146
  - !ruby/object:Gem::Version
161
147
  version: '0'
162
148
  type: :runtime
163
149
  prerelease: false
164
150
  version_requirements: !ruby/object:Gem::Requirement
165
151
  requirements:
166
- - - '>='
152
+ - - ">="
167
153
  - !ruby/object:Gem::Version
168
154
  version: '0'
169
155
  - !ruby/object:Gem::Dependency
170
156
  name: selenium-webdriver
171
157
  requirement: !ruby/object:Gem::Requirement
172
158
  requirements:
173
- - - ~>
159
+ - - "~>"
174
160
  - !ruby/object:Gem::Version
175
161
  version: '3.5'
176
162
  type: :runtime
177
163
  prerelease: false
178
164
  version_requirements: !ruby/object:Gem::Requirement
179
165
  requirements:
180
- - - ~>
166
+ - - "~>"
181
167
  - !ruby/object:Gem::Version
182
168
  version: '3.5'
183
169
  - !ruby/object:Gem::Dependency
184
170
  name: chromedriver-helper
185
171
  requirement: !ruby/object:Gem::Requirement
186
172
  requirements:
187
- - - ~>
173
+ - - "~>"
188
174
  - !ruby/object:Gem::Version
189
175
  version: '1.1'
190
176
  type: :runtime
191
177
  prerelease: false
192
178
  version_requirements: !ruby/object:Gem::Requirement
193
179
  requirements:
194
- - - ~>
180
+ - - "~>"
195
181
  - !ruby/object:Gem::Version
196
182
  version: '1.1'
197
183
  description: Wraith is a screenshot comparison tool, created by developers at BBC
@@ -205,19 +191,20 @@ executables:
205
191
  extensions: []
206
192
  extra_rdoc_files: []
207
193
  files:
208
- - .gemset
209
- - .github/CONTRIBUTING.md
210
- - .github/ISSUE_TEMPLATE.md
211
- - .gitignore
212
- - .rubocop.yml
213
- - .ruby-version
214
- - .travis.yml
194
+ - ".gemset"
195
+ - ".github/CONTRIBUTING.md"
196
+ - ".github/ISSUE_TEMPLATE.md"
197
+ - ".gitignore"
198
+ - ".rubocop.yml"
199
+ - ".ruby-version"
200
+ - ".travis.yml"
215
201
  - Dockerfile
216
202
  - Gemfile
217
203
  - LICENSE
218
204
  - README.md
219
205
  - Rakefile
220
- - assets/invalid.jpg
206
+ - assets/invalid1.jpg
207
+ - assets/invalid2.jpg
221
208
  - assets/wraith-logo.png
222
209
  - bin/wraith
223
210
  - lib/wraith.rb
@@ -283,7 +270,7 @@ files:
283
270
  - wraith.gemspec
284
271
  homepage: https://github.com/BBC-News/wraith
285
272
  licenses:
286
- - Apache 2
273
+ - Apache-2.0
287
274
  metadata: {}
288
275
  post_install_message:
289
276
  rdoc_options: []
@@ -291,20 +278,20 @@ require_paths:
291
278
  - lib
292
279
  required_ruby_version: !ruby/object:Gem::Requirement
293
280
  requirements:
294
- - - '>='
281
+ - - ">="
295
282
  - !ruby/object:Gem::Version
296
283
  version: '0'
297
284
  required_rubygems_version: !ruby/object:Gem::Requirement
298
285
  requirements:
299
- - - '>='
286
+ - - ">="
300
287
  - !ruby/object:Gem::Version
301
288
  version: '0'
302
289
  requirements: []
303
290
  rubyforge_project:
304
- rubygems_version: 2.6.14
291
+ rubygems_version: 2.7.10
305
292
  signing_key:
306
293
  specification_version: 4
307
- summary: Wraith is a screenshot comparison tool, created by developers at BBC News.
294
+ summary: Wraith screenshot comparison tool
308
295
  test_files:
309
296
  - spec/_helpers.rb
310
297
  - spec/base/global.png
Binary file