Open3

Capybara.test_id

hwatjphwatjp

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

hwatjphwatjp

属性 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")