Ruby-on-rails – Capybara – Submit a form without button

bddcapybararspecruby-on-railstesting

I am trying to submit a form without button using just Capybara and Rspec (no Cucumber or Selenium, I know there is already a question about that).

I've seen there is a gist to add a method to submit a form without button:

module SubmitRackTestFormWithoutButton
  def submit_form!
    Capybara::RackTest::Form.new(driver, form).submit({})
  end
end
Capybara::RackTest::Node.send :include, SubmitRackTestFormWithoutButton

https://gist.github.com/989533, but I've not gotten it to work and I left a comment on it:

I get undefined method `submit_form!' for #Capybara::Node::Element:…
actually by "Capybara::RackTest::Node.send :include,
SubmitRackTestFormWithoutButton" the method submit_form! is added to
the Node (not to the Element), but find return an Element

Do you have some idea to work out that gist, or some other solution to submit a form without button ?

Thanks

Best Answer

All your production code should be testable, so if you add a code that is only used by the test than the test will make no sense...

Try to do this instead:

page.execute_script("$('form#your-form').submit()")
Related Topic