概要
タイトル通り、Capybaraで、hogeという非表示要素がdisabledであることを確認するテストではまりました。
(1)expect(page).to have_field '#hoge', disabled: true
と書いた場合は、そもそもlocatorに#hoge
と書いたのが原因でテストが落ちたぽい。
Failure/Error: expect(page).to have_field '#hoge', disabled: true
expected to find field "#hoge"
Note: It appears you may be passing a CSS selector or XPath expression rather than a locator. Please see the documentation for acceptable locator values.
but there were no matches
(2)expect(page).to have_field 'hoge', disabled: true
と書いた場合は、hogeというvisibleな要素を探したけど見つからなかったというエラーになったので、もしかしてこのhogeというのは非表示要素なのかも?とここで気づく
Failure/Error: expect(page).to have_field 'hoge', disabled: true
expected to find visible field "hoge" but there were no matches. Also found "", which matched the selector but not all filters.
(3)expect(find('#hoge', visible: false)).to be_disabled
と修正する。
hogeという非表示要素を探してから、その要素がdisabledであることを確認したらテストが通った。
参考にした記事
使えるRSpec入門・その4「どんなブラウザ操作も自由自在!逆引きCapybara大辞典」
ありがとうございました😊