diff --git a/cuprite.gemspec b/cuprite.gemspec index 235d0b69..197a38f6 100644 --- a/cuprite.gemspec +++ b/cuprite.gemspec @@ -25,5 +25,5 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.7.0" s.add_runtime_dependency "capybara", "~> 3.0" - s.add_runtime_dependency "ferrum", "~> 0.15.0" + s.add_runtime_dependency "ferrum", "~> 0.16.0" end diff --git a/lib/capybara/cuprite/node.rb b/lib/capybara/cuprite/node.rb index 54a0708c..db0e125b 100644 --- a/lib/capybara/cuprite/node.rb +++ b/lib/capybara/cuprite/node.rb @@ -110,7 +110,7 @@ def set(value, options = {}) command(:set, value.to_s) elsif self[:isContentEditable] command(:delete_text) - send_keys(value.to_s) + click.type(value.to_s) end end diff --git a/spec/features/driver_spec.rb b/spec/features/driver_spec.rb index a4c66858..4896324c 100644 --- a/spec/features/driver_spec.rb +++ b/spec/features/driver_spec.rb @@ -1072,7 +1072,10 @@ def create_screenshot(file, *args) context "basic http authentication" do it "denies without credentials" do - @session.visit "/cuprite/basic_auth" + expect { @session.visit "/cuprite/basic_auth" }.to raise_error( + Ferrum::StatusError, + %r{Request to http://.*/cuprite/basic_auth failed \(net::ERR_INVALID_AUTH_CREDENTIALS\)} + ) expect(@session.status_code).to eq(401) expect(@session).not_to have_content("Welcome, authenticated client") diff --git a/spec/support/test_app.rb b/spec/support/test_app.rb index 68c92f46..c93b7359 100644 --- a/spec/support/test_app.rb +++ b/spec/support/test_app.rb @@ -9,6 +9,8 @@ class TestApp CUPRITE_VIEWS = "#{File.dirname(__FILE__)}/views" CUPRITE_PUBLIC = "#{File.dirname(__FILE__)}/public" + set :erb, layout: File.read("#{CUPRITE_VIEWS}/layout.erb") + helpers do def requires_credentials(login, password) return if authorized?(login, password) @@ -67,17 +69,17 @@ def authorized?(login, password) sleep 1 cookie_value = "test_cookie" response.set_cookie("stealth", cookie_value) - "Cookie set to #{cookie_value}" + render_string("Cookie set to #{cookie_value}") end get "/cuprite/slow" do sleep 0.2 - "slow page" + render_string("slow page") end get "/cuprite/really_slow" do sleep 3 - "really slow page" + render_string("really slow page") end get "/cuprite/basic_auth" do @@ -87,13 +89,13 @@ def authorized?(login, password) post "/cuprite/post_basic_auth" do requires_credentials("login", "pass") - "Authorized POST request" + render_string("Authorized POST request") end get "/cuprite/cacheable" do cache_control :public, max_age: 60 etag "deadbeef" - "Cacheable request click me" + render_string("Cacheable request click me") end get "/cuprite/:view" do |view| @@ -110,4 +112,8 @@ def authorized?(login, password) def render_view(view) erb File.read("#{CUPRITE_VIEWS}/#{view}.erb") end + + def render_string(str) + erb str + end end diff --git a/spec/support/views/layout.erb b/spec/support/views/layout.erb new file mode 100644 index 00000000..fb22fa95 --- /dev/null +++ b/spec/support/views/layout.erb @@ -0,0 +1,11 @@ + + + + + + + + + <%= yield %> + +