mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Retrive screenshot in relative path of current directory
In Rails engine `Rails.root `returns the path of the dummy application. Therefore, there is no `tmp` directly where the test is running, so can not get the screenshot. For this reason, instead of directly specifying tmp, retrive screenshot by relative path from the current directory. Fixes #30405
This commit is contained in:
parent
ca2a66abef
commit
52422f2af6
3 changed files with 39 additions and 13 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
* Make `take_failed_screenshot` work within engine.
|
||||||
|
|
||||||
|
Fixes #30405.
|
||||||
|
|
||||||
|
*Yuji Yaginuma*
|
||||||
|
|
||||||
* Deprecate `ActionDispatch::TestResponse` response aliases
|
* Deprecate `ActionDispatch::TestResponse` response aliases
|
||||||
|
|
||||||
`#success?`, `#missing?` & `#error?` are not supported by the actual
|
`#success?`, `#missing?` & `#error?` are not supported by the actual
|
||||||
|
|
|
@ -44,11 +44,15 @@ module ActionDispatch
|
||||||
end
|
end
|
||||||
|
|
||||||
def image_path
|
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
|
end
|
||||||
|
|
||||||
def save_image
|
def save_image
|
||||||
page.save_screenshot(Rails.root.join(image_path))
|
page.save_screenshot(absolute_image_path)
|
||||||
end
|
end
|
||||||
|
|
||||||
def output_type
|
def output_type
|
||||||
|
@ -69,10 +73,10 @@ module ActionDispatch
|
||||||
|
|
||||||
case output_type
|
case output_type
|
||||||
when "artifact"
|
when "artifact"
|
||||||
message << "\e]1338;url=artifact://#{image_path}\a\n"
|
message << "\e]1338;url=artifact://#{absolute_image_path}\a\n"
|
||||||
when "inline"
|
when "inline"
|
||||||
name = inline_base64(File.basename(image_path))
|
name = inline_base64(File.basename(absolute_image_path))
|
||||||
image = inline_base64(File.read(image_path))
|
image = inline_base64(File.read(absolute_image_path))
|
||||||
message << "\e]1337;File=name=#{name};height=400px;inline=1:#{image}\a\n"
|
message << "\e]1337;File=name=#{name};height=400px;inline=1:#{image}\a\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -8,23 +8,29 @@ class ScreenshotHelperTest < ActiveSupport::TestCase
|
||||||
test "image path is saved in tmp directory" do
|
test "image path is saved in tmp directory" do
|
||||||
new_test = DrivenBySeleniumWithChrome.new("x")
|
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
|
end
|
||||||
|
|
||||||
test "image path includes failures text if test did not pass" do
|
test "image path includes failures text if test did not pass" do
|
||||||
new_test = DrivenBySeleniumWithChrome.new("x")
|
new_test = DrivenBySeleniumWithChrome.new("x")
|
||||||
|
|
||||||
new_test.stub :passed?, false do
|
Rails.stub :root, Pathname.getwd do
|
||||||
assert_equal "tmp/screenshots/failures_x.png", new_test.send(:image_path)
|
new_test.stub :passed?, false do
|
||||||
|
assert_equal "tmp/screenshots/failures_x.png", new_test.send(:image_path)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "image path does not include failures text if test skipped" do
|
test "image path does not include failures text if test skipped" do
|
||||||
new_test = DrivenBySeleniumWithChrome.new("x")
|
new_test = DrivenBySeleniumWithChrome.new("x")
|
||||||
|
|
||||||
new_test.stub :passed?, false do
|
Rails.stub :root, Pathname.getwd do
|
||||||
new_test.stub :skipped?, true do
|
new_test.stub :passed?, false do
|
||||||
assert_equal "tmp/screenshots/x.png", new_test.send(:image_path)
|
new_test.stub :skipped?, true do
|
||||||
|
assert_equal "tmp/screenshots/x.png", new_test.send(:image_path)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -36,13 +42,23 @@ class ScreenshotHelperTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
new_test = DrivenBySeleniumWithChrome.new("x")
|
new_test = DrivenBySeleniumWithChrome.new("x")
|
||||||
|
|
||||||
new_test.stub :passed?, false do
|
Rails.stub :root, Pathname.getwd do
|
||||||
assert_match "\e]1338;url=artifact://tmp/screenshots/failures_x.png\a", new_test.send(:display_image)
|
new_test.stub :passed?, false do
|
||||||
|
assert_match %r|url=artifact://.+?tmp/screenshots/failures_x\.png|, new_test.send(:display_image)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
ENV["RAILS_SYSTEM_TESTING_SCREENSHOT"] = original_output_type
|
ENV["RAILS_SYSTEM_TESTING_SCREENSHOT"] = original_output_type
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
||||||
class RackTestScreenshotsTest < DrivenByRackTest
|
class RackTestScreenshotsTest < DrivenByRackTest
|
||||||
|
|
Loading…
Reference in a new issue