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 +5 -5
- data/README.md +1 -1
- data/assets/invalid1.jpg +0 -0
- data/assets/invalid2.jpg +0 -0
- data/lib/wraith/compare_images.rb +1 -1
- data/lib/wraith/helpers/save_metadata.rb +3 -0
- data/lib/wraith/save_images.rb +37 -23
- data/lib/wraith/version.rb +1 -1
- data/lib/wraith/wraith.rb +18 -25
- data/spec/_helpers.rb +0 -1
- data/spec/config_spec.rb +20 -0
- data/spec/configs/test_config--casper.yaml +3 -0
- data/spec/configs/test_config--phantom.yaml +4 -0
- data/spec/js/global--chrome.js +4 -4
- data/spec/js/path--chrome.js +4 -4
- data/spec/resize_reload_spec.rb +4 -2
- data/templates/configs/capture.yaml +4 -0
- data/templates/configs/history.yaml +4 -0
- data/templates/configs/spider.yaml +4 -0
- data/wraith.gemspec +2 -3
- metadata +40 -53
- data/assets/invalid.jpg +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0db0af6f5dd16e7a2277219f65fa5dd11809e249a6178e9a23fd83b5d528507d
|
4
|
+
data.tar.gz: 597f19e645590a2d0f7d2f33bfb4fb485c07bef157bd7fab791a2399b47e488b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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
|
data/assets/invalid1.jpg
ADDED
Binary file
|
data/assets/invalid2.jpg
ADDED
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 -
|
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
|
|
data/lib/wraith/save_images.rb
CHANGED
@@ -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 =>
|
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
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
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
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
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
|
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)
|
data/lib/wraith/version.rb
CHANGED
data/lib/wraith/wraith.rb
CHANGED
@@ -72,7 +72,7 @@ class Wraith::Wraith
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def history_dir
|
75
|
-
@config
|
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
|
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
|
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
|
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
|
180
|
+
@config.fetch('threshold', 0)
|
173
181
|
end
|
174
182
|
|
175
183
|
def gallery_template
|
176
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
205
|
+
@config.fetch('verbose', false)
|
213
206
|
end
|
214
207
|
end
|
data/spec/_helpers.rb
CHANGED
data/spec/config_spec.rb
CHANGED
@@ -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)
|
data/spec/js/global--chrome.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
document.body.innerHTML = " ";
|
3
|
-
document.body.style['background-color'] = 'red';
|
4
|
-
|
1
|
+
(function () {
|
2
|
+
document.body.innerHTML = " ";
|
3
|
+
document.body.style['background-color'] = 'red';
|
4
|
+
})();
|
data/spec/js/path--chrome.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
document.body.innerHTML = " ";
|
3
|
-
document.body.style['background-color'] = 'green';
|
4
|
-
|
1
|
+
(function () {
|
2
|
+
document.body.innerHTML = " ";
|
3
|
+
document.body.style['background-color'] = 'green';
|
4
|
+
})();
|
data/spec/resize_reload_spec.rb
CHANGED
@@ -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", "
|
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", "
|
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
|
data/wraith.gemspec
CHANGED
@@ -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
|
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
|
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.
|
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:
|
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/
|
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
|
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.
|
291
|
+
rubygems_version: 2.7.10
|
305
292
|
signing_key:
|
306
293
|
specification_version: 4
|
307
|
-
summary: Wraith
|
294
|
+
summary: Wraith screenshot comparison tool
|
308
295
|
test_files:
|
309
296
|
- spec/_helpers.rb
|
310
297
|
- spec/base/global.png
|
data/assets/invalid.jpg
DELETED
Binary file
|