I question if I’m using Capybara outside the scope of it’s design, though I’ve come this far so I thought I’d ask. At the highest level I need my application in production to:
- go to a few external links and fill in forms for the user
As an example, a form has:
- First Name
I’ve got a Sidekiq worker that fills in that information like so:
session = Capybara::Session.new(:selenium) session.visit(third_party_url) session.fill_in "First Name", with: name session.fill_in "Age", with: age session.click_on "Submit"
This works just as I need it to. The problem is I have not found a way to write a test for this, though I’ve tried endlessly.
I have faked the third_party_url following this awesome guide here. The problem is,
session.visit(third_party_url) isn’t triggering a get request to my fake, it’s skipping right over it. What I don’t understand is if I replace
session.visit(third_party_url) with a
Net:HTTP.get(third_party_url) I get right to my fake. I’ve looked at the capybara source and it looks like it’s just making a simple get request here
Currently my test looks like this:
require 'rails_helper' describe FormWorker do it 'fills in a form' do SyncWorker.new.perform("Tom", "18") expect(user.forms_filled.count).to eq 1 end end
Instead what happens is I run the test and Firefox pops up with a 422 error. I’m looking for feedback both on my implementation and testing strategies and really open to any suggestions. Thank you!