module HtmlSelectorsHelpers

Public Instance Methods

selector_for(locator) click to toggle source

Maps a name to a selector. Used primarily by the

When /^(.+) within (.+)$/ do |step, scope|

step definitions in web_steps.rb

# File lib/generators/katapult/basics/templates/features/support/selectors.rb, line 8
def selector_for(locator)
  case locator

  # Auto-mapper for BEM classes
  #
  # Usage examples:
  #   the main menu -> '.main-menu'
  #   the item box's header -> '.item-box--header'
  #   the slider's item (current) -> '.slider--item.-current'
  when /^the (.+?)(?:'s (.+?))?(?: \((.+)\))?$/
    selector = '.'
    selector << selectorify($1)
    selector << '--' << selectorify($2) if $2
    selector << '.-' << selectorify($3) if $3
    selector

  # Add more mappings here.
  # Here is an example that pulls values out of the Regexp:
  #
  #  when /^the (notice|error|info) flash$/
  #    ".flash.#{$1}"

  # You can also return an array to use a different selector
  # type, like:
  #
  #  when /the header/
  #    [:xpath, "//header"]

  # This allows you to provide a quoted selector as the scope
  # for "within" steps as was previously the default for the
  # web steps:
  when /^"(.+)"$/
    $1

  else
    raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
        "Now, go and add a mapping in #{__FILE__}"
  end
end

Private Instance Methods

selectorify(string) click to toggle source
# File lib/generators/katapult/basics/templates/features/support/selectors.rb, line 50
def selectorify(string)
  string.gsub(/ /, '-')
end