Fallo en un trabajo de Jenkins cuando falla la aserción de la prueba Nightwatch en Browserstack

Tengo un trabajo de Jenkins que ejecuta pruebas de Selenium en Browserstack a través del marco Nightwatch.js. Tenemos un conjunto completo de pruebas que Nightwatch ejecuta en procesos separados, y necesitamos una manera de devolver el valor de Pasar / Fallar a Jenkins después de que se hayan ejecutado todas las pruebas.

He estado tratando de usar el desgarro de gancho de Nightwatch para ejecutar un fragmento de código al final de cada módulo con if(this.results.failed) { take action } , pero no puedo averiguar qué acción debo tomar Para que el fallo sea accesible para el trabajo de Jenkins.

Mi idea inicial fue crear una variable de entorno y establecerla en falsa cada vez que falla una prueba, pero creo que cada proceso se ejecuta en una subshell separada, por lo que las variables creadas / modificadas por el módulo de prueba no son accesibles.

Mi segunda idea fue crear un contador en el módulo global, pero ese valor no se incrementa como se esperaba cuando se hace referencia por un método after global.

Así es como te recomiendo que lo hagas:

  • Cree un escritor sincronizado en la función afterEach ( https://github.com/nightwatchjs/nightwatch-docs/blob/master/guide/using-nightwatch/test-hooks.md ) y escriba los resultados de la prueba en un archivo plano (csv , tsv, txt, etc) en el sistema que ejecuta jenkins. Puede elegir escribir solo las fallas si (this.results.failed) O escribir todas las ID de prueba con estado de aprobación / falla en el archivo
  • Una vez que se haya completado su comstackción de prueba, tendrá todos los detalles en el archivo plano (incluidos los detalles sobre las fallas).
  • Ahora puede desencadenar un trabajo posterior (un trabajo diferente en Jenkins que usa el complemento de jenkins descendente) que tiene un script simple (script de shell) en busca de fallas en el archivo de salida de prueba que escribió en el paso 1. Usando esto, Jenkins tendrá detalles si hay fueron pruebas fallidas

Nota: si tiene varias pruebas de ejecución de comstackciones independientes, asegúrese de utilizar el complemento bloqueador de comstackción de jenkins para iniciar el trabajo posterior una vez que se completen todas las comstackciones independientes

Pude resolver este problema usando el complemento Jenkins Log Parser Plugin para fallar la prueba en caso de que la salida de la consola contenga la cadena “FALTA DE PRUEBA”.

Esto se logró mediante la creación de un archivo de reglas que contiene una sola línea:

error /TEST FAILURE/

    Intereting Posts