Capybaraでテキストを完全一致でテストする方法

はじめに

ほぼ同じテキストが並んでいるページをそれぞれテストするときなど、テキストを部分一致ではなく、完全一致でテストしたい時があります。

調べ方が悪かったのか検索しても公式のドキュメントしか出てこなかったので備忘録。

exact_textオプションを使おう

assert_selectorのオプションで、textではなく、exact_textを使う。これだけです。

部分一致の例

test 'visiting the index' do
    visit reports_path
    assert_selector 'h1', text: '日報'
end

これだと日報を部分一致でテストするので、日報だけでなく、日報一覧日報詳細なんかも通ってしまいます。

完全一致の例

test 'visiting the index' do
    visit reports_path
    assert_selector 'h1', exact_text: '日報'
end

exact_textを使うと、日報のみ通り、日報詳細なんかはFになってくれます。

参考

Method: Capybara::Node::Matchers#assert_selector — Documentation for capybara (3.35.3)

Module: Capybara::Node::Finders — Documentation for capybara (3.35.3)