From 8a7a1dda1d37159005fbf26b0067e506a9a159cc Mon Sep 17 00:00:00 2001 From: Thomas Walpole Date: Fri, 23 Jan 2015 11:49:38 -0800 Subject: [PATCH 1/2] Tests for Node#send_keys --- lib/capybara/spec/public/test.js | 3 +++ lib/capybara/spec/session/node_spec.rb | 26 ++++++++++++++++++++++++++ lib/capybara/spec/views/with_js.erb | 6 +++++- spec/dsl_spec.rb | 1 + spec/rack_test_spec.rb | 1 + 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/lib/capybara/spec/public/test.js b/lib/capybara/spec/public/test.js index 0aaf373f..66761a5c 100644 --- a/lib/capybara/spec/public/test.js +++ b/lib/capybara/spec/public/test.js @@ -100,4 +100,7 @@ $(function() { $(this).attr('response', response); } }); + $('#with-key-events').keydown(function(e){ + $('#key-events-output').append('keydown:'+e.which+' ') + }); }); diff --git a/lib/capybara/spec/session/node_spec.rb b/lib/capybara/spec/session/node_spec.rb index fcbd724b..693f2948 100644 --- a/lib/capybara/spec/session/node_spec.rb +++ b/lib/capybara/spec/session/node_spec.rb @@ -251,6 +251,32 @@ Capybara::SpecHelper.spec "node" do expect(@session.find(:css, '#has-been-right-clicked')).to be end end + + describe '#send_keys', requires: [:send_keys] do + it "should send a string of keys to an element" do + @session.visit('/form') + @session.find(:css, '#address1_city').send_keys('Oceanside') + expect(@session.find(:css, '#address1_city').value).to eq 'Oceanside' + end + + it "should send special characters" do + @session.visit('/form') + @session.find(:css, '#address1_city').send_keys('Ocean', :space, 'sie', :left, 'd') + expect(@session.find(:css, '#address1_city').value).to eq 'Ocean side' + end + + it "should allow for multiple simultaneous keys" do + @session.visit('/form') + @session.find(:css, '#address1_city').send_keys([:shift, 'o'], 'ceanside') + expect(@session.find(:css, '#address1_city').value).to eq 'Oceanside' + end + + it "should generate key events", requires: [:send_keys, :js] do + @session.visit('/with_js') + @session.find(:css, '#with-key-events').send_keys([:shift,'t'], [:shift,'w']) + expect(@session.find(:css, '#key-events-output')).to have_text('keydown:16 keydown:84 keydown:16 keydown:87') + end + end describe '#reload', :requires => [:js] do context "without automatic reload" do diff --git a/lib/capybara/spec/views/with_js.erb b/lib/capybara/spec/views/with_js.erb index dad73d97..f100e948 100644 --- a/lib/capybara/spec/views/with_js.erb +++ b/lib/capybara/spec/views/with_js.erb @@ -88,7 +88,11 @@

Open prompt

- + +

+ +

+