Skip to content

Instantly share code, notes, and snippets.

@nandosola
Forked from frobs/Rakefile
Last active December 16, 2015 07:08
Show Gist options
  • Save nandosola/5396267 to your computer and use it in GitHub Desktop.
Save nandosola/5396267 to your computer and use it in GitHub Desktop.
# encoding: utf-8
require 'rubygems'
require 'bundler'
Bundler.setup(:default)
APP_ROOT = File.join(File.dirname(__FILE__))
SUPPORTED_BROWSERS=%w(firefox chrome safari ie9 ie8 ie7)
TEST_BROWSER='poltergeist'
# See: http://www.ruby-forum.com/topic/207203
# rake spec[vararg1,vararg2,...] won't be available until next stable Rake gem release
#
# Meanwhile use rake spec["arg1 arg2 ..."]
#
desc 'Run specs multibrowser test'
task :spec, [:browsers] do |t,args|
ENV['RACK_ENV'] ||= 'test'
puts "Setting up #{ENV['RACK_ENV']} environment"
Bundler.setup(:test)
spec_browsers = args.browsers.split(' ')
if (SUPPORTED_BROWSERS | spec_browsers).size == SUPPORTED_BROWSERS.size
require 'rspec/core/rake_task'
(spec_browsers<<TEST_BROWSER).each do |b|
RSpec::Core::RakeTask.new('spec') do |spec|
ENV['TEST_BROWSER'] = b # Cannot use custom variables (easily)
spec.rspec_opts = ['--color']
spec.pattern = FileList[File.join(APP_ROOT, 'spec', 'spec_base.rb')]
end
end
else
err_b = spec_browsers.reduce([]){|m,x| (SUPPORTED_BROWSERS.include?(x)) ? m : m<<x}
puts "Unknown browser #{err_b.to_s}",
"Please use: #{SUPPORTED_BROWSERS.to_s}"
end
end
# encoding: utf-8
require 'rubygems'
require 'bundler'
Bundler.setup(:default, :test)
require 'rspec'
require 'rack/test'
require 'capybara'
ENV['RACK_ENV'] ||= 'test'
APP_ROOT = File.join(File.dirname(__FILE__), '..')
browser = ENV['TEST_BROWSER'].to_sym
puts "Testing with browser: #{browser.to_s}"
include Capybara::DSL
Capybara.default_driver ||= :selenium #this is needed to fix a bug when browser is null
Capybara.register_driver :selenium do |app|
case browser
when :poltergeist
require 'capybara/poltergeist'
Capybara.current_driver = :poltergeist
else
Capybara::Selenium::Driver.new(app, :browser => browser)
end
end
Dir[ File.join(APP_ROOT, '*_spec.rb') ].sort.each{|p| load p }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment