Spreewald
  
    Show archive.org snapshot
  
 comes with a selector_for helper that matches an English term like the user's profile into a CSS selector. This is useful for steps that refer to a particular section of the page, like the following:
Then I should see "Bruce" within the user's profile
                                 ^^^^^^^^^^^^^^^^^^
If you're too lazy to manually translate English to a CSS selector by adding a line to features/env/selectors.rb, we already have an auto-mapper to translate English into BEM classes.
This card expands on the idea by also allowing to refer to an element by its 
  aria-label
  
    Show archive.org snapshot
  
 attribute. aria-label is usually employed to assist users with disabilities. It is also very practical to label things for integration tests.
With the auto-mapper below you can write this:
Then I should see "Bruce" within the user's profile
... and it will match either this:
<div aria-label="user's profile">
  Bruce Wayne
</div>
... or this:
<div class="user--profile">
  Bruce Wayne
</div>
Code
Save this to features/support/selectors.rb, or update your file:
module HtmlSelectorsHelpers
  def selector_for(locator)
    case locator
    # Auto-mapper for BEM classes and ARIA labels
    #
    # Usage examples:
    #   the main menu -> '.main-menu, [aria-label="main menu"]'
    #   the item box's header -> '.item-box--header, [aria-label="item box's header"]'
    #   the slider's item that is current -> '.slider--item.is-current, [aria-label="slider's item that is current"]'
    when /^the (.*)$/
      match = $1
      match =~ /^(.+?)(?:'s (.+?))?(?: that (.+))?$/
      bem_selector = '.'
      bem_selector << selectorify($1)
      bem_selector << '--' << selectorify($2) if $2
      bem_selector << '.' << selectorify($3) if $3
      bem_selector
      aria_selector = '[aria-label="'
      aria_selector << match.gsub('"', '\\"')
      aria_selector << '"]'
      [bem_selector, aria_selector].join(', ')
    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)