Cucumber + Capybara + Jquery: Como esperar requisições Ajax terminarem
Já tive vários problemas com testes de cucumber que quebram intermitentemente pois as vezes não esperam as requisições Ajax terminarem. Em vários casos desistimos desses testes pois não tínhamos achado uma solução.Porém essa semana dei uma nova pesquisada e achei uma solução que está funcionando bem até agora.
O princípio é usar a função active do Jquery para saber quantas requisições de ajax (feitas pelo Jquery) ainda estão ativas.
Com isso, criei um novo step para meus testes Cucumber:
Given /^I wait for ajax loading$/ do 5.times do break if page.evaluate_script("$.active") == 0 sleep 1 end end
E com isso é só utilizar nos testes assim:
Given I follow "Salvar" And I wait for ajax loading Then ...
É isso!
Boa dica. Legal que voltou a escrever.
ResponderExcluirLegal Perrella. O Brunão vai gostar dessa hein...hehe.
ResponderExcluirRapaz, perfeito! Parabens.
ResponderExcluir