summaryrefslogtreecommitdiff
path: root/features
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-27 07:43:45 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-27 07:43:45 +0000
commitf3ffd7d0b1d357b1dff6c00f02e3fbcaead7e2b6 (patch)
tree3d47fadc237a9a6338d3f3142151aedb152cdea6 /features
parentb4317b16567a34d8368b78e62dc8dc75727f72d0 (diff)
parent652c15b585bac393b5c403a03355040eef51789c (diff)
downloadgitlab-ce-f3ffd7d0b1d357b1dff6c00f02e3fbcaead7e2b6.tar.gz
Merge branch 'rs-capybara-screenshot' into 'master'
Add capybara-screenshot gem This is a handy little gem that automatically saves the page and a screenshot when a Capybara test fails to `tmp/capybara/` so you can easily see why it might have failed without adding your own `save_and_open_page` directive in the code. Also reduces the timeout for Capybara tests when not in a CI environment. See merge request !578
Diffstat (limited to 'features')
-rw-r--r--features/support/capybara.rb24
-rw-r--r--features/support/db_cleaner.rb11
-rw-r--r--features/support/env.rb30
3 files changed, 39 insertions, 26 deletions
diff --git a/features/support/capybara.rb b/features/support/capybara.rb
new file mode 100644
index 00000000000..31dbf0feb2f
--- /dev/null
+++ b/features/support/capybara.rb
@@ -0,0 +1,24 @@
+require 'spinach/capybara'
+require 'capybara/poltergeist'
+
+# Give CI some extra time
+timeout = (ENV['CI'] || ENV['CI_SERVER']) ? 90 : 10
+
+Capybara.javascript_driver = :poltergeist
+Capybara.register_driver :poltergeist do |app|
+ Capybara::Poltergeist::Driver.new(app, js_errors: true, timeout: timeout)
+end
+
+Spinach.hooks.on_tag("javascript") do
+ Capybara.current_driver = Capybara.javascript_driver
+end
+
+Capybara.default_wait_time = timeout
+Capybara.ignore_hidden_elements = false
+
+unless ENV['CI'] || ENV['CI_SERVER']
+ require 'capybara-screenshot/spinach'
+
+ # Keep only the screenshots generated from the last failing test suite
+ Capybara::Screenshot.prune_strategy = :keep_last_run
+end
diff --git a/features/support/db_cleaner.rb b/features/support/db_cleaner.rb
new file mode 100644
index 00000000000..1ab308cfa55
--- /dev/null
+++ b/features/support/db_cleaner.rb
@@ -0,0 +1,11 @@
+require 'database_cleaner'
+
+DatabaseCleaner.strategy = :truncation
+
+Spinach.hooks.before_scenario do
+ DatabaseCleaner.start
+end
+
+Spinach.hooks.after_scenario do
+ DatabaseCleaner.clean
+end
diff --git a/features/support/env.rb b/features/support/env.rb
index be17065ccfd..f34302721ed 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -11,40 +11,18 @@ ENV['RAILS_ENV'] = 'test'
require './config/environment'
require 'rspec'
require 'rspec/expectations'
-require 'database_cleaner'
-require 'spinach/capybara'
require 'sidekiq/testing/inline'
+require_relative 'capybara'
+require_relative 'db_cleaner'
+
%w(select2_helper test_env repo_helpers).each do |f|
require Rails.root.join('spec', 'support', f)
end
-Dir["#{Rails.root}/features/steps/shared/*.rb"].each {|file| require file}
+Dir["#{Rails.root}/features/steps/shared/*.rb"].each { |file| require file }
WebMock.allow_net_connect!
-#
-# JS driver
-#
-require 'capybara/poltergeist'
-Capybara.javascript_driver = :poltergeist
-Capybara.register_driver :poltergeist do |app|
- Capybara::Poltergeist::Driver.new(app, js_errors: false, timeout: 90)
-end
-Spinach.hooks.on_tag("javascript") do
- ::Capybara.current_driver = ::Capybara.javascript_driver
-end
-Capybara.default_wait_time = 60
-Capybara.ignore_hidden_elements = false
-
-DatabaseCleaner.strategy = :truncation
-
-Spinach.hooks.before_scenario do
- DatabaseCleaner.start
-end
-
-Spinach.hooks.after_scenario do
- DatabaseCleaner.clean
-end
Spinach.hooks.before_run do
include RSpec::Mocks::ExampleMethods