Вы должны стремиться к тому, чтобы ваш сценарий читался на простом английском языке. Если бы я не был разработчиком, сценарий не имел бы для меня особого смысла. Вы могли бы сделать что-то вроде этого:
Then I should see cat within a word list element
Шаг для этого будет:
Then /^(?:|I )should see "([^"]*)" within (.*)$/ do |text, parent|
with_scope(parent) do
if page.respond_to? :should
page.should have_content(text)
else
assert page.has_content?(text)
end
end
end
Генератор огурцов уже должен предоставлять метод with_scope, но здесь он в любом случае:
module WithinHelpers
def with_scope(locator)
locator ? within(*selector_for(locator)) { yield } : yield
end
end
World(WithinHelpers)
И просто обязательно добавьте селектор в ваш файл selectors.rb в файле features / support / selectors внутри оператора case для локатора:
module HtmlSelectorsHelpers
def selector_for(locator)
case locator
when ' a word list element'
'li.word'