lib/rubocop/cop/rspec/capybara/visibility_matcher.rb



# frozen_string_literal: true

module RuboCop
  module Cop
    module RSpec
      module Capybara
        # @!parse
        #   # 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
        #   # https://www.rubydoc.info/gems/capybara/Capybara%2FNode%2FFinders:all[the documentation].
        #   #
        #   # @example
        #   #   # 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)
        #   #
        #   class VisibilityMatcher < ::RuboCop::Cop::Base; end
        VisibilityMatcher = ::RuboCop::Cop::Capybara::VisibilityMatcher
      end
    end
  end
end