From 96493fb039758190036ec504ef374ea4e1877da5 Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Mon, 22 Dec 2025 12:43:04 -0500 Subject: [PATCH] Focus form control elements during `fill_in` Closes https://github.com/rubycdp/cuprite/issues/157 Related to https://github.com/rubycdp/cuprite/pull/280 Change the `lib/capybara/cuprite/javascripts/index.js` to invoke [HTMLElement.focus][] directly, rather than triggering a synthetic `"focus"` event. [HTMLElement.focus]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus --- lib/capybara/cuprite/javascripts/index.js | 2 +- spec/features/driver_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/capybara/cuprite/javascripts/index.js b/lib/capybara/cuprite/javascripts/index.js index 74b96ae5..c193d492 100644 --- a/lib/capybara/cuprite/javascripts/index.js +++ b/lib/capybara/cuprite/javascripts/index.js @@ -153,7 +153,7 @@ class Cuprite { let valueBefore = node.value; - this.trigger(node, "focus"); + node.focus(); this.setValue(node, ""); if (node.type == "number" || node.type == "date" || node.type == "range") { diff --git a/spec/features/driver_spec.rb b/spec/features/driver_spec.rb index 4896324c..466310b4 100644 --- a/spec/features/driver_spec.rb +++ b/spec/features/driver_spec.rb @@ -1533,7 +1533,7 @@ def create_screenshot(file, *args) it "fills a date" do @session.fill_in "date_field", with: "2016-02-14" - expect(@session.find(:css, "#date_field").value).to eq("2016-02-14") + expect(@session.find(:css, "#date_field", focused: true).value).to eq("2016-02-14") end end