2012-03-23 8 views
12

En nuestra compilación hay ciertos escenarios que fallan por razones que están fuera de nuestro control o tardan demasiado en depurarse adecuadamente. Cosas como javascript sincronizado, etc.pepino ¿volver a ejecutar los escenarios fallidos automáticamente con una etiqueta?

De todos modos el punto es que a veces funcionan a veces no, así que estaba pensando que sería bueno agregar una etiqueta a un escenario como @rerun_on_failure o @retry que reintentaría el escenario X cantidad de veces antes de fallar la compilación.

entiendo que esto no es una solución ideal, pero la prueba sigue siendo valioso y nos gustaría mantenerlo sin tener los falsos negativos

La prueba real que no hace clic en un enlace y espera un evento de seguimiento a ser enviado a un servidor para análisis (a través de javascript). A veces, el controlador web de selenio carga la página siguiente demasiado rápido y el evento no tiene tiempo para enviarse.

Gracias

+2

Se puede utilizar wait_until? http://stackoverflow.com/questions/3876412/capybara-doesnt-recognize-dynamically-added-doms-elements – michaeltwofish

+1

usamos wait_until para otras pruebas, pero en este caso no es aplicable. Actualizaré la pregunta sobre por qué. Gracias – amleszk

+0

No puedo evitar pensar que los ganchos de pepino podrían lograr esto. Posiblemente un gancho alrededor. Sin embargo, no es tan simple como volver a ejecutar el escenario porque también necesita que su conductor de capibara esté en el estado correcto. Intenté hacer esto por mí mismo, pero aún no he podido hacerlo. – iainbeeston

Respuesta

9

He estado considerando escribir algo parecido a lo que describes, pero he encontrado esto:

http://web.archive.org/web/20160713013212/http://blog.crowdint.com/2011/08/22/auto-retry-failed-cucumber-tests.html

Si estás cansado de tener que volver a tiro construye en su servidor CI debido a fallas no deterministas, esta publicación es para usted.

En pocas palabras: hace una nueva tarea de rake llamada pepino: vuelva a ejecutar que utiliza rerun.txt para volver a intentar las pruebas fallidas. Debería ser bastante fácil agregar algunos bucles para volver a intentar como máximo 3 veces (por ejemplo).

+2

Esto es interesante, pero me solo use esto como último recurso. Lo mejor que puede hacer es eliminar todo el comportamiento no determinista de las pruebas. –

+0

@Mark Esto es bastante difícil para las pruebas de javascript que no son deterministas por razones no deterministas –

3

Más versiones recientes de pepino tienen una bandera de reintento

cucumber --retry 2 

Reintentaré pruebas dos veces si falla

+0

Esto debería ser la nueva respuesta seleccionada. Incluso si la respuesta de Neomindryan fue excelente en ese momento, esta respuesta lo hace completamente obsoleto. – sergut

Cuestiones relacionadas