watir 7.0.0.beta1 → 7.0.0.beta5
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/.github/workflows/tests.yml +7 -3
- data/.rubocop.yml +2 -7
- data/CHANGES.md +32 -0
- data/lib/watir/browser.rb +21 -7
- data/lib/watir/capabilities.rb +52 -7
- data/lib/watir/elements/date_field.rb +4 -1
- data/lib/watir/elements/date_time_field.rb +4 -1
- data/lib/watir/elements/element.rb +32 -3
- data/lib/watir/elements/font.rb +1 -0
- data/lib/watir/elements/iframe.rb +0 -1
- data/lib/watir/elements/radio.rb +2 -2
- data/lib/watir/elements/select.rb +63 -40
- data/lib/watir/has_window.rb +2 -0
- data/lib/watir/locators.rb +4 -0
- data/lib/watir/locators/element/matcher.rb +1 -1
- data/lib/watir/locators/element/selector_builder.rb +0 -3
- data/lib/watir/locators/element/selector_builder/xpath.rb +2 -1
- data/lib/watir/locators/option/matcher.rb +24 -0
- data/lib/watir/locators/option/selector_builder.rb +8 -0
- data/lib/watir/locators/option/selector_builder/xpath.rb +37 -0
- data/lib/watir/logger.rb +3 -74
- data/lib/watir/radio_set.rb +1 -0
- data/lib/watir/screenshot.rb +2 -8
- data/lib/watir/user_editable.rb +10 -3
- data/lib/watir/version.rb +1 -1
- data/lib/watir/window.rb +15 -4
- data/lib/watir/window_collection.rb +9 -0
- data/lib/watirspec.rb +4 -2
- data/lib/watirspec/guards.rb +1 -1
- data/lib/watirspec/remote_server.rb +2 -6
- data/lib/watirspec/server.rb +1 -1
- data/spec/spec_helper.rb +0 -10
- data/spec/unit/capabilities_spec.rb +198 -48
- data/spec/unit/match_elements/element_spec.rb +11 -0
- data/spec/watirspec/after_hooks_spec.rb +22 -45
- data/spec/watirspec/browser_spec.rb +185 -206
- data/spec/watirspec/cookies_spec.rb +47 -52
- data/spec/watirspec/drag_and_drop_spec.rb +5 -7
- data/spec/watirspec/elements/area_spec.rb +1 -5
- data/spec/watirspec/elements/button_spec.rb +4 -8
- data/spec/watirspec/elements/checkbox_spec.rb +2 -4
- data/spec/watirspec/elements/date_field_spec.rb +13 -16
- data/spec/watirspec/elements/date_time_field_spec.rb +14 -13
- data/spec/watirspec/elements/dd_spec.rb +3 -4
- data/spec/watirspec/elements/del_spec.rb +10 -12
- data/spec/watirspec/elements/div_spec.rb +41 -50
- data/spec/watirspec/elements/dl_spec.rb +4 -12
- data/spec/watirspec/elements/element_spec.rb +155 -89
- data/spec/watirspec/elements/elements_spec.rb +8 -9
- data/spec/watirspec/elements/filefield_spec.rb +5 -7
- data/spec/watirspec/elements/form_spec.rb +1 -1
- data/spec/watirspec/elements/forms_spec.rb +3 -5
- data/spec/watirspec/elements/frame_spec.rb +17 -22
- data/spec/watirspec/elements/iframe_spec.rb +21 -27
- data/spec/watirspec/elements/ins_spec.rb +10 -12
- data/spec/watirspec/elements/link_spec.rb +24 -26
- data/spec/watirspec/elements/links_spec.rb +8 -9
- data/spec/watirspec/elements/radio_spec.rb +11 -14
- data/spec/watirspec/elements/select_list_spec.rb +248 -117
- data/spec/watirspec/elements/span_spec.rb +10 -12
- data/spec/watirspec/elements/table_nesting_spec.rb +31 -34
- data/spec/watirspec/elements/table_spec.rb +11 -13
- data/spec/watirspec/elements/tbody_spec.rb +10 -12
- data/spec/watirspec/elements/td_spec.rb +4 -6
- data/spec/watirspec/elements/text_field_spec.rb +10 -12
- data/spec/watirspec/elements/tr_spec.rb +5 -7
- data/spec/watirspec/support/rspec_matchers.rb +1 -1
- data/spec/watirspec/user_editable_spec.rb +26 -28
- data/spec/watirspec/wait_spec.rb +255 -258
- data/spec/watirspec/window_switching_spec.rb +199 -200
- data/spec/watirspec_helper.rb +34 -31
- data/watir.gemspec +1 -1
- metadata +7 -8
- data/spec/implementation_spec.rb +0 -24
- data/spec/unit/logger_spec.rb +0 -81
data/lib/watir/has_window.rb
CHANGED
data/lib/watir/locators.rb
CHANGED
@@ -14,6 +14,10 @@ require 'watir/locators/button/matcher'
|
|
14
14
|
require 'watir/locators/cell/selector_builder'
|
15
15
|
require 'watir/locators/cell/selector_builder/xpath'
|
16
16
|
|
17
|
+
require 'watir/locators/option/matcher'
|
18
|
+
require 'watir/locators/option/selector_builder'
|
19
|
+
require 'watir/locators/option/selector_builder/xpath'
|
20
|
+
|
17
21
|
require 'watir/locators/row/selector_builder'
|
18
22
|
require 'watir/locators/row/selector_builder/xpath'
|
19
23
|
|
@@ -88,9 +88,6 @@ module Watir
|
|
88
88
|
|
89
89
|
def normalize_locator(how, what)
|
90
90
|
case how
|
91
|
-
when 'text'
|
92
|
-
Watir.logger.deprecate "String 'text' as a locator", 'Symbol :text', ids: [:text_string]
|
93
|
-
[:text, what]
|
94
91
|
when :tag_name
|
95
92
|
what = what.to_s if what.is_a?(::Symbol)
|
96
93
|
[how, what]
|
@@ -218,7 +218,8 @@ module Watir
|
|
218
218
|
|
219
219
|
def equal_pair(key, value)
|
220
220
|
if key == :class
|
221
|
-
negate_xpath = value =~ /^!/
|
221
|
+
negate_xpath = value =~ /^!/
|
222
|
+
value = value[1..-1] if negate_xpath
|
222
223
|
expression = "contains(concat(' ', @class, ' '), #{XpathSupport.escape " #{value} "})"
|
223
224
|
|
224
225
|
negate_xpath ? "not(#{expression})" : expression
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Watir
|
2
|
+
module Locators
|
3
|
+
class Option
|
4
|
+
class Matcher < Element::Matcher
|
5
|
+
def fetch_value(element, how)
|
6
|
+
case how
|
7
|
+
when :any
|
8
|
+
[element.attribute(:value),
|
9
|
+
execute_js(:getTextContent, element).gsub(/\s+/, ' ').strip,
|
10
|
+
element.attribute(:label)]
|
11
|
+
else
|
12
|
+
super
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def matches_values?(found, expected)
|
17
|
+
return super unless found.is_a?(Array)
|
18
|
+
|
19
|
+
found.find { |possible| matches_values?(possible, expected) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Watir
|
2
|
+
module Locators
|
3
|
+
class Option
|
4
|
+
class SelectorBuilder
|
5
|
+
class XPath < Element::SelectorBuilder::XPath
|
6
|
+
private
|
7
|
+
|
8
|
+
def attribute_string
|
9
|
+
result = if @selector.key?(:any)
|
10
|
+
to_match = @selector.delete :any
|
11
|
+
value = process_attribute(:value, to_match)
|
12
|
+
text = process_attribute(:text, to_match)
|
13
|
+
label = process_attribute(:label, to_match)
|
14
|
+
"[#{value} or #{text} or #{label}]"
|
15
|
+
else
|
16
|
+
''
|
17
|
+
end
|
18
|
+
|
19
|
+
attributes = @selector.keys.map { |key|
|
20
|
+
process_attribute(key, @selector.delete(key))
|
21
|
+
}.flatten.compact
|
22
|
+
attribute_values = attributes.empty? ? '' : "[#{attributes.join(' and ')}]"
|
23
|
+
"#{result}#{attribute_values}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def add_to_matching(key, regexp, results = nil)
|
27
|
+
return unless results.nil? || requires_matching?(results, regexp)
|
28
|
+
|
29
|
+
return super unless %i[value text label].include? key
|
30
|
+
|
31
|
+
@built[:any] = regexp
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/watir/logger.rb
CHANGED
@@ -16,84 +16,13 @@ module Watir
|
|
16
16
|
# Watir.logger.info('This is info message')
|
17
17
|
# Watir.logger.warn('This is warning message')
|
18
18
|
#
|
19
|
-
class Logger
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
def_delegators :@logger, :debug, :debug?,
|
24
|
-
:info, :info?,
|
25
|
-
:warn?,
|
26
|
-
:error, :error?,
|
27
|
-
:fatal, :fatal?,
|
28
|
-
:level, :level=
|
29
|
-
|
30
|
-
def initialize(progname = 'Watir')
|
31
|
-
@logger = create_logger($stdout)
|
32
|
-
@logger.progname = progname
|
33
|
-
@ignored = []
|
34
|
-
end
|
35
|
-
|
36
|
-
def ignore(ids)
|
37
|
-
@ignored.concat Array(ids).map(&:to_s)
|
38
|
-
end
|
39
|
-
|
40
|
-
def output=(io)
|
41
|
-
@logger.reopen(io)
|
42
|
-
end
|
43
|
-
|
44
|
-
#
|
45
|
-
# Only log a warn message if it is not set to be ignored.
|
46
|
-
#
|
47
|
-
def warn(message, ids: [], &block)
|
48
|
-
msg = ids.empty? ? '' : "[#{ids.map!(&:to_s).map(&:inspect).join(', ')}] "
|
49
|
-
msg += message
|
50
|
-
@logger.warn(msg, &block) unless (@ignored & ids).any?
|
51
|
-
end
|
52
|
-
|
53
|
-
#
|
54
|
-
# Returns IO object used by logger internally.
|
55
|
-
#
|
56
|
-
# Normally, we would have never needed it, but we want to
|
57
|
-
# use it as IO object for all child processes to ensure their
|
58
|
-
# output is redirected there.
|
59
|
-
#
|
60
|
-
# It is only used in debug level, in other cases output is suppressed.
|
61
|
-
#
|
62
|
-
# @api private
|
63
|
-
#
|
64
|
-
def io
|
65
|
-
@logger.instance_variable_get(:@logdev).instance_variable_get(:@dev)
|
66
|
-
end
|
67
|
-
|
68
|
-
#
|
69
|
-
# Marks code as deprecated with replacement.
|
70
|
-
#
|
71
|
-
# @param [String] old
|
72
|
-
# @param [String] new
|
73
|
-
#
|
74
|
-
def deprecate(old, new, reference: '', ids: [])
|
75
|
-
return if @ignored.include?('deprecations') || (@ignored & ids.map!(&:to_s)).any?
|
76
|
-
|
77
|
-
msg = ids.empty? ? '' : "[#{ids.map(&:inspect).join(', ')}] "
|
78
|
-
ref_msg = reference.empty? ? '.' : "; see explanation for this deprecation: #{reference}."
|
79
|
-
warn "[DEPRECATION] #{msg}#{old} is deprecated. Use #{new} instead#{ref_msg}"
|
19
|
+
class Logger < Selenium::WebDriver::Logger
|
20
|
+
def initialize
|
21
|
+
super('Watir')
|
80
22
|
end
|
81
23
|
|
82
24
|
def selenium=(val)
|
83
25
|
Selenium::WebDriver.logger.level = val
|
84
26
|
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
def create_logger(output)
|
89
|
-
logger = ::Logger.new(output)
|
90
|
-
logger.progname = 'Watir'
|
91
|
-
logger.level = ($DEBUG ? DEBUG : WARN)
|
92
|
-
logger.formatter = proc do |severity, time, progname, msg|
|
93
|
-
"#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
|
94
|
-
end
|
95
|
-
|
96
|
-
logger
|
97
|
-
end
|
98
27
|
end
|
99
28
|
end
|
data/lib/watir/radio_set.rb
CHANGED
data/lib/watir/screenshot.rb
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
module Watir
|
2
2
|
class Screenshot
|
3
3
|
def initialize(browser)
|
4
|
-
|
5
|
-
|
6
|
-
Watir.logger.deprecate msg, ids: [:screenshot_driver]
|
7
|
-
@driver = browser
|
8
|
-
else
|
9
|
-
@browser = browser
|
10
|
-
@driver = browser.wd
|
11
|
-
end
|
4
|
+
@browser = browser
|
5
|
+
@driver = browser.wd
|
12
6
|
end
|
13
7
|
|
14
8
|
#
|
data/lib/watir/user_editable.rb
CHANGED
@@ -15,16 +15,23 @@ module Watir
|
|
15
15
|
alias value= set
|
16
16
|
|
17
17
|
#
|
18
|
-
#
|
19
|
-
# Selenium is used to enter the first and last characters
|
18
|
+
# Returns true if element is user_editable because it has a content_editable attribute set
|
20
19
|
#
|
21
|
-
# @
|
20
|
+
# @return [Boolean]
|
22
21
|
#
|
23
22
|
|
24
23
|
def content_editable
|
25
24
|
defined?(@content_editable) && content_editable?
|
26
25
|
end
|
27
26
|
|
27
|
+
#
|
28
|
+
# Uses JavaScript to enter most of the given value.
|
29
|
+
# Selenium is used to enter the first and last characters
|
30
|
+
# This might provide a performance improvement when entering a lot of text on a local machine
|
31
|
+
#
|
32
|
+
# @param [String, Symbol] args
|
33
|
+
#
|
34
|
+
|
28
35
|
def set!(*args)
|
29
36
|
msg = '#set! does not support special keys, use #set instead'
|
30
37
|
raise ArgumentError, msg if args.any? { |v| v.is_a?(::Symbol) }
|
data/lib/watir/version.rb
CHANGED
data/lib/watir/window.rb
CHANGED
@@ -179,10 +179,21 @@ module Watir
|
|
179
179
|
# end
|
180
180
|
#
|
181
181
|
|
182
|
-
def use
|
183
|
-
@browser.original_window ||= current_window
|
182
|
+
def use
|
184
183
|
wait_for_exists
|
185
|
-
|
184
|
+
cache_current = current_window
|
185
|
+
@browser.original_window ||= cache_current
|
186
|
+
restore_to = unless cache_current == handle
|
187
|
+
@driver.switch_to.window(handle)
|
188
|
+
cache_current
|
189
|
+
end
|
190
|
+
if block_given?
|
191
|
+
begin
|
192
|
+
yield
|
193
|
+
ensure
|
194
|
+
@driver.switch_to.window(restore_to) if restore_to
|
195
|
+
end
|
196
|
+
end
|
186
197
|
self
|
187
198
|
end
|
188
199
|
|
@@ -205,7 +216,7 @@ module Watir
|
|
205
216
|
end
|
206
217
|
|
207
218
|
def assert_exists
|
208
|
-
return if @driver.window_handles.include?(handle)
|
219
|
+
return if !handle.nil? && @driver.window_handles.include?(handle)
|
209
220
|
|
210
221
|
raise(NoMatchingWindowFoundException, selector_string)
|
211
222
|
end
|
@@ -39,6 +39,15 @@ module Watir
|
|
39
39
|
end
|
40
40
|
alias eql? ==
|
41
41
|
|
42
|
+
def restore!
|
43
|
+
return if @browser.closed?
|
44
|
+
|
45
|
+
window_list.reject { |win| win.handle == @browser.original_window.handle }.each(&:close)
|
46
|
+
@browser.original_window.use
|
47
|
+
rescue StandardError
|
48
|
+
@browser.close
|
49
|
+
end
|
50
|
+
|
42
51
|
def reset!
|
43
52
|
@window_list = nil
|
44
53
|
end
|
data/lib/watirspec.rb
CHANGED
@@ -53,7 +53,9 @@ module WatirSpec
|
|
53
53
|
@implementation = imp
|
54
54
|
end
|
55
55
|
|
56
|
-
def new_browser
|
56
|
+
def new_browser(pause = 1)
|
57
|
+
sleep pause
|
58
|
+
|
57
59
|
klass = WatirSpec.implementation.browser_class
|
58
60
|
args = Array(WatirSpec.implementation.browser_args).map { |e| e.is_a?(Hash) ? e.dup : e }
|
59
61
|
|
@@ -80,7 +82,7 @@ module WatirSpec
|
|
80
82
|
info << @implementation.driver_info
|
81
83
|
|
82
84
|
Watir.logger.warn "running watirspec against #{info.join ' '} using:\n#{WatirSpec.implementation.inspect_args}",
|
83
|
-
|
85
|
+
id: [:browser_info]
|
84
86
|
rescue StandardError
|
85
87
|
# ignored
|
86
88
|
end
|
data/lib/watirspec/guards.rb
CHANGED
@@ -20,14 +20,10 @@ module WatirSpec
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def jar
|
23
|
-
if ENV['LOCAL_SELENIUM']
|
24
|
-
local = File.expand_path('../selenium/buck-out/gen/java/server/src/org/openqa/grid/selenium/selenium.jar')
|
25
|
-
end
|
26
|
-
|
27
23
|
if File.exist?(ENV['REMOTE_SERVER_BINARY'] || '')
|
28
24
|
ENV['REMOTE_SERVER_BINARY']
|
29
|
-
elsif ENV['LOCAL_SELENIUM']
|
30
|
-
|
25
|
+
elsif ENV['LOCAL_SELENIUM']
|
26
|
+
File.expand_path('../selenium/bazel-bin/java/server/src/org/openqa/selenium/grid/selenium_server_deploy.jar')
|
31
27
|
elsif !Dir.glob('*selenium*.jar').empty?
|
32
28
|
Dir.glob('*selenium*.jar').first
|
33
29
|
else
|
data/lib/watirspec/server.rb
CHANGED
@@ -56,7 +56,7 @@ module WatirSpec
|
|
56
56
|
|
57
57
|
client.write(response(status, headers, body))
|
58
58
|
rescue Errno::ECONNRESET
|
59
|
-
Watir.logger.warn 'Client reset connection, skipping.',
|
59
|
+
Watir.logger.warn 'Client reset connection, skipping.', id: [:reset_connection]
|
60
60
|
ensure
|
61
61
|
client.close
|
62
62
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,13 +20,3 @@ end
|
|
20
20
|
require 'watir'
|
21
21
|
require 'locator_spec_helper'
|
22
22
|
require 'rspec'
|
23
|
-
|
24
|
-
if ENV['AUTOMATIC_RETRY']
|
25
|
-
require 'rspec/retry'
|
26
|
-
RSpec.configure do |config|
|
27
|
-
config.verbose_retry = true
|
28
|
-
config.display_try_failure_messages = true
|
29
|
-
config.default_retry_count = 3
|
30
|
-
config.exceptions_to_retry = [IOError, Net::ReadTimeout]
|
31
|
-
end
|
32
|
-
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative 'unit_helper'
|
2
2
|
|
3
3
|
describe Watir::Capabilities do
|
4
4
|
before(:all) { Watir.logger.ignore(:watir_client) }
|
@@ -39,16 +39,17 @@ describe Watir::Capabilities do
|
|
39
39
|
# :listener
|
40
40
|
# :service (Built from Hash)
|
41
41
|
# :http_client (Generated or Built from Hash)
|
42
|
+
# :proxy (Built from Hash and added to :options)
|
42
43
|
# :options (Generated or Built from Hash)
|
43
44
|
# :capabilities (incompatible with options)
|
44
45
|
|
45
46
|
supported_browsers.each do |browser_symbol|
|
46
|
-
it 'just browser has client &
|
47
|
+
it 'just browser has client & options not service' do
|
47
48
|
capabilities = Watir::Capabilities.new(browser_symbol)
|
48
49
|
|
49
50
|
args = capabilities.to_args
|
50
51
|
expect(args.last[:http_client]).to be_a Watir::HttpClient
|
51
|
-
expect(args.last[:capabilities]).to be_a options_class(browser_symbol)
|
52
|
+
expect(args.last[:capabilities].first).to be_a options_class(browser_symbol)
|
52
53
|
expect(args.last).not_to include(:service)
|
53
54
|
end
|
54
55
|
|
@@ -58,7 +59,7 @@ describe Watir::Capabilities do
|
|
58
59
|
args = capabilities.to_args
|
59
60
|
|
60
61
|
expect(args.last[:http_client]).to be_a Watir::HttpClient
|
61
|
-
expect(args.last[:capabilities]).to be_a options_class(browser_symbol)
|
62
|
+
expect(args.last[:capabilities].first).to be_a options_class(browser_symbol)
|
62
63
|
expect(args.last).not_to include(:service)
|
63
64
|
end
|
64
65
|
|
@@ -74,7 +75,7 @@ describe Watir::Capabilities do
|
|
74
75
|
expect(args.last).not_to include(:service)
|
75
76
|
end
|
76
77
|
|
77
|
-
|
78
|
+
describe 'service' do
|
78
79
|
it 'uses provided service' do
|
79
80
|
halt_service(browser_symbol)
|
80
81
|
|
@@ -106,7 +107,7 @@ describe Watir::Capabilities do
|
|
106
107
|
end
|
107
108
|
end
|
108
109
|
|
109
|
-
|
110
|
+
describe 'http_client' do
|
110
111
|
it 'uses default HTTP Client' do
|
111
112
|
capabilities = Watir::Capabilities.new(browser_symbol)
|
112
113
|
args = capabilities.to_args
|
@@ -152,6 +153,114 @@ describe Watir::Capabilities do
|
|
152
153
|
Watir::Capabilities.new(browser_symbol, capabilities: caps, options: opts)
|
153
154
|
}.to raise_exception(ArgumentError, ':capabilities and :options are not both allowed')
|
154
155
|
end
|
156
|
+
|
157
|
+
describe 'timeout options' do
|
158
|
+
it 'accepts page load and script timeouts in seconds' do
|
159
|
+
options = {page_load_timeout: 11,
|
160
|
+
script_timeout: 12}
|
161
|
+
capabilities = Watir::Capabilities.new(browser_symbol, options: options)
|
162
|
+
args = capabilities.to_args
|
163
|
+
actual_options = args.last[:capabilities].first
|
164
|
+
expect(actual_options.timeouts[:page_load]).to eq 11_000
|
165
|
+
expect(actual_options.timeouts[:script]).to eq 12_000
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'has deprecated timeouts key with page load warning' do
|
169
|
+
options = {timeouts: {page_load: 11}}
|
170
|
+
capabilities = Watir::Capabilities.new(browser_symbol, options: options)
|
171
|
+
msg = 'timeouts has been deprecated, use page_load_timeout (in seconds) directly instead'
|
172
|
+
expect {
|
173
|
+
capabilities.to_args
|
174
|
+
}.to have_deprecated_timeouts(msg)
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'has deprecated timeouts key with script warning' do
|
178
|
+
options = {timeouts: {script: 11}}
|
179
|
+
expect {
|
180
|
+
capabilities = Watir::Capabilities.new(browser_symbol, options: options)
|
181
|
+
capabilities.to_args
|
182
|
+
}.to have_deprecated_timeouts('timeouts has been deprecated, use script_timeout (in seconds) directly instead')
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'does not allow implicit wait timeout in timeouts hash' do
|
186
|
+
options = {timeouts: {implicit: 1}}
|
187
|
+
capabilities = Watir::Capabilities.new(browser_symbol, options: options)
|
188
|
+
expect {
|
189
|
+
capabilities.to_args
|
190
|
+
}.to raise_exception(ArgumentError, 'do not set implicit wait, Watir handles waiting automatically')
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
it 'unhandled prompt behavior defaults to ignore' do
|
195
|
+
capabilities = Watir::Capabilities.new(browser_symbol)
|
196
|
+
args = capabilities.to_args
|
197
|
+
actual_options = args.last[:capabilities].first
|
198
|
+
expect(actual_options.unhandled_prompt_behavior).to eq :ignore
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'unhandled prompt behavior can be overridden' do
|
202
|
+
capabilities = Watir::Capabilities.new(browser_symbol, options: {unhandled_prompt_behavior: :accept_and_notify})
|
203
|
+
args = capabilities.to_args
|
204
|
+
actual_options = args.last[:capabilities].first
|
205
|
+
expect(actual_options.unhandled_prompt_behavior).to eq :accept_and_notify
|
206
|
+
end
|
207
|
+
|
208
|
+
describe 'proxy' do
|
209
|
+
it 'adds Selenium Proxy to empty Options' do
|
210
|
+
proxy = Selenium::WebDriver::Proxy.new(http: '127.0.0.1:8080', ssl: '127.0.0.1:443')
|
211
|
+
capabilities = Watir::Capabilities.new(browser_symbol, proxy: proxy)
|
212
|
+
args = capabilities.to_args
|
213
|
+
proxy = args.last[:capabilities].first.proxy
|
214
|
+
|
215
|
+
expect(proxy).to be_a Selenium::WebDriver::Proxy
|
216
|
+
expect(proxy.type).to eq(:manual)
|
217
|
+
expect(proxy.http).to eq('127.0.0.1:8080')
|
218
|
+
expect(proxy.ssl).to eq('127.0.0.1:443')
|
219
|
+
end
|
220
|
+
|
221
|
+
it 'builds a Proxy from Hash for Options' do
|
222
|
+
proxy = {http: '127.0.0.1:8080', ssl: '127.0.0.1:443'}
|
223
|
+
capabilities = Watir::Capabilities.new(browser_symbol, proxy: proxy)
|
224
|
+
args = capabilities.to_args
|
225
|
+
proxy = args.last[:capabilities].first.proxy
|
226
|
+
|
227
|
+
expect(proxy).to be_a Selenium::WebDriver::Proxy
|
228
|
+
expect(proxy.type).to eq(:manual)
|
229
|
+
expect(proxy.http).to eq('127.0.0.1:8080')
|
230
|
+
expect(proxy.ssl).to eq('127.0.0.1:443')
|
231
|
+
end
|
232
|
+
|
233
|
+
it 'builds a Proxy from Hash and adds to Options' do
|
234
|
+
proxy = {http: '127.0.0.1:8080', ssl: '127.0.0.1:443'}
|
235
|
+
options = {unhandled_prompt_behavior: :accept,
|
236
|
+
page_load_strategy: :eager}
|
237
|
+
|
238
|
+
capabilities = Watir::Capabilities.new(browser_symbol, options: options, proxy: proxy)
|
239
|
+
args = capabilities.to_args
|
240
|
+
actual_options = args.last[:capabilities].first
|
241
|
+
|
242
|
+
expect(actual_options.proxy).to be_a Selenium::WebDriver::Proxy
|
243
|
+
expect(actual_options.proxy.type).to eq(:manual)
|
244
|
+
expect(actual_options.proxy.http).to eq('127.0.0.1:8080')
|
245
|
+
expect(actual_options.proxy.ssl).to eq('127.0.0.1:443')
|
246
|
+
expect(actual_options.unhandled_prompt_behavior).to eq :accept
|
247
|
+
expect(actual_options.page_load_strategy).to eq :eager
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
it 'errors on bad proxy key' do
|
252
|
+
proxy = {bad_key: 'foo'}
|
253
|
+
capabilities = Watir::Capabilities.new(browser_symbol, proxy: proxy)
|
254
|
+
|
255
|
+
expect { capabilities.to_args }.to raise_error(ArgumentError, /unknown option/)
|
256
|
+
end
|
257
|
+
|
258
|
+
it 'errors on bad proxy object' do
|
259
|
+
capabilities = Watir::Capabilities.new(browser_symbol, proxy: 7)
|
260
|
+
expect {
|
261
|
+
capabilities.to_args
|
262
|
+
}.to raise_exception(TypeError, '7 needs to be Selenium Proxy or Hash instance')
|
263
|
+
end
|
155
264
|
end
|
156
265
|
|
157
266
|
# Options:
|
@@ -159,6 +268,7 @@ describe Watir::Capabilities do
|
|
159
268
|
# :service (Errors)
|
160
269
|
# :listener
|
161
270
|
# :http_client (Generated or Built from Hash)
|
271
|
+
# :proxy (Built from Hash and added to :options)
|
162
272
|
# :options (Generated or Built from Hash)
|
163
273
|
# :capabilities (incompatible with options)
|
164
274
|
|
@@ -167,11 +277,11 @@ describe Watir::Capabilities do
|
|
167
277
|
capabilities = Watir::Capabilities.new(url: 'http://example.com')
|
168
278
|
args = capabilities.to_args
|
169
279
|
expect(args.first).to eq :remote
|
170
|
-
actual_options = args.last[:capabilities]
|
280
|
+
actual_options = args.last[:capabilities].first
|
171
281
|
expect(actual_options.browser_name).to eq 'chrome'
|
172
282
|
end
|
173
283
|
|
174
|
-
it 'browser name
|
284
|
+
it 'just url & browser name has capabilities and client but not service' do
|
175
285
|
capabilities = Watir::Capabilities.new(:firefox,
|
176
286
|
url: 'https://example.com/wd/hub/')
|
177
287
|
args = capabilities.to_args
|
@@ -179,7 +289,7 @@ describe Watir::Capabilities do
|
|
179
289
|
expect(args.last[:url]).to eq 'https://example.com/wd/hub/'
|
180
290
|
expect(args.last[:http_client]).to be_a Watir::HttpClient
|
181
291
|
|
182
|
-
expect(args.last[:capabilities]).to be_a Selenium::WebDriver::Firefox::Options
|
292
|
+
expect(args.last[:capabilities].first).to be_a Selenium::WebDriver::Firefox::Options
|
183
293
|
expect(args.last).not_to include(:service)
|
184
294
|
end
|
185
295
|
|
@@ -192,7 +302,7 @@ describe Watir::Capabilities do
|
|
192
302
|
expect(args.last[:listener]).to eq listener
|
193
303
|
end
|
194
304
|
|
195
|
-
it '
|
305
|
+
it 'accepts http client object' do
|
196
306
|
client = Watir::HttpClient.new
|
197
307
|
capabilities = Watir::Capabilities.new(:chrome,
|
198
308
|
url: 'https://example.com/wd/hub',
|
@@ -200,33 +310,61 @@ describe Watir::Capabilities do
|
|
200
310
|
args = capabilities.to_args
|
201
311
|
expect(args.first).to eq :remote
|
202
312
|
expect(args.last[:http_client]).to eq client
|
203
|
-
actual_options = args.last[:capabilities]
|
313
|
+
actual_options = args.last[:capabilities].first
|
204
314
|
expect(actual_options.browser_name).to eq 'chrome'
|
205
315
|
end
|
206
316
|
|
207
|
-
it '
|
317
|
+
it 'accepts http client Hash' do
|
208
318
|
capabilities = Watir::Capabilities.new(:chrome,
|
209
319
|
url: 'https://example.com/wd/hub',
|
210
320
|
http_client: {read_timeout: 30})
|
211
321
|
args = capabilities.to_args
|
212
322
|
expect(args.first).to eq :remote
|
213
323
|
expect(args.last[:http_client].instance_variable_get('@read_timeout')).to eq 30
|
214
|
-
actual_options = args.last[:capabilities]
|
324
|
+
actual_options = args.last[:capabilities].first
|
215
325
|
expect(actual_options.browser_name).to eq 'chrome'
|
216
326
|
end
|
217
327
|
|
218
|
-
it '
|
328
|
+
it 'accepts proxy object' do
|
329
|
+
proxy = Selenium::WebDriver::Proxy.new(http: '127.0.0.1:8080', ssl: '127.0.0.1:443')
|
330
|
+
capabilities = Watir::Capabilities.new(:chrome,
|
331
|
+
url: 'https://example.com/wd/hub',
|
332
|
+
proxy: proxy)
|
333
|
+
args = capabilities.to_args
|
334
|
+
expect(args.first).to eq :remote
|
335
|
+
proxy = args.last[:capabilities].first.proxy
|
336
|
+
expect(proxy).to be_a Selenium::WebDriver::Proxy
|
337
|
+
expect(proxy.type).to eq(:manual)
|
338
|
+
expect(proxy.http).to eq('127.0.0.1:8080')
|
339
|
+
expect(proxy.ssl).to eq('127.0.0.1:443')
|
340
|
+
end
|
341
|
+
|
342
|
+
it 'accepts proxy Hash' do
|
343
|
+
proxy = {http: '127.0.0.1:8080', ssl: '127.0.0.1:443'}
|
344
|
+
capabilities = Watir::Capabilities.new(:chrome,
|
345
|
+
url: 'https://example.com/wd/hub',
|
346
|
+
proxy: proxy)
|
347
|
+
args = capabilities.to_args
|
348
|
+
expect(args.first).to eq :remote
|
349
|
+
proxy = args.last[:capabilities].first.proxy
|
350
|
+
expect(proxy).to be_a Selenium::WebDriver::Proxy
|
351
|
+
expect(proxy.type).to eq(:manual)
|
352
|
+
expect(proxy.http).to eq('127.0.0.1:8080')
|
353
|
+
expect(proxy.ssl).to eq('127.0.0.1:443')
|
354
|
+
end
|
355
|
+
|
356
|
+
it 'accepts options object' do
|
219
357
|
capabilities = Watir::Capabilities.new(:chrome,
|
220
358
|
url: 'https://example.com/wd/hub',
|
221
359
|
options: Selenium::WebDriver::Chrome::Options.new(args: ['--foo']))
|
222
360
|
args = capabilities.to_args
|
223
361
|
expect(args.first).to eq :remote
|
224
|
-
actual_options = args.last[:capabilities]
|
362
|
+
actual_options = args.last[:capabilities].first
|
225
363
|
expect(actual_options.browser_name).to eq 'chrome'
|
226
364
|
expect(actual_options.args).to include('--foo')
|
227
365
|
end
|
228
366
|
|
229
|
-
it '
|
367
|
+
it 'accepts options hash' do
|
230
368
|
options = {prefs: {foo: 'bar'}}
|
231
369
|
capabilities = Watir::Capabilities.new(:chrome,
|
232
370
|
url: 'http://example.com',
|
@@ -234,12 +372,12 @@ describe Watir::Capabilities do
|
|
234
372
|
args = capabilities.to_args
|
235
373
|
expect(args.first).to eq :remote
|
236
374
|
expect(args.last[:url]).to eq 'http://example.com'
|
237
|
-
actual_options = args.last[:capabilities]
|
375
|
+
actual_options = args.last[:capabilities].first
|
238
376
|
expect(actual_options).to be_a(Selenium::WebDriver::Chrome::Options)
|
239
377
|
expect(actual_options.prefs).to eq(foo: 'bar')
|
240
378
|
end
|
241
379
|
|
242
|
-
it '
|
380
|
+
it 'accepts capabilities object' do
|
243
381
|
caps = Watir::Capabilities.new(:chrome,
|
244
382
|
url: 'https://example.com/wd/hub',
|
245
383
|
capabilities: Selenium::WebDriver::Remote::Capabilities.chrome)
|
@@ -250,7 +388,7 @@ describe Watir::Capabilities do
|
|
250
388
|
expect(actual_capabilities.browser_name).to eq 'chrome'
|
251
389
|
end
|
252
390
|
|
253
|
-
it '
|
391
|
+
it 'accepts http client & capabilities objects' do
|
254
392
|
client = Watir::HttpClient.new
|
255
393
|
caps = Watir::Capabilities.new(:chrome,
|
256
394
|
url: 'https://example.com/wd/hub',
|
@@ -265,23 +403,30 @@ describe Watir::Capabilities do
|
|
265
403
|
expect(actual_capabilities.browser_name).to eq 'chrome'
|
266
404
|
end
|
267
405
|
|
268
|
-
it '
|
406
|
+
it 'accepts http client & proxy & options objects' do
|
269
407
|
client = Watir::HttpClient.new
|
408
|
+
proxy = {http: '127.0.0.1:8080', ssl: '127.0.0.1:443'}
|
270
409
|
options = Selenium::WebDriver::Chrome::Options.new(prefs: {foo: 'bar'})
|
271
410
|
caps = Watir::Capabilities.new(:chrome,
|
272
411
|
url: 'https://example.com/wd/hub',
|
412
|
+
proxy: proxy,
|
273
413
|
options: options,
|
274
414
|
http_client: client)
|
275
415
|
|
276
416
|
args = caps.to_args
|
277
417
|
expect(args.first).to eq :remote
|
278
418
|
expect(args.last[:http_client]).to eq client
|
279
|
-
actual_options = args.last[:capabilities]
|
419
|
+
actual_options = args.last[:capabilities].first
|
280
420
|
expect(actual_options).to be_a(Selenium::WebDriver::Chrome::Options)
|
281
421
|
expect(actual_options.prefs).to eq(foo: 'bar')
|
422
|
+
proxy = args.last[:capabilities].first.proxy
|
423
|
+
expect(proxy).to be_a Selenium::WebDriver::Proxy
|
424
|
+
expect(proxy.type).to eq(:manual)
|
425
|
+
expect(proxy.http).to eq('127.0.0.1:8080')
|
426
|
+
expect(proxy.ssl).to eq('127.0.0.1:443')
|
282
427
|
end
|
283
428
|
|
284
|
-
it '
|
429
|
+
it 'raises exception when both options & capabilities defined' do
|
285
430
|
options = {prefs: {foo: 'bar'}}
|
286
431
|
|
287
432
|
expect {
|
@@ -297,7 +442,7 @@ describe Watir::Capabilities do
|
|
297
442
|
headless: true,
|
298
443
|
url: 'http://example.com')
|
299
444
|
args = capabilities.to_args
|
300
|
-
actual_options = args.last[:capabilities]
|
445
|
+
actual_options = args.last[:capabilities].first
|
301
446
|
expect(actual_options.args).to include '--headless', '--disable-gpu'
|
302
447
|
end
|
303
448
|
|
@@ -307,17 +452,22 @@ describe Watir::Capabilities do
|
|
307
452
|
url: 'http://example.com')
|
308
453
|
args = capabilities.to_args
|
309
454
|
|
310
|
-
expect(args.last[:capabilities].args).to include '-headless'
|
455
|
+
expect(args.last[:capabilities].first.args).to include '-headless'
|
311
456
|
end
|
312
457
|
|
313
|
-
it '
|
458
|
+
it 'supports multiple vendor capabilities' do
|
459
|
+
sauce_options = {'sauce:options': {username: ENV['SAUCE_USERNAME'],
|
460
|
+
access_key: ENV['SAUCE_ACCESS_KEY']}}
|
461
|
+
other_options = {'other:options': {foo: 'bar'}}
|
462
|
+
|
314
463
|
capabilities = Watir::Capabilities.new(:chrome,
|
315
|
-
options:
|
316
|
-
access_key: ENV['SAUCE_ACCESS_KEY']}},
|
464
|
+
options: sauce_options.merge(other_options),
|
317
465
|
url: 'https://ondemand.us-west-1.saucelabs.com')
|
318
|
-
|
319
|
-
|
320
|
-
expect(
|
466
|
+
|
467
|
+
se_caps = capabilities.to_args.last[:capabilities]
|
468
|
+
expect(se_caps).to include(Selenium::WebDriver::Chrome::Options.new(unhandled_prompt_behavior: :ignore))
|
469
|
+
expect(se_caps).to include(Selenium::WebDriver::Remote::Capabilities.new(sauce_options))
|
470
|
+
expect(se_caps).to include(Selenium::WebDriver::Remote::Capabilities.new(other_options))
|
321
471
|
end
|
322
472
|
end
|
323
473
|
|
@@ -326,14 +476,14 @@ describe Watir::Capabilities do
|
|
326
476
|
capabilities = Watir::Capabilities.new
|
327
477
|
args = capabilities.to_args
|
328
478
|
expect(args.last[:http_client]).to be_a Watir::HttpClient
|
329
|
-
expect(args.last[:capabilities]).to be_a Selenium::WebDriver::Chrome::Options
|
479
|
+
expect(args.last[:capabilities].first).to be_a Selenium::WebDriver::Chrome::Options
|
330
480
|
expect(args.last).not_to include(:service)
|
331
481
|
end
|
332
482
|
|
333
483
|
it 'sets headless by creating options' do
|
334
484
|
capabilities = Watir::Capabilities.new(:chrome, headless: true)
|
335
485
|
args = capabilities.to_args
|
336
|
-
actual_options = args.last[:capabilities]
|
486
|
+
actual_options = args.last[:capabilities].first
|
337
487
|
expect(actual_options.args).to include '--headless', '--disable-gpu'
|
338
488
|
end
|
339
489
|
|
@@ -342,7 +492,7 @@ describe Watir::Capabilities do
|
|
342
492
|
options: Selenium::WebDriver::Chrome::Options.new,
|
343
493
|
headless: true)
|
344
494
|
args = capabilities.to_args
|
345
|
-
actual_options = args.last[:capabilities]
|
495
|
+
actual_options = args.last[:capabilities].first
|
346
496
|
expect(actual_options.args).to include '--headless', '--disable-gpu'
|
347
497
|
end
|
348
498
|
|
@@ -352,7 +502,7 @@ describe Watir::Capabilities do
|
|
352
502
|
options: options,
|
353
503
|
headless: true)
|
354
504
|
args = capabilities.to_args
|
355
|
-
actual_options = args.last[:capabilities]
|
505
|
+
actual_options = args.last[:capabilities].first
|
356
506
|
expect(actual_options.args).to include '--headless', '--disable-gpu', '--foo'
|
357
507
|
end
|
358
508
|
|
@@ -360,7 +510,7 @@ describe Watir::Capabilities do
|
|
360
510
|
options = {args: %w[--foo --bar]}
|
361
511
|
capabilities = Watir::Capabilities.new(:chrome, options: options)
|
362
512
|
args = capabilities.to_args
|
363
|
-
actual_options = args.last[:capabilities]
|
513
|
+
actual_options = args.last[:capabilities].first
|
364
514
|
expect(actual_options).to be_a Selenium::WebDriver::Chrome::Options
|
365
515
|
expect(actual_options.args).to include '--foo', '--bar'
|
366
516
|
end
|
@@ -371,7 +521,7 @@ describe Watir::Capabilities do
|
|
371
521
|
capabilities = Watir::Capabilities.new(:chrome,
|
372
522
|
options: opts)
|
373
523
|
args = capabilities.to_args
|
374
|
-
actual_options = args.last[:capabilities]
|
524
|
+
actual_options = args.last[:capabilities].first
|
375
525
|
expect(actual_options.page_load_strategy).to eq 'eager'
|
376
526
|
expect(actual_options.args).to include '--foo', '--bar'
|
377
527
|
end
|
@@ -384,7 +534,7 @@ describe Watir::Capabilities do
|
|
384
534
|
|
385
535
|
capabilities = Watir::Capabilities.new(:firefox, options: options)
|
386
536
|
|
387
|
-
actual_options = capabilities.to_args.last[:capabilities]
|
537
|
+
actual_options = capabilities.to_args.last[:capabilities].first
|
388
538
|
expect(actual_options.args).to include '--foo'
|
389
539
|
expect(actual_options.profile).to eq profile
|
390
540
|
end
|
@@ -395,7 +545,7 @@ describe Watir::Capabilities do
|
|
395
545
|
|
396
546
|
capabilities = Watir::Capabilities.new(:firefox, options: options)
|
397
547
|
|
398
|
-
actual_options = capabilities.to_args.last[:capabilities]
|
548
|
+
actual_options = capabilities.to_args.last[:capabilities].first
|
399
549
|
expect(actual_options.args).to include '--foo'
|
400
550
|
expect(actual_options.profile).to eq profile
|
401
551
|
end
|
@@ -403,7 +553,7 @@ describe Watir::Capabilities do
|
|
403
553
|
it 'sets headless by creating options' do
|
404
554
|
capabilities = Watir::Capabilities.new(:firefox, headless: true)
|
405
555
|
args = capabilities.to_args
|
406
|
-
actual_options = args.last[:capabilities]
|
556
|
+
actual_options = args.last[:capabilities].first
|
407
557
|
expect(actual_options.args).to include '-headless'
|
408
558
|
end
|
409
559
|
|
@@ -412,7 +562,7 @@ describe Watir::Capabilities do
|
|
412
562
|
options: Selenium::WebDriver::Firefox::Options.new,
|
413
563
|
headless: true)
|
414
564
|
args = capabilities.to_args
|
415
|
-
actual_options = args.last[:capabilities]
|
565
|
+
actual_options = args.last[:capabilities].first
|
416
566
|
expect(actual_options.args).to include '-headless'
|
417
567
|
end
|
418
568
|
|
@@ -422,7 +572,7 @@ describe Watir::Capabilities do
|
|
422
572
|
options: options,
|
423
573
|
headless: true)
|
424
574
|
args = capabilities.to_args
|
425
|
-
actual_options = args.last[:capabilities]
|
575
|
+
actual_options = args.last[:capabilities].first
|
426
576
|
expect(actual_options.args).to include '-headless', '-foo'
|
427
577
|
end
|
428
578
|
|
@@ -430,7 +580,7 @@ describe Watir::Capabilities do
|
|
430
580
|
options = {args: %w[--foo --bar]}
|
431
581
|
capabilities = Watir::Capabilities.new(:firefox, options: options)
|
432
582
|
args = capabilities.to_args
|
433
|
-
actual_options = args.last[:capabilities]
|
583
|
+
actual_options = args.last[:capabilities].first
|
434
584
|
expect(actual_options).to be_a Selenium::WebDriver::Firefox::Options
|
435
585
|
expect(actual_options.args).to include '--foo', '--bar'
|
436
586
|
end
|
@@ -441,7 +591,7 @@ describe Watir::Capabilities do
|
|
441
591
|
capabilities = Watir::Capabilities.new(:firefox,
|
442
592
|
options: opts)
|
443
593
|
args = capabilities.to_args
|
444
|
-
actual_options = args.last[:capabilities]
|
594
|
+
actual_options = args.last[:capabilities].first
|
445
595
|
expect(actual_options.args).to include '--foo', '--bar'
|
446
596
|
expect(actual_options.page_load_strategy).to eq 'eager'
|
447
597
|
end
|
@@ -460,7 +610,7 @@ describe Watir::Capabilities do
|
|
460
610
|
options = {automatic_inspection: true}
|
461
611
|
capabilities = Watir::Capabilities.new(:safari, options: options)
|
462
612
|
args = capabilities.to_args
|
463
|
-
actual_options = args.last[:capabilities]
|
613
|
+
actual_options = args.last[:capabilities].first
|
464
614
|
expect(actual_options).to be_a Selenium::WebDriver::Safari::Options
|
465
615
|
expect(actual_options.automatic_inspection).to eq true
|
466
616
|
end
|
@@ -471,7 +621,7 @@ describe Watir::Capabilities do
|
|
471
621
|
capabilities = Watir::Capabilities.new(:safari,
|
472
622
|
options: opts)
|
473
623
|
args = capabilities.to_args
|
474
|
-
actual_options = args.last[:capabilities]
|
624
|
+
actual_options = args.last[:capabilities].first
|
475
625
|
expect(actual_options.automatic_inspection).to eq true
|
476
626
|
expect(actual_options.page_load_strategy).to eq 'eager'
|
477
627
|
end
|
@@ -482,7 +632,7 @@ describe Watir::Capabilities do
|
|
482
632
|
options = {args: %w[--foo --bar]}
|
483
633
|
capabilities = Watir::Capabilities.new(:ie, options: options)
|
484
634
|
args = capabilities.to_args
|
485
|
-
actual_options = args.last[:capabilities]
|
635
|
+
actual_options = args.last[:capabilities].first
|
486
636
|
expect(actual_options).to be_a Selenium::WebDriver::IE::Options
|
487
637
|
expect(actual_options.args).to include '--foo', '--bar'
|
488
638
|
end
|
@@ -491,7 +641,7 @@ describe Watir::Capabilities do
|
|
491
641
|
options = {browser_attach_timeout: true}
|
492
642
|
capabilities = Watir::Capabilities.new(:ie, options: options)
|
493
643
|
args = capabilities.to_args
|
494
|
-
actual_options = args.last[:capabilities]
|
644
|
+
actual_options = args.last[:capabilities].first
|
495
645
|
expect(actual_options).to be_a Selenium::WebDriver::IE::Options
|
496
646
|
expect(actual_options.options[:browser_attach_timeout]).to eq true
|
497
647
|
end
|
@@ -502,7 +652,7 @@ describe Watir::Capabilities do
|
|
502
652
|
capabilities = Watir::Capabilities.new(:ie,
|
503
653
|
options: opts)
|
504
654
|
args = capabilities.to_args
|
505
|
-
actual_options = args.last[:capabilities]
|
655
|
+
actual_options = args.last[:capabilities].first
|
506
656
|
expect(actual_options.args).to include '--foo'
|
507
657
|
expect(actual_options.page_load_strategy).to eq 'eager'
|
508
658
|
end
|