Open3
Capybara.test_id

Capybara.test_id
を設定した時、その要素を取り出すにはどうすればよいのかと、 find(...)
を使って試行錯誤していたら、結局のところ find(...)
ではサポートされておらず、たとえば find_link(...)
のような具体的なメソッドの方でサポートされているのだった。

属性 data-testid="foo"
を持った要素をターゲットにしたい場合はこのように設定する:
rails_helper.rb
Capybara.configure do |config|
config.test_id = 'data-testid'
end
それにより find_link
などが、暗黙のうちに data-testid="..."
を探すようになる:
find_link('foo').click
もし、 find
を使って data-testid="..."
のついた要素を見つけたい場合は、カスタムセレクタを定義しないといけないけれど、定義してしまえばよろしい:
rails_helper.rb
Capybara.add_selector(:test_id) do
css { |value| "[data-testid='#{value}']" }
end
カスタムセレクタの識別子としての "test_id" を指定して、 find
することができる:
find(:test_id, "foo")

- find_link
- find_button
- ...