summaryrefslogtreecommitdiff
path: root/qa/qa/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/runtime')
-rw-r--r--qa/qa/runtime/browser.rb42
-rw-r--r--qa/qa/runtime/release.rb10
2 files changed, 10 insertions, 42 deletions
diff --git a/qa/qa/runtime/browser.rb b/qa/qa/runtime/browser.rb
index ec78759f6c8..69ba90702be 100644
--- a/qa/qa/runtime/browser.rb
+++ b/qa/qa/runtime/browser.rb
@@ -15,10 +15,6 @@ module QA
CAPYBARA_MAX_WAIT_TIME = 10
- class << self
- attr_accessor :rspec_configured, :capybara_configured
- end
-
def initialize
self.class.configure!
end
@@ -49,49 +45,11 @@ module QA
end
def self.configure!
- configure_rspec!
- configure_capybara!
- end
-
- def self.configure_rspec!
- # We don't want to enter this infinite loop:
- # Runtime::Release.perform_before_hooks -> `QA::Runtime::Browser.visit` -> configure! -> configure_rspec! -> Runtime::Release.perform_before_hooks
- # So we make sure this method is called only once.
- return if self.rspec_configured
-
- browser = self
-
RSpec.configure do |config|
config.define_derived_metadata(file_path: %r{/qa/specs/features/}) do |metadata|
metadata[:type] = :feature
end
-
- config.before(:suite) do
- unless browser.rspec_configured
- browser.rspec_configured = true
-
- ##
- # Perform before hooks, which are different for CE and EE
- #
- begin
- Runtime::Release.perform_before_hooks
- rescue
- saved = Capybara::Screenshot.screenshot_and_save_page
-
- QA::Runtime::Logger.error("Screenshot: #{saved[:image]}") if saved&.key?(:image)
- QA::Runtime::Logger.error("HTML capture: #{saved[:html]}") if saved&.key?(:html)
-
- raise
- end
- end
- end
end
- end
-
- def self.configure_capybara!
- return if self.capybara_configured
-
- self.capybara_configured = true
Capybara.server_port = 9887 + ENV['TEST_ENV_NUMBER'].to_i
diff --git a/qa/qa/runtime/release.rb b/qa/qa/runtime/release.rb
index 18a6736afcf..1cd0c62563b 100644
--- a/qa/qa/runtime/release.rb
+++ b/qa/qa/runtime/release.rb
@@ -1,5 +1,8 @@
# frozen_string_literal: true
+require 'capybara/rspec'
+require 'capybara-screenshot/rspec'
+
module QA
module Runtime
##
@@ -24,6 +27,13 @@ module QA
def self.method_missing(name, *args)
self.new.strategy.public_send(name, *args)
+ rescue
+ saved = Capybara::Screenshot.screenshot_and_save_page
+
+ QA::Runtime::Logger.error("Screenshot: #{saved[:image]}") if saved&.key?(:image)
+ QA::Runtime::Logger.error("HTML capture: #{saved[:html]}") if saved&.key?(:html)
+
+ raise
end
end
end