lapis_lazuli 0.8.9 → 0.9.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
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
|