57 lines
1.9 KiB
Ruby
57 lines
1.9 KiB
Ruby
require 'active_record'
|
|
require 'action_mailer'
|
|
require 'jam_db'
|
|
require 'jam_ruby'
|
|
require 'capybara'
|
|
require 'selenium/webdriver'
|
|
|
|
require File.expand_path('../../../spec/spec_db', __FILE__)
|
|
|
|
include JamRuby
|
|
# put this in a class, so that multiple loads of this file
|
|
# don't cause the database to be recreated multiple times
|
|
class BeforeCucumber
|
|
def initialize
|
|
# recreate test database and migrate it
|
|
db_config = YAML::load(File.open('config/database.yml'))["cucumber"]
|
|
SpecDb::recreate_database(db_config)
|
|
|
|
# put ActionMailer into test mode
|
|
ActionMailer::Base.delivery_method = :test
|
|
|
|
end
|
|
end
|
|
|
|
if ENV['SHOW_JS_ERRORS'] == "1"
|
|
# we need a firefox extension to start intercepting javascript errors before the page
|
|
# scripts load
|
|
Capybara.register_driver :selenium do |app|
|
|
profile = Selenium::WebDriver::Firefox::Profile.new
|
|
# see https://github.com/mguillem/JSErrorCollector
|
|
profile.add_extension File.join(Rails.root, "features/support/extensions/JSErrorCollector.xpi")
|
|
Capybara::Selenium::Driver.new app, :profile => profile
|
|
end
|
|
|
|
After do |scenario|
|
|
if page.driver.to_s.match("Selenium")
|
|
errors = page.execute_script("return window.JSErrorCollector_errors.pump()")
|
|
|
|
if errors.any?
|
|
puts '-------------------------------------------------------------'
|
|
puts "Found #{errors.length} javascript errors"
|
|
puts '-------------------------------------------------------------'
|
|
errors.each do |error|
|
|
puts " #{error["errorMessage"]} (#{error["sourceName"]}:#{error["lineNumber"]})"
|
|
end
|
|
# raise "Javascript error detected, see above"
|
|
else
|
|
puts '-------------------------------------------------------------'
|
|
puts "No javascript errors"
|
|
puts '-------------------------------------------------------------'
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
|