【RSpec】【Capybara】非表示にしている要素の取得の仕方


解決したいこと


結合テストコードを作成している際に、
上のようにメニューボタンを押した時だけ現れるテキストを確認するために、

users_spec.rb
expect{
  find('input[class="menu-btn"]').click
}.to have_content('新規登録')

このように記述したらエラーが出ました。
調べると、非表示になっている要素は書き方を変えないと検出されないとのことでした。

今回の解決方法

users_spec.rb
expect(find('.menu-content', visible: false).text(:all)).to include '新規登録'

上のような書き方で無事テストを通せるようになりました。
visible: false のオプションで非表示になっている要素も含めて検出できるようになります。

参考
https://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders
https://chaika.hatenablog.com/entry/2019/10/08/083000