Skip to content

Commit f5ad7eb

Browse files
authored
[rb] Update unhandled_prompt_behavior capability to support hash syntax (#16289)
1 parent c4c67d8 commit f5ad7eb

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

rb/lib/selenium/webdriver/common/options.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,20 @@ def w3c?(key)
131131

132132
def process_w3c_options(options)
133133
w3c_options = options.select { |key, val| w3c?(key) && !val.nil? }
134-
w3c_options[:unhandled_prompt_behavior] &&= w3c_options[:unhandled_prompt_behavior]&.to_s&.tr('_', ' ')
134+
w3c_options[:unhandled_prompt_behavior] &&=
135+
process_unhandled_prompt_behavior_value(w3c_options[:unhandled_prompt_behavior])
135136
options.delete_if { |key, _val| w3c?(key) }
136137
w3c_options
137138
end
138139

140+
def process_unhandled_prompt_behavior_value(value)
141+
if value.is_a?(Hash)
142+
value.transform_values { |v| process_unhandled_prompt_behavior_value(v) }
143+
else
144+
value&.to_s&.tr('_', ' ')
145+
end
146+
end
147+
139148
def process_browser_options(_browser_options)
140149
nil
141150
end

rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,26 @@ module Chrome
267267
{'args' => ["--user-data-dir=#{directory}"]})
268268
end
269269

270+
it 'processes unhandled_prompt_behavior hash values' do
271+
opts = described_class.new(unhandled_prompt_behavior: {
272+
alert: :accept_and_notify,
273+
confirm: 'dismiss_and_notify',
274+
prompt: :ignore,
275+
before_unload: 'accept',
276+
default: :dismiss
277+
})
278+
279+
expect(opts.as_json).to eq('browserName' => 'chrome',
280+
'unhandledPromptBehavior' => {
281+
'alert' => 'accept and notify',
282+
'confirm' => 'dismiss and notify',
283+
'prompt' => 'ignore',
284+
'beforeUnload' => 'accept',
285+
'default' => 'dismiss'
286+
},
287+
'goog:chromeOptions' => {})
288+
end
289+
270290
it 'returns a JSON hash' do
271291
allow(File).to receive(:file?).and_return(true)
272292
allow_any_instance_of(described_class)

0 commit comments

Comments
 (0)