Commit 268643c7de5200a34b7b84b128b344083a3be556

Authored by Daniel Cunha
Committed by Daniela Feitosa
1 parent 82ae16fc

changing cucumber version and adding capybara to Gemfile

1 source :rubygems 1 source :rubygems
2 -gem 'cucumber', '0.4.0'  
3 -gem 'webrat', '0.5.1'  
4 -gem 'rspec', '1.2.9'  
5 -gem 'rspec-rails', '1.2.9'  
6 -gem 'Selenium', '>= 1.1.14'  
7 -gem 'selenium-client', '>= 1.2.17'  
8 -gem 'database_cleaner' 2 +
9 gem 'exception_notification', '1.0.20090728' 3 gem 'exception_notification', '1.0.20090728'
10 gem 'system_timer' 4 gem 'system_timer'
11 5
  6 +group :test do
  7 + gem 'rspec', '1.2.9'
  8 + gem 'rspec-rails', '1.2.9'
  9 +end
  10 +
  11 +group :cucumber do
  12 + gem 'cucumber-rails', '0.3.2'
  13 + gem 'capybara', '1.1.1'
  14 + gem 'cucumber', '1.1.0'
  15 + gem 'database_cleaner'
  16 +end
  17 +
12 def program(name) 18 def program(name)
13 unless system("which #{name} > /dev/null") 19 unless system("which #{name} > /dev/null")
14 puts "W: Program #{name} is needed, but was not found in your PATH" 20 puts "W: Program #{name} is needed, but was not found in your PATH"
1 GEM 1 GEM
2 remote: http://rubygems.org/ 2 remote: http://rubygems.org/
3 specs: 3 specs:
4 - Selenium (1.1.14)  
5 - builder (3.0.0)  
6 - cucumber (0.4.0) 4 + builder (3.1.4)
  5 + capybara (1.1.1)
  6 + mime-types (>= 1.16)
  7 + nokogiri (>= 1.3.3)
  8 + rack (>= 1.0.0)
  9 + rack-test (>= 0.5.4)
  10 + selenium-webdriver (~> 2.0)
  11 + xpath (~> 0.1.4)
  12 + childprocess (0.3.6)
  13 + ffi (~> 1.0, >= 1.0.6)
  14 + cucumber (1.1.0)
7 builder (>= 2.1.2) 15 builder (>= 2.1.2)
8 diff-lcs (>= 1.1.2) 16 diff-lcs (>= 1.1.2)
9 - polyglot (>= 0.2.9)  
10 - term-ansicolor (>= 1.0.3)  
11 - treetop (>= 1.4.2)  
12 - database_cleaner (0.7.0) 17 + gherkin (~> 2.5.0)
  18 + json (>= 1.4.6)
  19 + term-ansicolor (>= 1.0.6)
  20 + cucumber-rails (0.3.2)
  21 + cucumber (>= 0.8.0)
  22 + database_cleaner (0.9.1)
13 diff-lcs (1.1.3) 23 diff-lcs (1.1.3)
14 exception_notification (1.0.20090728) 24 exception_notification (1.0.20090728)
15 - nokogiri (1.5.0)  
16 - polyglot (0.3.3)  
17 - rack (1.3.5) 25 + ffi (1.2.0)
  26 + gherkin (2.5.4)
  27 + json (>= 1.4.6)
  28 + json (1.7.5)
  29 + libwebsocket (0.1.6.1)
  30 + websocket
  31 + mime-types (1.19)
  32 + multi_json (1.3.7)
  33 + nokogiri (1.5.5)
  34 + rack (1.1.0)
  35 + rack-test (0.6.2)
  36 + rack (>= 1.0)
18 rspec (1.2.9) 37 rspec (1.2.9)
19 rspec-rails (1.2.9) 38 rspec-rails (1.2.9)
20 rack (>= 1.0.0) 39 rack (>= 1.0.0)
21 rspec (>= 1.2.9) 40 rspec (>= 1.2.9)
22 - selenium-client (1.2.18) 41 + rubyzip (0.9.9)
  42 + selenium-webdriver (2.26.0)
  43 + childprocess (>= 0.2.5)
  44 + libwebsocket (~> 0.1.3)
  45 + multi_json (~> 1.0)
  46 + rubyzip
