Capybara
Capybara/CurrentPathExpectation
| Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
|---|---|---|---|---|
Enabled |
Yes |
Yes |
1.18 |
2.0 |
Checks that no expectations are set on Capybara’s current_path.
The
have_current_path matcher
should be used on page to set expectations on Capybara’s
current path, since it uses
Capybara’s waiting functionality
which ensures that preceding actions (like click_link) have
completed.
This cop does not support autocorrection in some cases.
Capybara/MatchStyle
| Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
|---|---|---|---|---|
Pending |
Yes |
Yes |
2.17 |
- |
Checks for usage of deprecated style methods.
Examples
when using assert_style
# bad
page.find(:css, '#first').assert_style(display: 'block')
# good
page.find(:css, '#first').assert_matches_style(display: 'block')
Capybara/NegationMatcher
| Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
|---|---|---|---|---|
Pending |
Yes |
Yes |
2.14 |
- |
Enforces use of have_no_* or not_to for negated expectations.
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.
Capybara/SpecificFinders
Capybara/SpecificMatcher
| Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
|---|---|---|---|---|
Pending |
Yes |
No |
2.12 |
- |
Checks for there is a more specific matcher offered by Capybara.
Examples
# bad
expect(page).to have_selector('button')
expect(page).to have_no_selector('button.cls')
expect(page).to have_css('button')
expect(page).to have_no_css('a.cls', href: 'http://example.com')
expect(page).to have_css('table.cls')
expect(page).to have_css('select')
expect(page).to have_css('input', exact_text: 'foo')
# good
expect(page).to have_button
expect(page).to have_no_button(class: 'cls')
expect(page).to have_button
expect(page).to have_no_link('foo', class: 'cls', href: 'http://example.com')
expect(page).to have_table(class: 'cls')
expect(page).to have_select
expect(page).to have_field('foo')
Capybara/VisibilityMatcher
| Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
|---|---|---|---|---|
Enabled |
Yes |
No |
1.39 |
2.0 |
Checks for boolean visibility in Capybara finders.
Capybara lets you find elements that match a certain visibility using
the :visible option. :visible accepts both boolean and symbols as
values, however using booleans can have unwanted effects. visible:
false does not find just invisible elements, but both visible and
invisible elements. For expressiveness and clarity, use one of the
symbol values, :all, :hidden or :visible.
Read more in
the documentation.
Examples
# bad
expect(page).to have_selector('.foo', visible: false)
expect(page).to have_css('.foo', visible: true)
expect(page).to have_link('my link', visible: false)
# good
expect(page).to have_selector('.foo', visible: :visible)
expect(page).to have_css('.foo', visible: :all)
expect(page).to have_link('my link', visible: :hidden)