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/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)