eshell 内でテストを走らせているときにスクリーンショットが発動すると、あろうことかインライン表示しようとして無造作に垂れ流される base64 文字列によって eshell が使いものにならなくなります。
対策1. インライン表示しないようにする
ENV["RAILS_SYSTEM_TESTING_SCREENSHOT"]
を simple に設定します。
ENV["RAILS_SYSTEM_TESTING_SCREENSHOT"] ||= "simple"
これで静まります。
eshell の中だと ENV["TERM"]
が dumb
になっているので、このときだけ simple
にするのもいいかもしれません。
ちなみに上の設定を見るたびに simple って結局どういう状態だっけと私は毎回わからなくなります。
対策2. screenshot_opener gem を使う
screenshot_opener を使うと対策1をしてくれた上にスクリーンショットを、open コマンドで開いてくれるようになります。linux の場合は xdg-open や gnome-open を使ってくれます。
RSpec 経由の System Test (System Spec) では次の設定を追加すると動きました。
config.include ScreenshotOpener, type: :system
参照
[Rails]System Testsでスクリーンショットの表示をどうにかする
http://y-yagi.tumblr.com/post/166896745740
Rails 5.1のSystemTestCaseを試してみた
https://qiita.com/jnchito/items/4d01f2faa1deee36bd27
rspec-rails 3.7の新機能!System Specを使ってみた
https://qiita.com/jnchito/items/c7e6e7abf83598a6516d