Capybara + Rspec でホスト名を動的に書き換えながらテストをしていきたい場合、どのようにするかのメモ。 /etc/hosts を修正するわけにもいかないし…と路頭に迷っていたらインフラに強いメンバー 306 がアドバイスくれました。ありがとう。

ホスト名の最後に .localhost をつける

これだけです。こうすればホスト名がなんであろうと 127.0.0.1 のローカルを参照してくれます。最高。

Capybara.app_host でアクセス先のホストを設定できる。ついでにポートも動的になっているのを合わせておく。

RSpec.describe 'Hoge', type: :system, js: true do
  let(:port) { Capybara.current_session.server.port }
  it do
    Capybara.app_host = "http://hoge.example.com.localhost:#{port}/"
  end
end