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