diff --git a/lib/capybara/spec/views/form.erb b/lib/capybara/spec/views/form.erb index f4b3c1e7..3f1778e6 100644 --- a/lib/capybara/spec/views/form.erb +++ b/lib/capybara/spec/views/form.erb @@ -547,6 +547,11 @@ New line after and before textarea tag

+

+ + +

+

diff --git a/spec/shared_selenium_session.rb b/spec/shared_selenium_session.rb index cd73e80f..31979f92 100644 --- a/spec/shared_selenium_session.rb +++ b/spec/shared_selenium_session.rb @@ -334,6 +334,20 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode| end end + describe 'Capybara#Node#attach_file' do + it 'can attach a directory', :focus_ do + pending "Geckodriver doesn't support uploading a directory" if marionette?(session) + pending "Selenium remote doesn't support transferring a directory" if remote?(session) + pending "Headless Chrome doesn't support directory upload - https://bugs.chromium.org/p/chromedriver/issues/detail?id=2521&q=directory%20upload&colspec=ID%20Status%20Pri%20Owner%20Summary" if chrome?(session) && ENV['HEADLESS'] + + session.visit('/form') + @test_file_dir = File.expand_path('./fixtures', File.dirname(__FILE__)) + session.attach_file('Directory Upload', @test_file_dir) + session.click_button('Upload Multiple') + expect(session.body).to include('5 | ') # number of files + end + end + context 'Windows' do it "can't close the primary window" do expect do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 959e653e..02a2ae9f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -42,6 +42,10 @@ module Capybara def browser_name(session) session.driver.browser.browser if session.respond_to?(:driver) end + + def remote?(session) + session.driver.browser.is_a? ::Selenium::WebDriver::Remote::Driver + end end end