23 system_timer (1.2.4) 47 system_timer (1.2.4)
24 term-ansicolor (1.0.7) 48 term-ansicolor (1.0.7)
25 - treetop (1.4.10)  
26 - polyglot  
27 - polyglot (>= 0.3.1)  
28 - webrat (0.5.1)  
29 - nokogiri (>= 1.2.0)  
30 - rack (>= 1.0) 49 + websocket (1.0.4)
  50 + xpath (0.1.4)
  51 + nokogiri (~> 1.3)
31 52
32 PLATFORMS 53 PLATFORMS
33 ruby 54 ruby
34 55
35 DEPENDENCIES 56 DEPENDENCIES
36 - Selenium (>= 1.1.14)  
37 - cucumber (= 0.4.0) 57 + capybara (= 1.1.1)
  58 + cucumber (= 1.1.0)
  59 + cucumber-rails (= 0.3.2)
38 database_cleaner 60 database_cleaner
39 exception_notification (= 1.0.20090728) 61 exception_notification (= 1.0.20090728)
40 rspec (= 1.2.9) 62 rspec (= 1.2.9)
41 rspec-rails (= 1.2.9) 63 rspec-rails (= 1.2.9)
42 - selenium-client (>= 1.2.17)  
43 system_timer 64 system_timer
44 - webrat (= 0.5.1)  
config/cucumber.yml
1 -default: --tags ~@selenium,~@wip --exclude features/support/selenium.rb --exclude features/step_definitions/selenium_steps.rb -r features/support -r features/step_definitions  
2 -selenium: --tags @selenium,~@wip -r features/support -r features/step_definitions 1 +<%
  2 +rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
  3 +rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
  4 +std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags ~@wip"
  5 +%>
  6 +default: <%= std_opts %> features
  7 +wip: --tags @wip:3 --wip features
  8 +rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
config/environments/cucumber.rb
1 -# IMPORTANT: This file was generated by Cucumber 0.4.0  
2 # Edit at your own peril - it's recommended to regenerate this file 1 # Edit at your own peril - it's recommended to regenerate this file
3 # in the future when you upgrade to a newer version of Cucumber. 2 # in the future when you upgrade to a newer version of Cucumber.
4 3
5 -config.cache_classes = true # This must be true for Cucumber to operate correctly! 4 +# IMPORTANT: Setting config.cache_classes to false is known to
  5 +# break Cucumber's use_transactional_fixtures method.
  6 +# For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165
  7 +config.cache_classes = true
6 8
7 # Log error messages when you accidentally call methods on nil. 9 # Log error messages when you accidentally call methods on nil.
8 config.whiny_nils = true 10 config.whiny_nils = true
@@ -18,3 +20,8 @@ config.action_controller.allow_forgery_protection = false @@ -18,3 +20,8 @@ config.action_controller.allow_forgery_protection = false
18 # The :test delivery method accumulates sent emails in the 20 # The :test delivery method accumulates sent emails in the
19 # ActionMailer::Base.deliveries array. 21 # ActionMailer::Base.deliveries array.
20 config.action_mailer.delivery_method = :test 22 config.action_mailer.delivery_method = :test
  23 +
  24 +config.gem 'cucumber-rails', :lib => false, :version => '>=0.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber-rails'))
  25 +config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/database_cleaner'))
  26 +config.gem 'capybara', :lib => false, :version => '>=0.3.5' unless File.directory?(File.join(Rails.root, 'vendor/plugins/capybara'))
  27 +
features/support/env.rb
1 -# IMPORTANT: This file was generated by Cucumber 0.4.0  
2 -# Edit at your own peril - it's recommended to regenerate this file  
3 -# in the future when you upgrade to a newer version of Cucumber.  
4 -# Consider adding your own code to a new file instead of editing this one. 1 +# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
  2 +# It is recommended to regenerate this file in the future when you upgrade to a
  3 +# newer version of cucumber-rails. Consider adding your own code to a new file
  4 +# instead of editing this one. Cucumber will automatically load all features/**/*.rb
  5 +# files.
