Не пишите такие шаги и не вкладывайте шаги, вы просто попадете в беспорядок. Также данные предназначены для настройки состояния, а не для выполнения каких-либо действий.
Если у вас есть такой сложный шаг, у вас есть два варианта лучше, чем этапы вложения
- Разбейте шаг на более простые шаги
- Сложите сложность из определений шагов в вспомогательные методы
Наличие таких шагов, как «Когда я что-то нажимаю», является контрпродуктивным. Этот шаг все о том, КАК что-то сделано. Сценарии должны быть о том, что вы делаете, и почему это важно. Функции и сценарии предназначены не для программирования, а для описания поведения и должны быть очень простыми. Так что вы должны писать что-то вроде
Scenario: When I foo then the back button is disabled
Given ...
When I foo
Then the back button should be disabled
примером для моего банка будет
Scenario: Smile login disables back button
Given I am logged into smile banking
When I try and use the back button
Then I should see the back button disabled warning
Наконец, каждое определение шага должно быть просто вызовом вспомогательного метода. например,
Given 'I am logged into smile banking' do
# NOTE: both params are also helper methods
login(site: smile_banking, user: create_user)
end
это позволяет перенести всю сложность из огурца в код. Код может справиться со сложностью, огурец не может.