参考にさせて頂いたページ
RSpecについて
Capybaraについて
radioやcheckboxがCapybara::ElementNotFoundになる
ラジオボタンやチェックボックスは、デザインを適用するときにdisplay:none;にしたり、position:absolute;のlabelタグの下に隠したりすることがよくあります。
Capybara::ElementNotFound のエラーが表示されてラジオボタンやチェックボックスが見つけられない場合はinputタグが表示状態か非表示状態か、まずは思い込みを捨ててCSSをきちんと確認することが大切です。
checkedかどうかを検証する
表示されているradioやcheckboxがcheckedであることを検証する
expect(page).to have_checked_field('ラベル文字列')
display:none;のradioやcheckboxがcheckedであることを検証する
visible:falseを第二引数に渡すとdisplay:none;の要素がcheckedかを検証できます。
expect(page).to have_checked_field('ラベル文字列', visible:false)
checkedでないことを検証する
checkedでないということを検証するには、to_notがあります。
expect(page).to_not
フィールド自体が表示されているかを検証する
checkedかどうかは関係なく、要素が表示されているかどうかを検証します。
expect(page).to have_field('ラベル文字列')