Capybara

Capybara/AmbiguousClick

Enabled by default Safe Supports autocorrection Version Added Version Changed

Disabled

Yes

No

2.22

-

Specify the exact target to click on.

In projects where accessibility needs to be considered, it is crucial to specify the click target precisely.

Examples

# bad
click_link_or_button('foo')
click_on('foo')

# good
click_link('foo')
click_button('foo')

Capybara/AssertStyle

Enabled by default Safe Supports autocorrection Version Added Version Changed

Pending

Yes

Always

[next]

-

Checks for usage of deprecated assert style method.

Examples

# bad
page.find(:css, '#first').assert_style(display: 'block')

# good
page.find(:css, '#first').assert_matches_style(display: 'block')

Capybara/ClickLinkOrButtonStyle

Enabled by default Safe Supports autocorrection Version Added Version Changed

Disabled

Yes

No

2.19

2.22

Checks for methods of button or link clicks.

This cop is deprecated. We plan to remove this in the next major version update to 3.0.

The migration target is Capybara/AmbiguousClick. It is only migration target when EnforcedStyle: strict. If you are using this cop, please plan for migration. There is no migration target when EnforcedStyle: link_or_button.

By default, prefer to use click_link_or_button or click_on. These methods offer a weaker coupling between the test and HTML, allowing for a more faithful reflection of how the user behaves.

You can set EnforcedStyle: strict to prefer the use of click_link and click_button, but this is a deprecated setting.

Examples

# bad
click_link('foo')
click_button('foo')

# good
click_link_or_button('foo')
click_on('foo')

EnforcedStyle: strict

# bad
click_link_or_button('foo')
click_on('foo')

# good
click_link('foo')
click_button('foo')

Configurable attributes

Name Default value Configurable values

EnforcedStyle

link_or_button

link_or_button, strict

Capybara/FindAllFirst

Enabled by default Safe Supports autocorrection Version Added Version Changed

Pending

Yes

Always

2.22

-

Enforces use of first instead of all with first or [0].

Examples

# bad
all('a').first
all('a')[0]
find('a', match: :first)
all('a', match: :first)

# good
first('a')

Capybara/RedundantWithinFind

Enabled by default Safe Supports autocorrection Version Added Version Changed

Pending

Yes

Always

2.20

-

Checks for redundant within find(…​) calls.

Examples

# bad
within find('foo.bar') do
  # ...
end

# good
within 'foo.bar' do
  # ...
end

# bad
within find_by_id('foo') do
  # ...
end

# good
within '#foo' do
  # ...
end

Capybara/SpecificActions

Enabled by default Safe Supports autocorrection Version Added Version Changed

Pending

Yes

No

2.14

-

Checks for there is a more specific actions offered by Capybara.

Examples

# bad
find('a').click
find('button.cls').click
find('a', exact_text: 'foo').click
find('div button').click

# good
click_link
click_button(class: 'cls')
click_link(exact_text: 'foo')
find('div').click_button

Capybara/SpecificFinders

Enabled by default Safe Supports autocorrection Version Added Version Changed

Pending

Yes

Always

2.13

-

Checks if there is a more specific finder offered by Capybara.

Examples

# bad
find('#some-id')
find('[id=some-id]')
find(:css, '#some-id')
find(:id, 'some-id')

# good
find_by_id('some-id')