diff --git a/CHANGELOG.md b/CHANGELOG.md index ddbe085..6424e29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### Fixed - Ensure node has focus before setting value [#280] +- `Capybara::Cuprite::Node#send_keys` ignores empty or nil keys instead of raising, matching the Selenium and rack_test drivers ### Removed diff --git a/lib/capybara/cuprite/node.rb b/lib/capybara/cuprite/node.rb index 45c58eb..54da972 100644 --- a/lib/capybara/cuprite/node.rb +++ b/lib/capybara/cuprite/node.rb @@ -220,6 +220,9 @@ def ==(other) end def send_keys(*keys) + keys = keys.reject { |key| key.nil? || key == "" } + return if keys.empty? + command(:send_keys, keys) end alias send_key send_keys diff --git a/spec/features/driver_spec.rb b/spec/features/driver_spec.rb index 23ff3b2..4e1369b 100644 --- a/spec/features/driver_spec.rb +++ b/spec/features/driver_spec.rb @@ -1272,6 +1272,15 @@ def create_screenshot(file, *args) expect(input.value).to eq("Text appended") end + it "ignores empty or nil keys instead of raising" do + input = @session.find(:css, "#filled_input") + + expect { input.native.send_keys("") }.not_to raise_error + expect { input.native.send_keys(nil) }.not_to raise_error + + expect(input.value).to eq("Text") + end + it "sends keys to empty textarea" do input = @session.find(:css, "#empty_textarea")