参考サイト:非表示要素はCapybaraのfindで検索対象になるのか
RSpec Capybara 非表示な要素のテストにハマる
この記事は以下の環境で動作確認しています。
ruby (2.3.7)
rails (5.2.3)
capybara(3.15.1)
rspec-rails(3.8.2)
カーソルをあてないと表示されない要素や、display: none で非表示にしている要素は
expect(find('field')).to have_content('hoge') #非表示要素を検出できない
のような方法では検出できません。
have_selector, およびvisibleオプションを用いることで、上記のような非表示要素を検出できるようになります。
expect(find('.field', visible: false)).to have_content ('hoge') #非表示要素を検出できる
expect(page).to have_selector ('.field',visible: false, text: 'hoge') #非表示テキストを検出できる
expect(find('.field', visible: false)).to have_selector ('.field',visible: false, text: 'hoge') #非表示のcss要素から、非表示テキストを検出できる