diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2017-02-20 16:35:49 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-20 16:35:49 -0500 |
commit | 2ee146af6ba9193862b76306685eccee79fefef9 (patch) | |
tree | d5e20c06d020731e56ccac566e73b72130a85119 /actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb | |
parent | ff326e745614593530ee64b67ac21bf14e3d41b3 (diff) | |
parent | 42a6dbdf8480b96c4a0ac6e1dab215ae9dd77d1d (diff) | |
download | rails-2ee146af6ba9193862b76306685eccee79fefef9.tar.gz rails-2ee146af6ba9193862b76306685eccee79fefef9.tar.bz2 rails-2ee146af6ba9193862b76306685eccee79fefef9.zip |
Merge pull request #26703 from eileencodes/rails_system_tests
WIP: Capybara Integration with Rails (AKA System Tests)
Diffstat (limited to 'actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb | 57 |
1 files changed, 57 insertions, 0 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 new file mode 100644 index 0000000000..784005cb93 --- /dev/null +++ b/actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb @@ -0,0 +1,57 @@ +module ActionDispatch + module SystemTesting + module TestHelpers + # Screenshot helper for system testing + module ScreenshotHelper + # Takes a screenshot of the current page in the browser. + # + # +take_screenshot+ can be used at any point in your system tests to take + # a screenshot of the current state. This can be useful for debugging or + # automating visual testing. + def take_screenshot + save_image + puts "[Screenshot]: #{image_path}" + puts display_image + end + + # Takes a screenshot of the current page in the browser if the test + # failed. + # + # +take_failed_screenshot+ is included in <tt>application_system_test_case.rb</tt> + # that is generated with the application. To take screenshots when a test + # fails add +take_failed_screenshot+ to the teardown block before clearing + # sessions. + def take_failed_screenshot + take_screenshot unless passed? + end + + private + def image_name + passed? ? method_name : "failures_#{method_name}" + end + + def image_path + "tmp/screenshots/#{image_name}.png" + end + + def save_image + page.save_screenshot(Rails.root.join(image_path)) + end + + def display_image + if ENV["CAPYBARA_INLINE_SCREENSHOT"] == "artifact" + "\e]1338;url=artifact://#{image_path}\a" + else + name = inline_base64(File.basename(image_path)) + image = inline_base64(File.read(image_path)) + "\e]1337;File=name=#{name};height=400px;inline=1:#{image}\a" + end + end + + def inline_base64(path) + Base64.encode64(path).gsub("\n", "") + end + end + end + end +end |