Skip to content

Commit

Permalink
Merge pull request codegram#77 from codegram/feature/change_javascrip…
Browse files Browse the repository at this point in the history
…t_driver

Change capybara driver in scenarios tagged with @javascript. Closes 69.
  • Loading branch information
oriolgual committed Nov 16, 2011
2 parents 0ab3e75 + 78c046c commit c8f9cbf
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 12 deletions.
8 changes: 7 additions & 1 deletion lib/spinach/capybara.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,14 @@ def self.included(base)
include ::Capybara::RSpecMatchers
end
end
Spinach.hooks.before_scenario do

Spinach.hooks.after_scenario do
::Capybara.current_session.reset! if ::Capybara.app
::Capybara.use_default_driver
end

Spinach.hooks.on_tag('javascript') do
::Capybara.current_driver = ::Capybara.javascript_driver
end
end
end
Expand Down
42 changes: 31 additions & 11 deletions test/spinach/capybara_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,19 @@ def go_home
end.new
end

let(:parsed_feature) { Spinach::Parser.new("""
Feature: A test feature
Scenario: A test scenario
Given Hello
Then Goodbye
@javascript
Scenario: Another test scenario
Given Hello
Then Goodbye
""").parse
}

it 'includes capybara into all features' do
@feature.kind_of? Capybara
end
Expand All @@ -37,20 +50,27 @@ def go_home
end

it 'resets the capybara session after each scenario' do
feature = Spinach::Parser.new("""
Feature: A test feature
Scenario: A test scenario
Given Hello
Then Goodbye
Scenario: Another test scenario
Given Hello
Then Goodbye
""").parse

@feature_runner = Spinach::Runner::FeatureRunner.new(feature)
@feature_runner = Spinach::Runner::FeatureRunner.new(parsed_feature)

Capybara.current_session.expects(:reset!).at_least_once

@feature_runner.run
end

it 'resets the javascript driver after each scenario' do
@feature_runner = Spinach::Runner::FeatureRunner.new(parsed_feature)

Capybara.expects(:use_default_driver).at_least(2)

@feature_runner.run
end

it 'changes the javascript driver when an scenario has the @javascript tag' do
@feature_runner = Spinach::Runner::FeatureRunner.new(parsed_feature)

Capybara.expects(:javascript_driver).at_least(1)
Capybara.expects(:current_driver=).at_least(1)

@feature_runner.run
end
end

0 comments on commit c8f9cbf

Please sign in to comment.