Rails 终端中的系统测试屏幕截图垃圾邮件

Rails system test screenshot spam in terminal

这是我关于 Stack overflow 的第一个问题,所以您可能需要耐心等待我!

我正在 运行 我的应用程序中进行一些系统测试,每当测试失败时它都会截取屏幕截图,但似乎也粘贴了某种编码文件名,例如:

https://pastebin.com/eHKVUVui(粘贴太长,请参阅link)

[Screenshot]: tmp/screenshots/failures_test_Admin_permissions.png ]1337;File=name=ZmFpbHVyZXNfdGVzdF9BZG1pbl9wZXJtaXNzaW9ucy5wbmc=;height=400px;inline=1:iVBORw0KGgoAAAANSUhEUgAABW4AAAM6CAYAAAAR+9rFAAAgAElEQVR4nOzde3zT5d3/8VfapoXQktIGaDi0YAEr0E2CWuQujDook+KGOtRxT3E/1N243aDzMJzKdqO7xdNU3OzthM2qQ5E5mROmBVfFilQlqOVQ6ao2HMIhLYSW0DZt8/ujFJombdO0QNX38/HYY3p9872+Vw6F+s7n+7kMtbW1PkRERERERERERESkW9XU1IR9bkQ3rkNEREREREREREREuoGCWxEREREREREREZEeRsGtiIiIiIiIiIiISA+j4FZERERERERERESkh1FwKyIiIiIiIiIiItLDKLgVEREREREREREROcNee+21do8ruBURERERERERERE5g5pD2/bCWwW3IiIiIiIiIiIiImdI67C2rfBWwa2IiIiIiIiIiIjIGdBWSBts...

等等

我想在我的终端中停止此垃圾邮件,但继续让它为我截屏,有没有办法做到这一点?

您可以使用

禁用终端输出
Capybara::Screenshot::RSpec.add_link_to_screenshot_for_failed_examples = false

您看到的输出是 Rails 试图在终端中显示实际的屏幕截图。看来您的终端 capable/configured 无法显示图像。此行为可通过几个环境变量控制 - https://github.com/rails/rails/blob/5-1-stable/actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb#L58

通过将其中一个环境变量设置为 'simple',您可以防止 Rails 将图像输出到终端,类似于

RAILS_SYSTEM_TESTING_SCREENSHOT=simple bundle exec rspec

等等