lineup 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|