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
- Age
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!