System spec で CSRFトークンが取得できない

症状

Rails6 の system spec で、Ajax での POST処理のテストを書いていたら、meta タグの csrf-token が取得できずにエラーとなった。

const csrfToken = document.querySelector('meta[name=csrf-token]').getAttribute('content');
// => Uncaught TypeError: Cannot read property 'getAttribute' of null

原因

そもそも RAILS_ENV=test の時は allow_orgery_protection が false に設定されているので csrf_meta_tags が何も出力しないようだった。

config/environments/test.rb で以下のようになっているところを true に変更したら csrf_meta_tags で meta タグが出力されるようになった。

  # Disable request forgery protection in test environment.
  config.action_controller.allow_forgery_protection = false