lineup 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/lineup +25 -3
- data/lib/controller/comparer.rb +6 -21
- data/lib/lineup/version.rb +1 -1
- data/lib/lineup.rb +49 -21
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d9515daedfb284a4e7aedb97d26ba93c78c822b
|
4
|
+
data.tar.gz: ffc0a25a56227a60011a2c1af03ba1cd4907bc2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e8b81e43e1201d21b61b796d2578c40cb4cea33f2e051fad98b339caea33191b3d763b7c253b0536a97f1146973e8320657ace203efec29dbd95386c8a5677f
|
7
|
+
data.tar.gz: d0ed7dc370932a0f1e80eab7e3d0b907103ee813446e2d1bd1cfc7b4d09ec6b4a551ea4eb1c9329354ea5e58b610ed5aefd2789b22fa59c3a31b727d9800d2f3
|
data/bin/lineup
CHANGED
@@ -1,7 +1,29 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require 'lineup'
|
3
|
+
require '../lib/lineup'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
puts("This is an example. And a benchmark.")
|
6
|
+
|
7
|
+
lineup = Lineup::Screenshot.new('https://uhr.ptb.de')
|
8
|
+
lineup.wait_for_asynchron_pages(1)
|
9
|
+
lineup.use_phantomjs true
|
10
|
+
start = Time.now
|
11
|
+
puts("Taking screenshots")
|
7
12
|
lineup.record_screenshot('base')
|
13
|
+
screenshots = Time.now
|
14
|
+
sleep(2)
|
15
|
+
lineup.record_screenshot('nun')
|
16
|
+
screenshots2 = Time.now - 2
|
17
|
+
puts("Starting comparison")
|
18
|
+
lineup.compare('base', 'nun')
|
19
|
+
lineup.save_json(".")
|
20
|
+
compare = Time.now - 2
|
21
|
+
|
22
|
+
s_t = screenshots - start
|
23
|
+
puts("Screenshots first run took #{s_t} seconds")
|
24
|
+
s_t = screenshots2 - screenshots
|
25
|
+
puts("Screenshots second run took #{s_t} seconds")
|
26
|
+
c = compare - screenshots2
|
27
|
+
puts("Comparison took #{c} seconds")
|
28
|
+
|
29
|
+
puts("End")
|
data/lib/controller/comparer.rb
CHANGED
@@ -17,11 +17,6 @@ class Comparer
|
|
17
17
|
compare_images
|
18
18
|
end
|
19
19
|
|
20
|
-
def json(path)
|
21
|
-
FileUtils.mkdir_p path
|
22
|
-
generate_json(path)
|
23
|
-
end
|
24
|
-
|
25
20
|
private
|
26
21
|
|
27
22
|
def compare_images
|
@@ -53,12 +48,12 @@ class Comparer
|
|
53
48
|
)
|
54
49
|
images.save_difference_image diff_name
|
55
50
|
result = {
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
51
|
+
url: url,
|
52
|
+
width: width,
|
53
|
+
difference: images.difference,
|
54
|
+
base_file: base_name,
|
55
|
+
new_file: new_name,
|
56
|
+
difference_file: diff_name
|
62
57
|
}
|
63
58
|
self.difference << result
|
64
59
|
end
|
@@ -66,14 +61,4 @@ class Comparer
|
|
66
61
|
end
|
67
62
|
end
|
68
63
|
|
69
|
-
def generate_json(path)
|
70
|
-
json = difference.to_json
|
71
|
-
file = File.open(
|
72
|
-
"#{path}/log.json", "a+"
|
73
|
-
)
|
74
|
-
file.write(json)
|
75
|
-
file.close
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
64
|
end
|
data/lib/lineup/version.rb
CHANGED
data/lib/lineup.rb
CHANGED
@@ -51,6 +51,8 @@ module Lineup
|
|
51
51
|
# see more in according method below
|
52
52
|
|
53
53
|
difference_path("#{Dir.pwd}/screenshots")
|
54
|
+
|
55
|
+
@comparer = []
|
54
56
|
end
|
55
57
|
|
56
58
|
|
@@ -178,7 +180,7 @@ module Lineup
|
|
178
180
|
# if it is not nil it has to be an array:
|
179
181
|
if cookie
|
180
182
|
# generate :symbol => "value" hash map from "symbol" => "value"
|
181
|
-
cookie = cookie.inject({}){|element,(symbol,value)| element[symbol.to_sym] = value; element}
|
183
|
+
cookie = cookie.inject({}) { |element, (symbol, value)| element[symbol.to_sym] = value; element }
|
182
184
|
|
183
185
|
#Validation
|
184
186
|
(raise "Cookie must be a hash of format
|
@@ -265,7 +267,7 @@ module Lineup
|
|
265
267
|
cookies(configuration["cookies"])
|
266
268
|
|
267
269
|
if @cookies
|
268
|
-
cookies_merged= @cookies.inject([]) { |a,element| a << element.dup }
|
270
|
+
cookies_merged= @cookies.inject([]) { |a, element| a << element.dup }
|
269
271
|
else
|
270
272
|
cookies_merged = []
|
271
273
|
end
|
@@ -293,26 +295,32 @@ module Lineup
|
|
293
295
|
# @screenshot_path
|
294
296
|
|
295
297
|
if @cookies
|
296
|
-
cookies_merged= @cookies.inject([]) { |a,element| a << element.dup }
|
298
|
+
cookies_merged= @cookies.inject([]) { |a, element| a << element.dup }
|
297
299
|
else
|
298
300
|
cookies_merged = []
|
299
301
|
end
|
300
302
|
if @cookie_for_experiment
|
301
303
|
cookies_merged.push(@cookie_for_experiment)
|
302
304
|
end
|
303
|
-
browser = Browser.new(@baseurl, @urls, @resolutions, @screenshots_path, @headless, @wait_for_asynchron_pages, cookies_merged)
|
304
|
-
|
305
|
-
# the only argument missing is if this is the "base" or "new" screenshot, this can be
|
306
|
-
# passed as an argument. The value does not need to be "base" or "new", but can be anything
|
307
|
-
|
308
|
-
browser.record(version)
|
309
305
|
|
310
|
-
|
311
|
-
|
312
|
-
|
306
|
+
threads = []
|
307
|
+
i=0
|
308
|
+
@urls.each { |url|
|
309
|
+
@resolutions.each { |resolution|
|
310
|
+
threads[i] = Thread.new {
|
311
|
+
browser = Browser.new(@baseurl, [url], [resolution], @screenshots_path, @headless, @wait_for_asynchron_pages, cookies_merged)
|
312
|
+
# the only argument missing is if this is the "base" or "new" screenshot, this can be
|
313
|
+
# passed as an argument. The value does not need to be "base" or "new", but can be anything
|
314
|
+
browser.record(version)
|
315
|
+
# this will close the browser and terminate the headless environment
|
316
|
+
browser.end
|
317
|
+
}
|
318
|
+
i+=1;
|
319
|
+
}
|
320
|
+
}
|
321
|
+
threads.each { |t| t.join }
|
313
322
|
|
314
323
|
# this flag is set, so that parameters like resolution or urls cannot be changed any more
|
315
|
-
|
316
324
|
@got_base_screenshots = true
|
317
325
|
end
|
318
326
|
|
@@ -324,29 +332,36 @@ module Lineup
|
|
324
332
|
# as "variable" in the method "record_screenshot"!
|
325
333
|
# all other information are constants and are passed along
|
326
334
|
|
327
|
-
|
335
|
+
threads = []
|
336
|
+
i=0
|
337
|
+
@urls.each { |url|
|
338
|
+
@resolutions.each { |resolution|
|
339
|
+
threads[i] = Thread.new {
|
340
|
+
@comparer.push(Comparer.new(base, new, @difference_path, @baseurl, [url], [resolution], @screenshots_path))
|
341
|
+
}
|
342
|
+
i+=1;
|
343
|
+
}
|
344
|
+
}
|
345
|
+
threads.each { |t| t.join }
|
328
346
|
|
329
347
|
# this gives back an array, which as one element for each difference image.
|
330
348
|
# [ {diff_1}, {diff_2}, ...]
|
331
349
|
# while each diff is a hash with keys:
|
332
350
|
# {url: <url>, width: <width in px>, difference: <%of changed pixel>, base_file: <file path>, new_file: <file path>, diff_file: <file path>}
|
333
|
-
|
334
|
-
@comparer.difference
|
351
|
+
@comparer.each { |c| c.difference }
|
335
352
|
end
|
336
353
|
|
337
354
|
def save_json(path)
|
338
355
|
|
339
356
|
# json output can be saved if needed. A path is required to save the file
|
340
|
-
|
341
|
-
raise "screenshots need to be compared before json output can be gernerated" unless @comparer
|
357
|
+
raise "screenshots need to be compared before json output can be generated" unless @comparer.count > 0
|
342
358
|
|
343
359
|
# the array from @comparer.difference is saved as json
|
344
|
-
|
345
|
-
@comparer.json(path)
|
360
|
+
save_comparer_log(path)
|
346
361
|
|
347
362
|
end
|
348
363
|
|
349
|
-
|
364
|
+
private
|
350
365
|
|
351
366
|
def raise_base_screenshots_taken(value)
|
352
367
|
if @got_base_screenshots
|
@@ -358,6 +373,19 @@ module Lineup
|
|
358
373
|
urls.gsub(' ', '').gsub(';', ',')
|
359
374
|
end
|
360
375
|
|
376
|
+
def save_comparer_log(path)
|
377
|
+
FileUtils.mkdir_p path
|
378
|
+
|
379
|
+
diff = []
|
380
|
+
@comparer.each { |c| diff += c.difference }
|
381
|
+
json = diff.to_json
|
382
|
+
file = File.open(
|
383
|
+
"#{path}/log.json", "w"
|
384
|
+
)
|
385
|
+
file.write(json)
|
386
|
+
file.close
|
387
|
+
end
|
388
|
+
|
361
389
|
end
|
362
390
|
|
363
391
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lineup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Finn
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-06-
|
12
|
+
date: 2016-06-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|