Modal dialog present (Selenium::WebDriver::Error::UnhandledAlertError)

Problem
You are using cucumber for your tests and you would like to use the modal dialog confirmation box in a rails application, with capybara but you are getting the following error:

Modal dialog present Selenium::WebDriver::Error::UnhandledAlertError)

Solution

In your steps file use the following to accept (press OK), in the confirmation dialog that pops up:

page.driver.wait_until(page.driver.browser.switch_to.alert.accept)

NOTE: Or in more recent versions when the above complains for ‘undefined method wait_until’

page.driver.browser.switch_to.alert.accept

NOTE: Taken from the second comment made here

Webrat 0.7.2 problem with Rails 3.0.3

Problem
You are trying to use Webrat with a new Rails 3.0.3 application but the redirection doesn’t work, and you get an error like:
You are being redirected. (RSpec::Expectations::ExpectationNotMetError)

Solution
According to a post here, there is a way to patch the webrat code so it follows the redirection.
After adding what is suggested above into your webrat/lib/core/session.rb, ie:

#starting at line 288
def current_host
- URI.parse(current_url).host || @custom_headers["Host"] ||
"www.example.com"
+ URI.parse(current_url).host || @custom_headers["Host"] ||
default_current_host
end

+ def default_current_host
+ adapter.class==Webrat::RackAdapter ? "example.org" :
"www.example.com"
+ end

and running your tests again, they should work.

Thanks yannnimac 🙂

undefined method `visit’ for # (NoMethodError)

Problem
When using Cucumber and Webrat in a ruby on rails 3 application you see the error: undefined method `visit' for # (NoMethodError) and your scenario fails.

Solution
Replace the line:
config.mode = :rails
with the line:
config.mode = :rack
in the Webrat.configure block, in your
app/features/support/env.rb
file.

Adding Webrat, Cucumber and RSpec to a new Rails 3 project

Problem

You would like to start using BDD in a new Ruby on Rails 3 application, and would like to install Webrat, Cucumber and RSpec to your project.

Solution

Follow the steps below (taken from the RSpec Book), for creating a new Rails 3 application and adding the necessary testing frameworks:

  1. Create your new ruby on rails application: rails new my_app
  2. Go to your new application directory: cd my_app
  3. Edit your Gemfile to include the following:
    group :development, :test do
    gem "rspec-rails", ">= 2.0.0"
    gem "cucumber-rails", ">= 0.3.2"
    gem "webrat", ">= 0.7.2"
    end
  4. Use bundler to install all the gems and dependencies: bundle install
  5. Install the rspec files: script/rails generate rspec:install
  6. Install the cucumber files: script/rails generate cucumber:install
  7. Run the following and you shouldn’t be seeing any errors:
    rake db:migrate
    rake db:test:prepare
    rake spec
    rake cucumber