5 6
6 -# Sets up the Rails environment for Cucumber  
7 ENV["RAILS_ENV"] ||= "cucumber" 7 ENV["RAILS_ENV"] ||= "cucumber"
8 -  
9 -# Start/stop Solr  
10 -if not $cucumber_env_loaded  
11 - abort unless system 'rake solr:start'  
12 - at_exit { system 'rake solr:stop' }  
13 - $cucumber_env_loaded = true  
14 -end  
15 -  
16 require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') 8 require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
17 -require 'cucumber/rails/world'  
18 -  
19 -# If you set this to true, each scenario will run in a database transaction.  
20 -# You can still turn off transactions on a per-scenario basis, simply tagging  
21 -# a feature or scenario with the @no-txn tag.  
22 -#  
23 -# If you set this to false, transactions will be off for all scenarios,  
24 -# regardless of whether you use @no-txn or not.  
25 -#  
26 -# Beware that turning transactions off will leave data in your database  
27 -# after each scenario, which can lead to hard-to-debug failures in  
28 -# subsequent scenarios. If you do this, we recommend you create a Before  
29 -# block that will explicitly put your database in a known state.  
30 -Cucumber::Rails::World.use_transactional_fixtures = true  
31 9
32 -# If you set this to false, any error raised from within your app will bubble 10 +require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
  11 +require 'cucumber/rails/world'
  12 +require 'cucumber/rails/active_record'
  13 +require 'cucumber/web/tableish'
  14 +
  15 +require 'capybara/rails'
  16 +require 'capybara/cucumber'
  17 +require 'capybara/session'
  18 +require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
  19 +# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
  20 +# order to ease the transition to Capybara we set the default here. If you'd
  21 +# prefer to use XPath just remove this line and adjust any selectors in your
  22 +# steps to use the XPath syntax.
  23 +Capybara.default_selector = :css
  24 +
  25 +# If you set this to false, any error raised from within your app will bubble
33 # up to your step definition and out to cucumber unless you catch it somewhere 26 # up to your step definition and out to cucumber unless you catch it somewhere
34 # on the way. You can make Rails rescue errors and render error pages on a 27 # on the way. You can make Rails rescue errors and render error pages on a
35 # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag. 28 # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
@@ -40,16 +33,25 @@ Cucumber::Rails::World.use_transactional_fixtures = true @@ -40,16 +33,25 @@ Cucumber::Rails::World.use_transactional_fixtures = true
40 # of your scenarios, as this makes it hard to discover errors in your application. 33 # of your scenarios, as this makes it hard to discover errors in your application.
41 ActionController::Base.allow_rescue = false 34 ActionController::Base.allow_rescue = false
42 35
43 -require 'cucumber'  
44 -# Comment out the next line if you don't want Cucumber Unicode support  
45 -require 'cucumber/formatter/unicode'  
46 -require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table)  
47 -require 'cucumber/rails/rspec'  
48 -  
49 -require 'webrat'  
50 -require 'webrat/core/matchers'  
51 -Webrat.configure do |config|  
52 - config.mode = :rails  
53 - config.open_error_files = false # Set to true if you want error pages to pop up in the browser 36 +# If you set this to true, each scenario will run in a database transaction.
  37 +# You can still turn off transactions on a per-scenario basis, simply tagging
  38 +# a feature or scenario with the @no-txn tag. If you are using Capybara,
  39 +# tagging with @culerity or @javascript will also turn transactions off.
  40 +#
  41 +# If you set this to false, transactions will be off for all scenarios,
  42 +# regardless of whether you use @no-txn or not.
  43 +#
  44 +# Beware that turning transactions off will leave data in your database
  45 +# after each scenario, which can lead to hard-to-debug failures in
  46 +# subsequent scenarios. If you do this, we recommend you create a Before
  47 +# block that will explicitly put your database in a known state.
  48 +Cucumber::Rails::World.use_transactional_fixtures = true
  49 +# How to clean your database when transactions are turned off. See
  50 +# http://github.com/bmabey/database_cleaner for more info.
  51 +if defined?(ActiveRecord::Base)
  52 + begin
  53 + require 'database_cleaner'
  54 + DatabaseCleaner.strategy = :truncation
  55 + rescue LoadError => ignore_if_database_cleaner_not_present
  56 + end
54 end 57 end
55 -  
features/support/selenium.rb
1 -Webrat.configure do |config|  
2 - config.mode = :selenium  
3 - config.application_environment = :cucumber  
4 - config.selenium_browser_startup_timeout = 30000  
5 -end 1 +require 'rbconfig'
  2 +require 'cucumber/formatter/unicode'
6 3
7 -Cucumber::Rails::World.use_transactional_fixtures = false 4 +require 'capybara'
  5 +require 'capybara/dsl'
  6 +require "capybara/cucumber"
