lapis_lazuli 0.8.9 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69ecad4834664da669d77a7df4e33aeaf78599f1
|
4
|
+
data.tar.gz: 8c8c532e1dcf5858a2d6a4e122b77596c50617dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0feef2515e1dd72ab4d7d815c0776a6feb1f05985eaf49f31fa1feb768c0e7e25f0a73af220b42ac2a50cea84a1beaf6c7f330c90cbb66923a5101f686ec1f96
|
7
|
+
data.tar.gz: 9957ee6a24b7c780527f6fa48e2f5a855d649c3a29e77aac292a3485bced58f1d0050cba7c22b1c1459d9bc645f4ec9c52280e70a6432bd551f38ce8a1730ce5
|
data/lib/lapis_lazuli/browser.rb
CHANGED
@@ -123,6 +123,8 @@ module LapisLazuli
|
|
123
123
|
@browser = init(*args)
|
124
124
|
# Add this browser to the list of all browsers
|
125
125
|
LapisLazuli::Browser.add_browser(self)
|
126
|
+
# Making sure all browsers are gracefully closed when the exit event is triggered.
|
127
|
+
at_exit { LapisLazuli::Browser::close_all 'exit event trigger' }
|
126
128
|
end
|
127
129
|
end
|
128
130
|
|
@@ -168,20 +170,19 @@ module LapisLazuli
|
|
168
170
|
def close_after_scenario(scenario)
|
169
171
|
# Determine the config
|
170
172
|
close_browser_after = world.env_or_config("close_browser_after")
|
171
|
-
|
172
173
|
case close_browser_after
|
173
|
-
|
174
|
-
|
175
|
-
LapisLazuli::Browser.close_all close_browser_after
|
176
|
-
when "never"
|
177
|
-
# Do nothing: party time, excellent!
|
178
|
-
when "end"
|
179
|
-
# Also ignored here - this is handled in World.browser_destroy
|
180
|
-
else
|
181
|
-
if is_last_scenario?(scenario)
|
182
|
-
# Close it
|
174
|
+
when "scenario"
|
175
|
+
# We always close it
|
183
176
|
LapisLazuli::Browser.close_all close_browser_after
|
184
|
-
|
177
|
+
when "never"
|
178
|
+
# Do nothing: party time, excellent!
|
179
|
+
when "feature"
|
180
|
+
if is_last_scenario?(scenario)
|
181
|
+
# Close it
|
182
|
+
LapisLazuli::Browser.close_all close_browser_after
|
183
|
+
end
|
184
|
+
else # close after 'end' is now default
|
185
|
+
# Also ignored here - this is handled in World.browser_destroy
|
185
186
|
end
|
186
187
|
end
|
187
188
|
|
@@ -230,125 +231,125 @@ module LapisLazuli
|
|
230
231
|
end
|
231
232
|
|
232
233
|
private
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
# Do the same caching stuff for the browser
|
245
|
-
if no_browser_wanted and browser_wanted.nil? and @@cached_browser_options.has_key?(:browser)
|
246
|
-
browser_wanted = @@cached_browser_options[:browser]
|
247
|
-
end
|
234
|
+
##
|
235
|
+
# The main browser window for testing
|
236
|
+
def init(browser_wanted=(no_browser_wanted=true; nil), optional_data=(no_optional_data=true; nil))
|
237
|
+
# Store the optional data so on restart of the browser it still has the
|
238
|
+
# correct configuration
|
239
|
+
if no_optional_data and optional_data.nil? and @@cached_browser_options.has_key?(:optional_data) and (browser_wanted.nil? or browser_wanted == @@cached_browser_options[:browser])
|
240
|
+
optional_data = @@cached_browser_options[:optional_data]
|
241
|
+
elsif optional_data.nil?
|
242
|
+
optional_data = {}
|
243
|
+
end
|
248
244
|
|
245
|
+
# Do the same caching stuff for the browser
|
246
|
+
if no_browser_wanted and browser_wanted.nil? and @@cached_browser_options.has_key?(:browser)
|
247
|
+
browser_wanted = @@cached_browser_options[:browser]
|
248
|
+
end
|
249
249
|
|
250
|
-
if !@@cached_browser_options.has_key? :browser
|
251
|
-
@@cached_browser_options[:browser] = browser_wanted
|
252
|
-
# Duplicate the data as Webdriver modifies it
|
253
|
-
@@cached_browser_options[:optional_data] = optional_data.dup
|
254
|
-
end
|
255
250
|
|
256
|
-
|
257
|
-
|
258
|
-
#
|
259
|
-
|
251
|
+
if !@@cached_browser_options.has_key? :browser
|
252
|
+
@@cached_browser_options[:browser] = browser_wanted
|
253
|
+
# Duplicate the data as Webdriver modifies it
|
254
|
+
@@cached_browser_options[:optional_data] = optional_data.dup
|
260
255
|
end
|
261
256
|
|
262
|
-
|
263
|
-
|
264
|
-
#
|
265
|
-
|
266
|
-
|
267
|
-
begin
|
268
|
-
require 'selenium-webdriver'
|
269
|
-
require 'watir'
|
270
|
-
rescue LoadError => err
|
271
|
-
raise LoadError, "#{err}: you need to add 'watir' to your Gemfile before using the browser."
|
272
|
-
end
|
257
|
+
@browser_wanted = browser_wanted
|
258
|
+
@optional_data = optional_data
|
259
|
+
# Create the browser
|
260
|
+
create_driver(@browser_wanted, @optional_data)
|
261
|
+
end
|
273
262
|
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
263
|
+
##
|
264
|
+
# Create a new browser depending on settings
|
265
|
+
# Always cached the supplied arguments
|
266
|
+
def create_driver(browser_wanted=nil, optional_data=nil)
|
267
|
+
# Run-time dependency.
|
268
|
+
begin
|
269
|
+
require 'selenium-webdriver'
|
270
|
+
require 'watir'
|
271
|
+
rescue LoadError => err
|
272
|
+
raise LoadError, "#{err}: you need to add 'watir' to your Gemfile before using the browser."
|
273
|
+
end
|
278
274
|
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
b = :chrome
|
284
|
-
when 'safari'
|
285
|
-
b = :safari
|
286
|
-
when 'ie'
|
287
|
-
require 'rbconfig'
|
288
|
-
if (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
|
289
|
-
b = :ie
|
290
|
-
else
|
291
|
-
world.error("You can't run IE tests on non-Windows machine")
|
292
|
-
end
|
293
|
-
when 'ios'
|
294
|
-
if RUBY_PLATFORM.downcase.include?("darwin")
|
295
|
-
b = :iphone
|
296
|
-
else
|
297
|
-
world.error("You can't run IOS tests on non-mac machine")
|
298
|
-
end
|
299
|
-
when 'remote'
|
300
|
-
b = :remote
|
301
|
-
else
|
302
|
-
b = :firefox
|
303
|
-
end
|
275
|
+
# No browser? Does the config have a browser? Default to firefox
|
276
|
+
if browser_wanted.nil?
|
277
|
+
browser_wanted = world.env_or_config('browser', 'firefox')
|
278
|
+
end
|
304
279
|
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
#
|
309
|
-
|
280
|
+
# Select the correct browser
|
281
|
+
case browser_wanted.to_s.downcase
|
282
|
+
when 'chrome'
|
283
|
+
# Check Platform running script
|
284
|
+
b = :chrome
|
285
|
+
when 'safari'
|
286
|
+
b = :safari
|
287
|
+
when 'ie'
|
288
|
+
require 'rbconfig'
|
289
|
+
if (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
|
290
|
+
b = :ie
|
291
|
+
else
|
292
|
+
world.error("You can't run IE tests on non-Windows machine")
|
293
|
+
end
|
294
|
+
when 'ios'
|
295
|
+
if RUBY_PLATFORM.downcase.include?("darwin")
|
296
|
+
b = :iphone
|
297
|
+
else
|
298
|
+
world.error("You can't run IOS tests on non-mac machine")
|
299
|
+
end
|
300
|
+
when 'remote'
|
301
|
+
b = :remote
|
302
|
+
else
|
303
|
+
b = :firefox
|
304
|
+
end
|
310
305
|
|
311
|
-
|
312
|
-
|
306
|
+
args = [b]
|
307
|
+
@browser_name = b.to_s
|
308
|
+
if b == :remote
|
309
|
+
# Get the config
|
310
|
+
remote_config = world.env_or_config("remote", {})
|
313
311
|
|
314
|
-
|
315
|
-
|
312
|
+
# The settings we are going to use to create the browser
|
313
|
+
remote_settings = {}
|
316
314
|
|
317
|
-
|
318
|
-
|
319
|
-
string_hash = Hash.new
|
320
|
-
optional_data.each{|k,v| string_hash[k.to_s.downcase] = v}
|
315
|
+
# Add the config to the settings using downcase string keys
|
316
|
+
remote_config.each { |k, v| remote_settings[k.to_s.downcase] = v }
|
321
317
|
|
322
|
-
|
323
|
-
|
324
|
-
|
318
|
+
if optional_data.is_a? Hash
|
319
|
+
# Convert the optional data to downcase string keys
|
320
|
+
string_hash = Hash.new
|
321
|
+
optional_data.each { |k, v| string_hash[k.to_s.downcase] = v }
|
325
322
|
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
args.push(optional_data)
|
330
|
-
elsif world.has_proxy?
|
331
|
-
# Create a session if needed
|
332
|
-
if !world.proxy.has_session?
|
333
|
-
world.proxy.create()
|
334
|
-
end
|
323
|
+
# Merge them with the settings
|
324
|
+
remote_settings.merge! string_hash
|
325
|
+
end
|
335
326
|
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
327
|
+
args.push(remote_browser_config(remote_settings))
|
328
|
+
elsif not optional_data.nil? and not optional_data.empty?
|
329
|
+
world.log.debug("Got optional data: #{optional_data}")
|
330
|
+
args.push(optional_data)
|
331
|
+
elsif world.has_proxy?
|
332
|
+
# Create a session if needed
|
333
|
+
if !world.proxy.has_session?
|
334
|
+
world.proxy.create()
|
343
335
|
end
|
344
336
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
337
|
+
proxy_url = "#{world.proxy.ip}:#{world.proxy.port}"
|
338
|
+
if b == :firefox
|
339
|
+
world.log.debug("Configuring Firefox proxy: #{proxy_url}")
|
340
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
341
|
+
profile.proxy = Selenium::WebDriver::Proxy.new :http => proxy_url, :ssl => proxy_url
|
342
|
+
args.push({:profile => profile})
|
349
343
|
end
|
350
|
-
return browser_instance
|
351
344
|
end
|
345
|
+
|
346
|
+
begin
|
347
|
+
browser_instance = Watir::Browser.new(*args)
|
348
|
+
rescue Selenium::WebDriver::Error::UnknownError => err
|
349
|
+
raise err
|
350
|
+
end
|
351
|
+
return browser_instance
|
352
|
+
end
|
352
353
|
end
|
353
354
|
|
354
355
|
end
|
@@ -4,21 +4,6 @@ source 'http://rubygems.org'
|
|
4
4
|
# install: --no-rdoc --no-ri
|
5
5
|
# update: --no-rdoc --no-ri
|
6
6
|
|
7
|
-
# Debuggers
|
8
|
-
platforms :ruby_18, :ruby_19 do
|
9
|
-
gem 'debugger'
|
10
|
-
end
|
11
|
-
platforms :ruby_20, :ruby_21 do
|
12
|
-
gem 'byebug'
|
13
|
-
gem 'rb-readline'
|
14
|
-
end
|
15
|
-
|
16
|
-
# Windows specific
|
17
|
-
platforms :mswin, :mingw do
|
18
|
-
gem 'win32console'
|
19
|
-
gem 'term-ansicolor'
|
20
|
-
end
|
21
|
-
|
22
7
|
# Install all the webdriver gems and cucumber
|
23
8
|
gem 'watir'
|
24
9
|
gem 'cucumber'
|
data/lib/lapis_lazuli/options.rb
CHANGED
@@ -9,7 +9,7 @@ module LapisLazuli
|
|
9
9
|
##
|
10
10
|
# Configuration options and their default values
|
11
11
|
CONFIG_OPTIONS = {
|
12
|
-
"close_browser_after" => ["
|
12
|
+
"close_browser_after" => ["end", "Close the browser after every scenario, feature, etc. Possible values are 'feature', 'scenario', 'end' and 'never'."],
|
13
13
|
"error_strings" => [nil, "List of strings that indicate errors when detected on a web page."],
|
14
14
|
"default_env" => [nil, "Indicates which environment specific configuration to load when no test environment is provided explicitly."],
|
15
15
|
"test_env" => [nil, "Indicates which environment specific configuration to load in this test run."],
|
data/lib/lapis_lazuli/version.rb
CHANGED
@@ -61,8 +61,8 @@ module WorldModule
|
|
61
61
|
"browser",
|
62
62
|
{
|
63
63
|
"name" => brow.driver.capabilities[:browser_name],
|
64
|
-
"version" => brow.driver.capabilities[:version],
|
65
|
-
"platform" => brow.driver.capabilities[:platform],
|
64
|
+
"version" => brow.driver.capabilities[:browser_version] || brow.driver.capabilities[:version],
|
65
|
+
"platform" => brow.driver.capabilities[:platform_name] || brow.driver.capabilities[:platform],
|
66
66
|
}
|
67
67
|
)
|
68
68
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lapis_lazuli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Onno Steenbergen
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2017-
|
14
|
+
date: 2017-02-08 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|