diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb | 6 | ||||
-rw-r--r-- | actionpack/test/dispatch/system_testing/screenshot_helper_test.rb | 25 |
2 files changed, 30 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb b/actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb index ddc961cf84..e37f6d02aa 100644 --- a/actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb +++ b/actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb @@ -22,7 +22,7 @@ module ActionDispatch # fails add +take_failed_screenshot+ to the teardown block before clearing # sessions. def take_failed_screenshot - take_screenshot if failed? + take_screenshot if failed? && supports_screenshot? end private @@ -55,6 +55,10 @@ module ActionDispatch def failed? !passed? && !skipped? end + + def supports_screenshot? + page.driver.public_methods(false).include?(:save_screenshot) + end end end end diff --git a/actionpack/test/dispatch/system_testing/screenshot_helper_test.rb b/actionpack/test/dispatch/system_testing/screenshot_helper_test.rb index 3b4ea96c4f..d6b501b3ac 100644 --- a/actionpack/test/dispatch/system_testing/screenshot_helper_test.rb +++ b/actionpack/test/dispatch/system_testing/screenshot_helper_test.rb @@ -1,5 +1,6 @@ require "abstract_unit" require "action_dispatch/system_testing/test_helpers/screenshot_helper" +require "capybara/dsl" class ScreenshotHelperTest < ActiveSupport::TestCase test "image path is saved in tmp directory" do @@ -25,4 +26,28 @@ class ScreenshotHelperTest < ActiveSupport::TestCase end end end + + test "rack_test driver does not support screenshot" do + begin + original_driver = Capybara.current_driver + Capybara.current_driver = :rack_test + + new_test = ActionDispatch::SystemTestCase.new("x") + assert_not new_test.send(:supports_screenshot?) + ensure + Capybara.current_driver = original_driver + end + end + + test "selenium driver supports screenshot" do + begin + original_driver = Capybara.current_driver + Capybara.current_driver = :selenium + + new_test = ActionDispatch::SystemTestCase.new("x") + assert new_test.send(:supports_screenshot?) + ensure + Capybara.current_driver = original_driver + end + end end |