Tengo una prueba de integración de Rails que está fallando, y no puedo entender por qué. Estoy usando Capybara con Selenium como el controlador.Prueba de integración de Capybara con JavaScript asíncrono
La prueba comprueba que el contenido de la página ha sido eliminado después de que se lleva a cabo una llamada AJAX. La acción relevante es que se haga clic en un botón y que al hacer clic en el botón se elimine una sección de la página mediante una llamada jQuery remove()
. Aquí está una aproximación del código de las pruebas de integración:
click_button("Remove stuff")
assert has_no_link?("This should be removed")
La aserción falla, lo que implica que todavía existe el enlace.
He estado leyendo sobre Capybara, y sé que puede ampliar el tiempo de espera predeterminado. Lo extendí a un valor ridículo (20 segundos) y aún así la afirmación falla.
Cuando sigo el proceso de prueba a mí mismo de forma manual, la fuente de la página sigue mostrando el contenido, pero el DOM no lo hace (mediante la visualización de DOM Inspector de Firefox y buscar el elemento). ¿Es este el problema? Incluso he intentado inspeccionar el DOM mientras que las pruebas se están ejecutando en Firefox para comprobar si el contenido estaba allí, y no parece ser así.
No tengo idea de cómo Capybara aún encuentra este enlace que ya no existe en el DOM. ¿Está Capibara examinando la fuente en lugar del DOM y buscando el enlace allí? Si es así, no tengo idea de cómo corregir esta prueba para asegurarme de que la prueba pase. Actualizar la página solucionaría el problema, pero eso no es exactamente lo que un usuario haría, por lo que dudo en cambiar la página solo para que la prueba pase ...
Me encantaría cualquier recomendación sobre cómo abordar este problema.
Gracias!
¿Finalmente encontró una solución a su problema? Tengo uno similar y me pregunto si puede ayudarme. –
No, desafortunadamente no. Pasé demasiado para que esa única prueba funcione, así que terminé comentando en lugar de solucionarlo. Lo siento, no puedo ser de más ayuda ... ¡No tenía la energía para profundizar después de pasar tanto tiempo! ¡Siéntete libre de contestar la pregunta si la resuelves y estaré feliz de darte crédito! – aardvarkk
¿Recordó incluir 'js: true' en su rspec? – RubeOnRails