8 7
9 require 'database_cleaner' 8 require 'database_cleaner'
10 require 'database_cleaner/cucumber' 9 require 'database_cleaner/cucumber'
11 10
  11 +Cucumber::Rails::World.use_transactional_fixtures = false
  12 +
  13 +Capybara.default_driver = :selenium
  14 +Capybara.register_driver :selenium do |app|
  15 + Capybara::Selenium::Driver.new(app, :browser => :firefox)
  16 +end
  17 +
12 DatabaseCleaner.clean_with :truncation 18 DatabaseCleaner.clean_with :truncation
13 DatabaseCleaner.strategy = :truncation 19 DatabaseCleaner.strategy = :truncation
14 20
@@ -25,3 +31,5 @@ After do @@ -25,3 +31,5 @@ After do
25 sleep 2 31 sleep 2
26 DatabaseCleaner.clean 32 DatabaseCleaner.clean
27 end 33 end
  34 +
  35 +World(Capybara)
lib/tasks/cucumber.rake
1 -# This file was generated by  
2 -$LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib') 1 +# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
  2 +# It is recommended to regenerate this file in the future when you upgrade to a
  3 +# newer version of cucumber-rails. Consider adding your own code to a new file
  4 +# instead of editing this one. Cucumber will automatically load all features/**/*.rb
  5 +# files.
3 6
4 -unless ARGV.any? {|a| a =~ /^gems/} 7 +
  8 +unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
  9 +
  10 +vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
  11 +$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
5 12
6 begin 13 begin
7 require 'cucumber/rake/task' 14 require 'cucumber/rake/task'
8 15
9 - # Use vendored cucumber binary if possible. If it's not vendored,  
10 - # Cucumber::Rake::Task will automatically use installed gem's cucumber binary  
11 - vendored_cucumber_binary = Dir["#{RAILS_ROOT}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first  
12 -  
13 namespace :cucumber do 16 namespace :cucumber do
14 Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t| 17 Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
15 - t.binary = vendored_cucumber_binary 18 + t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
16 t.fork = true # You may get faster startup if you set this to false 19 t.fork = true # You may get faster startup if you set this to false
17 - t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'progress'}" 20 + t.profile = 'default'
18 end 21 end
19 22
20 Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t| 23 Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
21 - t.binary = vendored_cucumber_binary 24 + t.binary = vendored_cucumber_bin
22 t.fork = true # You may get faster startup if you set this to false 25 t.fork = true # You may get faster startup if you set this to false
23 - t.cucumber_opts = "--color --tags @wip:2 --wip --format #{ENV['CUCUMBER_FORMAT'] || 'progress'}" 26 + t.profile = 'wip'
24 end 27 end
25 28
26 - Cucumber::Rake::Task.new({:selenium => 'db:test:prepare'}, 'Run features with selenium') do |t|  
27 - t.binary = vendored_cucumber_binary 29 + Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
  30 + t.binary = vendored_cucumber_bin
28 t.fork = true # You may get faster startup if you set this to false 31 t.fork = true # You may get faster startup if you set this to false
29 - t.cucumber_opts = "--color -p selenium --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}" 32 + t.profile = 'rerun'
30 end 33 end
31 34
32 desc 'Run all features' 35 desc 'Run all features'
33 task :all => [:ok, :wip] 36 task :all => [:ok, :wip]
34 end 37 end
35 desc 'Alias for cucumber:ok' 38 desc 'Alias for cucumber:ok'
36 - task :cucumber => ['cucumber:ok'] 39 + task :cucumber => 'cucumber:ok'
  40 +
  41 + task :default => :cucumber
37 42
38 task :features => :cucumber do 43 task :features => :cucumber do
39 STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***" 44 STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
script/cucumber
1 #!/usr/bin/env ruby 1 #!/usr/bin/env ruby
2 2
3 -vendored_cucumber_binary = Dir[File.join(File.dirname(__FILE__),  
4 - '..',  
5 - 'vendor',  
6 - '{gems,plugins}',  
7 - 'cucumber*',  
8 - 'bin',  
9 - 'cucumber')].first  
10 -  
11 -if vendored_cucumber_binary  
12 - load File.expand_path(vendored_cucumber_binary) 3 +vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
  4 +if vendored_cucumber_bin
  5 + load File.expand_path(vendored_cucumber_bin)
13 else 6 else
14 require 'rubygems' unless ENV['NO_RUBYGEMS'] 7 require 'rubygems' unless ENV['NO_RUBYGEMS']
15 require 'cucumber' 8 require 'cucumber'