Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retrive screenshot in relative path of current directory #30421

Merged
merged 1 commit into from Aug 27, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 6 additions & 0 deletions actionpack/CHANGELOG.md
@@ -1,3 +1,9 @@
* Make `take_failed_screenshot` work within engine.

Fixes #30405.

*Yuji Yaginuma*

* Deprecate `ActionDispatch::TestResponse` response aliases

`#success?`, `#missing?` & `#error?` are not supported by the actual
Expand Down
Expand Up @@ -44,11 +44,15 @@ def image_name
end

def image_path
"tmp/screenshots/#{image_name}.png"
@image_path ||= absolute_image_path.relative_path_from(Pathname.pwd).to_s
end

def absolute_image_path
Rails.root.join("tmp/screenshots/#{image_name}.png")
end

def save_image
page.save_screenshot(Rails.root.join(image_path))
page.save_screenshot(absolute_image_path)
end

def output_type
Expand All @@ -69,10 +73,10 @@ def display_image

case output_type
when "artifact"
message << "\e]1338;url=artifact://#{image_path}\a\n"
message << "\e]1338;url=artifact://#{absolute_image_path}\a\n"
when "inline"
name = inline_base64(File.basename(image_path))
image = inline_base64(File.read(image_path))
name = inline_base64(File.basename(absolute_image_path))
image = inline_base64(File.read(absolute_image_path))
message << "\e]1337;File=name=#{name};height=400px;inline=1:#{image}\a\n"
end

Expand Down
32 changes: 24 additions & 8 deletions actionpack/test/dispatch/system_testing/screenshot_helper_test.rb
Expand Up @@ -8,23 +8,29 @@ class ScreenshotHelperTest < ActiveSupport::TestCase
test "image path is saved in tmp directory" do
new_test = DrivenBySeleniumWithChrome.new("x")

assert_equal "tmp/screenshots/x.png", new_test.send(:image_path)
Rails.stub :root, Pathname.getwd do
assert_equal "tmp/screenshots/x.png", new_test.send(:image_path)
end
end

test "image path includes failures text if test did not pass" do
new_test = DrivenBySeleniumWithChrome.new("x")

new_test.stub :passed?, false do
assert_equal "tmp/screenshots/failures_x.png", new_test.send(:image_path)
Rails.stub :root, Pathname.getwd do
new_test.stub :passed?, false do
assert_equal "tmp/screenshots/failures_x.png", new_test.send(:image_path)
end
end
end

test "image path does not include failures text if test skipped" do
new_test = DrivenBySeleniumWithChrome.new("x")

new_test.stub :passed?, false do
new_test.stub :skipped?, true do
assert_equal "tmp/screenshots/x.png", new_test.send(:image_path)
Rails.stub :root, Pathname.getwd do
new_test.stub :passed?, false do
new_test.stub :skipped?, true do
assert_equal "tmp/screenshots/x.png", new_test.send(:image_path)
end
end
end
end
Expand All @@ -36,13 +42,23 @@ class ScreenshotHelperTest < ActiveSupport::TestCase

new_test = DrivenBySeleniumWithChrome.new("x")

new_test.stub :passed?, false do
assert_match "\e]1338;url=artifact://tmp/screenshots/failures_x.png\a", new_test.send(:display_image)
Rails.stub :root, Pathname.getwd do
new_test.stub :passed?, false do
assert_match %r|url=artifact://.+?tmp/screenshots/failures_x\.png|, new_test.send(:display_image)
end
end
ensure
ENV["RAILS_SYSTEM_TESTING_SCREENSHOT"] = original_output_type
end
end

test "image path returns the relative path from current directory" do
new_test = DrivenBySeleniumWithChrome.new("x")

Rails.stub :root, Pathname.getwd.join("..") do
assert_equal "../tmp/screenshots/x.png", new_test.send(:image_path)
end
end
end

class RackTestScreenshotsTest < DrivenByRackTest
Expand Down