Sometimes the things that you assume will be simple and no problem at all will give you a challenge. Here I thought that doing HTTP basic auth would be easy with the Capybara webkit driver. It isn’t as easy as you might expect. I would have expected a authorize method of some sort but you have to actually set the header yourself. Since it took me some time to figure out I thought I’d just share this little snippet and safe someone else the trouble.
Capybara webkit and HTTP basic auth
1 2 3 4 basic = ActionController::HttpAuthentication::Basic credentials = basic.encode_credentials('username', 'password') page.driver.header('Authorization', credentials) visit '/some/http-basic-auth-path'
That’s it. I’ll leave it up to you to include it in a helper or a before filter :-)