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:
Dawa Ometto
2022-06-19 00:51:58 +02:00
committed by GitHub
parent a1406da44a
commit 98cb39347d
4 changed files with 69 additions and 1 deletions
+5
View File
@@ -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'
+13 -1
View File
@@ -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
+2
View File
@@ -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
+49
View File
@@ -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