Você pode ignorar os carregamentos de página e o preenchimento de formulários implementando um login backdoor com um pouco de código.
Isso pressupõe que seu login é governado por um SessionsController e você pode fazer login passando uma instância de usuário em um método de login. Ajuste para corresponder ao seu sistema de autenticação.
#features/support/sign_in_backdoor.rb
class SessionsController
def backdoor
sign_in(User.find_by_email(params[:email]))
redirect_to :dashboard
end
end
MyRailsApp::Application.routes.tap do |routes|
routes.disable_clear_and_finalize = true
routes.draw do
match 'backdoor', to: 'sessions#backdoor'
end
end
Agora você pode adicionar um ajudante ao seu ambiente pepino e usar a função sign_in em qualquer lugar em suas etapas.
#features/step_definitions/session_steps.rb
module SessionStepMethods
def sign_in(user)
visit "/backdoor?email=#{user.email}"
end
end
World(SessionStepMethods)
Não se preocupe, é totalmente seguro. Como o backdoor está em recursos / suporte, ele é corrigido ao executar o cucumber, mas não em instâncias reais do servidor.