1
votes

Say I have 3 Scenario Outlines and I need to run scenario 1 with Firefox, close the browser, then run scenario 2 with Chrome, close the browser, then finally run scenario 3 with Firefox. Is there any way to close/quit the browser in Cucumber/Capybara after each scenario?

So far I have registered two drivers, one for Firefox and one for Chrome:

Capybara.register_driver :selenium_firefox do |app|
  Capybara::Driver::Selenium.new(app, :browser => :firefox)
end

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Driver::Selenium.new(app, :browser => :chrome)
end

Then in hooks.rb, I'm using a 'custom' tag "@alternate_browser"

Before('@alternate_browser') do
  driver = Capybara.current_driver
  if driver == :selenium_firefox
    Capybara.current_driver = :selenium_chrome
  else
    Capybara.current_driver = :selenium_firefox
  end
end

Is there a way to force the browser to close after each scenario?

EDIT: I tried:

page.evaluate_script("window.close()")
page.execute_script("window.close()")

But both statements had no effect.

1

1 Answers

0
votes

This is what you should do.

  • Stop closing the windows.
  • Change to explicit browser tags (@firefox,@chrome)

I haven't tried it but this should work.

Capybara.register_driver :selenium_firefox do |app|
  Capybara::Driver::Selenium.new(app, :browser => :firefox)
end

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Driver::Selenium.new(app, :browser => :chrome)
end


Before('@firefox') do
  Capybara.current_driver = :selenium_firefox
end

Before('@chrome') do
  Capybara.current_driver = :selenium_chrome
end