Has anybody had any luck getting Cucumber, Webrat and Selenium to play nicely together for SSL sites?

My test environment:

- nginx front-end accepting SSL requests, proxying them to mongrel back-end

- mongrel back-end accepting normal HTTP requests

- application routes configured with ":protocol => 'https'" so that URLs generated with "_url" helpers will be SSL ones

- application links basically all generated using "_path" helpers and not "_url" helpers, so the site can be tested by connected directly to the mongrel instance rather than having to go through the nginx proxy

- Cucumber paths (in "features/support/paths.rb" defined using "_path" helpers, not "_url" helpers)

The problem is that when I try to run my features through Selenium following the instructions here:

  http://wiki.github.com/aslakhellesoy/cucumber/setting-up-selenium

Selenium starts up and tries to access the site using HTTPS. This in turn throws up a warning dialog about the self-signed certificate (evidently a certificate for "localhost" can only ever be self-signed) which prevents the suite from running. You can go into the Firefox preferences and add an exception for the "localhost" domain but it won't persist because every time you run the suite Selenium launches a clean copy of Firefox with a blank profile.

This page provides some tips on how to set up a Firefox profile containing the exception and force Selenium to use it:

  http://blog.thirstybear.co.uk/2008/05/selenium-and-https.html

But that won't work when using Cucumber/Webrat, because as far as I can tell from the Webrat Selenium docs.

  http://github.com/brynary/webrat/blob/master/lib/webrat/selenium.rb

Webrat will "automatically start the Selenium Java server process and an instance of Mongrel when a test is run". So there is no way that I can see to force Webrat to launch the Selenium server process with the custom Firefox profile.

So I guess there are two possible options here: either find a way to make Webrat use the custom profile (most likely by hacking the code directly), or find a way to make Selenium connect to the Mongrel directly (via HTTP) instead of the nginx instance (via HTTPS). Not really sure how I would go about that one really, seeing as in my "features/support/paths.rb" file I am obviously specifying paths (no host specification) anyway.

Has anyone had any success getting this to work? Until I can find a solution it basically means that all of the JavaScript/AJAX stuff in the app has no automated testing at all. I suppose I could dump Webrat and speak directly to Selenium, as demonstrated in the example:

http://github.com/aslakhellesoy/cucumber/tree/master/examples/ selenium

But, then I'll have a nasty division in my features between those that can use Webrat and those which can't. Any solutions?

Cheers,
Wincent



_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to