RSpec/Capybara
RSpec/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.
RSpec/Capybara/FeatureMethods
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Enabled |
Yes |
Yes |
1.17 |
2.0 |
Checks for consistent method usage in feature specs.
By default, the cop disables all Capybara-specific methods that have
the same native RSpec method (e.g. are just aliases). Some teams
however may prefer using some of the Capybara methods (like feature
)
to make it obvious that the test uses Capybara, while still disable
the rest of the methods, like given
(alias for let
), background
(alias for before
), etc. You can configure which of the methods to
be enabled by using the EnabledMethods configuration option.
RSpec/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')
RSpec/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.
RSpec/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.
RSpec/Capybara/SpecificFinders
RSpec/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')
RSpec/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)