Add integration tests with capybara (#1707)
* Add integration tests with capybara * Add Rake task for running integration tests * Don't include integration in default test task
This commit is contained in:
@@ -18,6 +18,11 @@ gem 'warbler', platforms: :jruby
|
||||
# current CI workflows pass, we should only try to install this version of
|
||||
# Nokogiri for newer Ruby versions.
|
||||
|
||||
group :test do
|
||||
gem 'selenium-webdriver', require: false
|
||||
gem 'capybara', require: false
|
||||
end
|
||||
|
||||
gemspec
|
||||
|
||||
gem 'rake', '~> 13.0'
|
||||
|
||||
@@ -72,9 +72,21 @@ end
|
||||
task :default => :test
|
||||
|
||||
require 'rake/testtask'
|
||||
|
||||
namespace :test do
|
||||
Rake::TestTask.new('capybara') do |test|
|
||||
test.libs << 'lib' << 'test' << '.'
|
||||
test.pattern = 'test/integration/**/test_*.rb'
|
||||
test.verbose = true
|
||||
test.warning = false
|
||||
end
|
||||
end
|
||||
|
||||
Rake::TestTask.new(:test) do |test|
|
||||
test.libs << 'lib' << 'test' << '.'
|
||||
test.pattern = 'test/**/test_*.rb'
|
||||
test.test_files = FileList.new('test/**/test_*.rb') do |fl|
|
||||
fl.exclude('test/integration/**/test_*.rb')
|
||||
end
|
||||
test.verbose = true
|
||||
test.warning = false
|
||||
end
|
||||
|
||||
@@ -32,6 +32,8 @@ ENV['RACK_ENV'] = 'test'
|
||||
require 'gollum'
|
||||
require 'gollum/app'
|
||||
|
||||
CAPYBARA_DRIVER = ENV['CI'] ? :selenium_chrome_headless : ENV.fetch('CAPYBARA_DRIVER', :selenium_chrome).to_sym
|
||||
|
||||
# Disable the metadata feature
|
||||
$METADATA = false
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'helper'))
|
||||
require 'selenium-webdriver'
|
||||
require 'capybara/dsl'
|
||||
|
||||
Capybara.default_driver = ::CAPYBARA_DRIVER
|
||||
Capybara.server = :webrick
|
||||
|
||||
def console_log(page, level = :severe)
|
||||
page.driver.browser.logs.get(:browser).select{|log| log.level == level.to_s.upcase }
|
||||
end
|
||||
|
||||
def expected_errors
|
||||
Regexp.union([
|
||||
%r{Refused to apply style from 'http:.*/gollum/create/custom.css'}
|
||||
])
|
||||
end
|
||||
|
||||
def assert_only_expected_errors(log)
|
||||
assert_equal [], log.reject {|err| err.message.match?(expected_errors) }
|
||||
end
|
||||
|
||||
context 'Frontend with mathjax' do
|
||||
include Capybara::DSL
|
||||
|
||||
setup do
|
||||
@path = cloned_testpath("examples/lotr.git")
|
||||
@wiki = Gollum::Wiki.new(@path)
|
||||
Precious::App.set(:gollum_path, @path)
|
||||
Precious::App.set(:wiki_options, {mathjax: true})
|
||||
Capybara.app = Precious::App
|
||||
end
|
||||
|
||||
test 'no unexpected errors on /' do
|
||||
visit '/'
|
||||
log = console_log(page)
|
||||
assert_only_expected_errors(log)
|
||||
end
|
||||
|
||||
test 'no unexpected errors on /create/' do
|
||||
visit '/create/Foobar'
|
||||
log = console_log(page)
|
||||
assert_only_expected_errors(log)
|
||||
end
|
||||
|
||||
teardown do
|
||||
Capybara.reset_sessions!
|
||||
Capybara.use_default_driver
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user