lineup 0.3.0 → 0.4.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/lib/controller/browser.rb +6 -4
- data/lib/lineup.rb +53 -11
- data/lib/lineup/version.rb +1 -1
- data/tests/rspec/lineup_spec.rb +16 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9c1277997e4c9f112ae3a09071a8a54ff47ea66
|
4
|
+
data.tar.gz: 91015501ca8250b834c1473b121546a632f0d0b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20cf39c0e193c0c1672fc717bdb8c326b8bce914835c566c3e77545c575c083e4c6685c958040853d63cb0c411cccbc2d5dd1da36c2bcfa17225e2cac6d46929
|
7
|
+
data.tar.gz: fc4a0df84e6779908648a52bd25e512c6ffe3d3c660079a61f9c28886cfbfbbdee0a949f08e0ba7227a5737f608efdb656f8007d99e8e4daefc6a4282c8579e5
|
data/lib/controller/browser.rb
CHANGED
@@ -7,7 +7,7 @@ require_relative '../helper'
|
|
7
7
|
|
8
8
|
class Browser
|
9
9
|
|
10
|
-
def initialize(baseurl, urls, resolutions, path, headless, wait,
|
10
|
+
def initialize(baseurl, urls, resolutions, path, headless, wait, cookies = [])
|
11
11
|
@absolute_image_path = path
|
12
12
|
FileUtils.mkdir_p @absolute_image_path
|
13
13
|
@baseurl = baseurl
|
@@ -15,7 +15,7 @@ class Browser
|
|
15
15
|
@resolutions = resolutions
|
16
16
|
@headless = headless
|
17
17
|
@wait = wait
|
18
|
-
@
|
18
|
+
@cookies = cookies
|
19
19
|
end
|
20
20
|
|
21
21
|
def record(version)
|
@@ -54,9 +54,11 @@ class Browser
|
|
54
54
|
|
55
55
|
url = Helper.url(@baseurl, url)
|
56
56
|
@browser.goto url
|
57
|
-
if @
|
57
|
+
if @cookies.any?
|
58
58
|
@browser.cookies.clear
|
59
|
-
@
|
59
|
+
@cookies.each do |cookie|
|
60
|
+
@browser.cookies.add(cookie[:name], cookie[:value], domain: cookie[:domain], path: cookie[:path], expires: Time.now + 7200, secure: cookie[:secure])
|
61
|
+
end
|
60
62
|
@browser.goto url
|
61
63
|
end
|
62
64
|
sleep @wait if @wait
|
data/lib/lineup.rb
CHANGED
@@ -82,7 +82,6 @@ module Lineup
|
|
82
82
|
end
|
83
83
|
|
84
84
|
|
85
|
-
|
86
85
|
def resolutions(resolutions)
|
87
86
|
|
88
87
|
# all resolutions to be tested are defined here
|
@@ -109,7 +108,6 @@ module Lineup
|
|
109
108
|
end
|
110
109
|
|
111
110
|
|
112
|
-
|
113
111
|
def filepath_for_images(path)
|
114
112
|
|
115
113
|
# if required an absolute path to store all images can be passed here.
|
@@ -127,12 +125,11 @@ module Lineup
|
|
127
125
|
raise_base_screenshots_taken('The path')
|
128
126
|
|
129
127
|
# the path is one string. we just assign the variable
|
130
|
-
|
128
|
+
|
131
129
|
@screenshots_path = path
|
132
130
|
end
|
133
131
|
|
134
|
-
|
135
|
-
|
132
|
+
|
136
133
|
def use_phantomjs(boolean)
|
137
134
|
|
138
135
|
# if required the headless environment can we skipped and firefox used for the screenshots
|
@@ -154,7 +151,6 @@ module Lineup
|
|
154
151
|
end
|
155
152
|
|
156
153
|
|
157
|
-
|
158
154
|
def difference_path(path)
|
159
155
|
|
160
156
|
# if required an absolute path to store all difference images can be passed here.
|
@@ -201,6 +197,36 @@ module Lineup
|
|
201
197
|
@cookie_for_experiment = cookie
|
202
198
|
end
|
203
199
|
|
200
|
+
def cookies(cookies)
|
201
|
+
|
202
|
+
# a hash for cookies can be set here. this is optional.
|
203
|
+
#
|
204
|
+
# e.g {name: 'experiment', value: 'experiment_value', domain: 'domain.com', path: '/', expires: <Time>, secure: false}
|
205
|
+
#
|
206
|
+
# if it is not nil it has to be an array:
|
207
|
+
|
208
|
+
@cookies = []
|
209
|
+
if cookies
|
210
|
+
cookies.each do |cookie|
|
211
|
+
# generate :symbol => "value" hash map from "symbol" => "value"
|
212
|
+
cookie = cookie.inject({}) { |element, (symbol, value)| element[symbol.to_sym] = value; element }
|
213
|
+
|
214
|
+
#Validation
|
215
|
+
(raise "Cookie must be a hash of format
|
216
|
+
{name: 'experiment', value: 'experiment_value', domain: 'domain.com', path: '/', expires: <Time>, secure: false}
|
217
|
+
" unless cookie.is_a? Hash)
|
218
|
+
|
219
|
+
raise "cookie must have value for :name" unless (cookie[:name]).is_a? String
|
220
|
+
raise "cookie must have value for :value" unless (cookie[:value]).is_a? String
|
221
|
+
raise "cookie must have value for :domain" unless (cookie[:domain]).is_a? String
|
222
|
+
raise "cookie must have value for :path" unless (cookie[:path]).is_a? String
|
223
|
+
raise "cookie must have value for :secure" if (cookie[:secure]) == nil
|
224
|
+
|
225
|
+
@cookies.push(cookie)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
204
230
|
|
205
231
|
def wait_for_asynchron_pages(wait)
|
206
232
|
|
@@ -236,15 +262,24 @@ module Lineup
|
|
236
262
|
difference_path(configuration["difference_path"])
|
237
263
|
wait_for_asynchron_pages(configuration["wait_for_asynchron_pages"])
|
238
264
|
cookie_for_experiment(configuration["cookie_for_experiment"])
|
265
|
+
cookies(configuration["cookies"])
|
266
|
+
|
267
|
+
if @cookies
|
268
|
+
cookies_merged= @cookies.inject([]) { |a,element| a << element.dup }
|
269
|
+
else
|
270
|
+
cookies_merged = []
|
271
|
+
end
|
272
|
+
if @cookie_for_experiment
|
273
|
+
cookies_merged.push(@cookie_for_experiment)
|
274
|
+
end
|
239
275
|
|
240
276
|
# the method calls set the variables for the parameters, we return an array with all of them.
|
241
277
|
# for the example above it is:
|
242
278
|
# [["/multimedia", "/sport"], [600, 800, 1200], "~/images/", true, "#/images/diff"]
|
243
|
-
[@urls, @resolutions, @screenshots_path, @headless, @difference_path, @wait_for_asynchron_pages,
|
279
|
+
[@urls, @resolutions, @screenshots_path, @headless, @difference_path, @wait_for_asynchron_pages, cookies_merged]
|
244
280
|
end
|
245
281
|
|
246
282
|
|
247
|
-
|
248
283
|
def record_screenshot(version)
|
249
284
|
|
250
285
|
# to take a screenshot we have all parameters given from the methods above (or set to default values)
|
@@ -257,7 +292,15 @@ module Lineup
|
|
257
292
|
# and saves the screenshot in the file
|
258
293
|
# @screenshot_path
|
259
294
|
|
260
|
-
|
295
|
+
if @cookies
|
296
|
+
cookies_merged= @cookies.inject([]) { |a,element| a << element.dup }
|
297
|
+
else
|
298
|
+
cookies_merged = []
|
299
|
+
end
|
300
|
+
if @cookie_for_experiment
|
301
|
+
cookies_merged.push(@cookie_for_experiment)
|
302
|
+
end
|
303
|
+
browser = Browser.new(@baseurl, @urls, @resolutions, @screenshots_path, @headless, @wait_for_asynchron_pages, cookies_merged)
|
261
304
|
|
262
305
|
# the only argument missing is if this is the "base" or "new" screenshot, this can be
|
263
306
|
# passed as an argument. The value does not need to be "base" or "new", but can be anything
|
@@ -274,7 +317,6 @@ module Lineup
|
|
274
317
|
end
|
275
318
|
|
276
319
|
|
277
|
-
|
278
320
|
def compare(base, new)
|
279
321
|
|
280
322
|
# this compares two previously taken screenshots
|
@@ -313,7 +355,7 @@ module Lineup
|
|
313
355
|
end
|
314
356
|
|
315
357
|
def clean(urls)
|
316
|
-
urls.gsub(' ', '').gsub(';',',')
|
358
|
+
urls.gsub(' ', '').gsub(';', ',')
|
317
359
|
end
|
318
360
|
|
319
361
|
end
|
data/lib/lineup/version.rb
CHANGED
data/tests/rspec/lineup_spec.rb
CHANGED
@@ -30,7 +30,7 @@ describe '#screeshot_recorder' do
|
|
30
30
|
# Then
|
31
31
|
expect(
|
32
32
|
lineup.load_json_config(file)
|
33
|
-
).to eq([['page1', 'page2'], [13,42], 'some/path', true, 'some/difference/image/path', 5,
|
33
|
+
).to eq([['page1', 'page2'], [13,42], 'some/path', true, 'some/difference/image/path', 5, []])
|
34
34
|
|
35
35
|
# cleanup:
|
36
36
|
FileUtils.rm file if (File.exists? file)
|
@@ -156,7 +156,21 @@ describe '#screeshot_recorder' do
|
|
156
156
|
"domain":".google.de",
|
157
157
|
"path":"/",
|
158
158
|
"secure":false
|
159
|
-
}
|
159
|
+
},
|
160
|
+
"cookies" : [{
|
161
|
+
"name":"cookie2",
|
162
|
+
"value":"22222",
|
163
|
+
"domain":".google.de",
|
164
|
+
"path":"/",
|
165
|
+
"secure":false
|
166
|
+
},
|
167
|
+
{
|
168
|
+
"name":"cookie3",
|
169
|
+
"value":"33333",
|
170
|
+
"domain":".google.de",
|
171
|
+
"path":"/",
|
172
|
+
"secure":false
|
173
|
+
}]
|
160
174
|
}'
|
161
175
|
save_json(json, file)
|
162
176
|
lineup = Lineup::Screenshot.new(BASE_URL)
|
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.4.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-
|
12
|
+
date: 2016-06-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -180,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
180
|
version: '0'
|
181
181
|
requirements: []
|
182
182
|
rubyforge_project:
|
183
|
-
rubygems_version: 2.
|
183
|
+
rubygems_version: 2.2.2
|
184
184
|
signing_key:
|
185
185
|
specification_version: 4
|
186
186
|
summary: lineup will help you in your automated design regression testing
|