Sha256: c541d8c1f301cca7816e329303646b00c81bc745ff5aa967d500780fa236493c

Contents?: true

Size: 1.36 KB

Versions: 4

Compression:

Stored size: 1.36 KB

Contents

module HtmlSelectorsHelpers
  # Maps a name to a selector. Used primarily by the
  #
  #   When /^(.+) within (.+)$/ do |step, scope|
  #
  # step definitions in web_steps.rb
  #
  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

  def selectorify(string)
    string.gsub(/ /, '-')
  end

end

World(HtmlSelectorsHelpers)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
katapult-0.5.0 lib/generators/katapult/basics/templates/features/support/selectors.rb
katapult-0.4.1 lib/generators/katapult/basics/templates/features/support/selectors.rb
katapult-0.4.0 lib/generators/katapult/basics/templates/features/support/selectors.rb
katapult-0.3.0 lib/generators/katapult/basics/templates/features/support/selectors.rb