Reset sessions on failed system test screenshot
Reset Capybara sessions if `take_failed_screenshot` raise exception in system test `after_teardown`.
This commit is contained in:
parent
4fe27cdc15
commit
59895db44b
@ -1,3 +1,10 @@
|
||||
* Reset Capybara sessions if failed system test screenshot raising an exception.
|
||||
|
||||
Reset Capybara sessions if `take_failed_screenshot` raise exception
|
||||
in system test `after_teardown`.
|
||||
|
||||
*Maxim Perepelitsa*
|
||||
|
||||
* Use request object for context if there's no controller
|
||||
|
||||
There is no controller instance when using a redirect route or a
|
||||
|
@ -17,8 +17,11 @@ def before_setup
|
||||
end
|
||||
|
||||
def after_teardown
|
||||
take_failed_screenshot
|
||||
Capybara.reset_sessions!
|
||||
begin
|
||||
take_failed_screenshot
|
||||
ensure
|
||||
Capybara.reset_sessions!
|
||||
end
|
||||
ensure
|
||||
super
|
||||
end
|
||||
|
@ -703,6 +703,31 @@ def reset_sessions!
|
||||
end
|
||||
end
|
||||
|
||||
def test_reset_sessions_on_failed_system_test_screenshot
|
||||
app_file "test/system/reset_sessions_on_failed_system_test_screenshot_test.rb", <<~RUBY
|
||||
require "application_system_test_case"
|
||||
|
||||
class ResetSessionsOnFailedSystemTestScreenshotTest < ApplicationSystemTestCase
|
||||
ActionDispatch::SystemTestCase.class_eval do
|
||||
def take_failed_screenshot
|
||||
raise Capybara::CapybaraError
|
||||
end
|
||||
end
|
||||
|
||||
Capybara.instance_eval do
|
||||
def reset_sessions!
|
||||
puts "Capybara.reset_sessions! called"
|
||||
end
|
||||
end
|
||||
|
||||
test "dummy" do
|
||||
end
|
||||
end
|
||||
RUBY
|
||||
output = run_test_command("test/system/reset_sessions_on_failed_system_test_screenshot_test.rb")
|
||||
assert_match "Capybara.reset_sessions! called", output
|
||||
end
|
||||
|
||||
def test_system_tests_are_not_run_with_the_default_test_command
|
||||
app_file "test/system/dummy_test.rb", <<-RUBY
|
||||
require "application_system_test_case"
|
||||
|
Loading…
Reference in New Issue
Block a user