Introducción
La mayoría de las veces, los informes de pruebas de regresión se deben enviar a un ALM para mantener un historial de ejecuciones y evaluar la estabilidad del SUT.
El siguiente artículo describe cómo añadir las líneas de código necesarias en un Jenkinsfile para enviar información personalizada a Jira-X-RAY a partir del informe en formato JSON que genera el framework Cucumber al finalizar las pruebas.
Asegúrate de haber instalado y configurado previamente los siguientes requisitos:
- El plugin X-Ray Jenkins Plugin, ya que el Jenkinsfile se apoya en este plugin para comunicarse con X-RAY.


Alcance
En nuestro caso específico, ya tenemos definidos previamente todos los tests y test plans en X-RAY. Por esa razón, solo queremos crear una nueva ejecución de pruebas (test execution) y enlazarla a las entidades correspondientes.
Mensaje personalizado
Existe una amplia lista de endpoints en X-RAY para mantener actualizados los tests, test plans y test executions. Dado que utilizamos Cucumber y queremos personalizar el título, la descripción y el enlace a otras incidencias de Jira, hemos elegido el endpoint cucumber/multipart.
La diferencia principal entre cucumber y cucumber/multipart es la cantidad de datos adicionales que se pueden enviar al servidor para personalizar la nueva ejecución de pruebas.
A continuación se muestra el fragmento de código utilizado en la pipeline para enviar los datos:
post {
always {
...
cucumber fileIncludePattern: 'target/test-report-${BROWSER}.json', sortingMethod: 'ALPHABETICAL', reportTitle: '${BROWSER}'
...
...
step([
$class: 'XrayImportBuilder',
endpointName: '/cucumber/multipart',
inputInfoSwitcher: 'fileContent',
importInfo: """{"fields":{
"project":{"key":"${clientData['JIRA_PROJECT']}"},
"summary":"${clientData['XRAY_SUMMARY']} environment ${ENVIRONMENT} and date ${TEST_DATETIME}",
"issuetype":{"name":"${clientData['XRAY_SUMMARY']}",
"id":"${pipelineData.xray.TEST_EXECUTION_ID}"},
"components":[{"name":"QA"}],
"description":"${clientData['XRAY_DESCRIPTION']}",
"labels":["qa","cucumber","${clientData['XRAY_MAIN_TAG']}","selenium","regression","${BROWSER}"]},
"xrayFields":{"testPlanKey":"${TEST_PLAN_KEY}","environments":["${ENVIRONMENT}"]
}
}""",
importFilePath : 'target/test-report-${BROWSER}.json',
projectKey: "${PROJECT_KEY}",
serverInstance: "${pipelineData.xray.SERVER_INSTANCE}"
])
}
}
Al ejecutar la etapa del Jenkinsfile que contiene el código anterior, la consola de Jenkins muestra la siguiente información:

Al revisar en X-RAY, se ha creado una nueva test execution enlazada a los tests ejecutados y al test plan correspondiente.
NOTA: Algunos datos en las capturas de pantalla se muestran en español:



Conclusión
Para X-RAY, existe un plugin de Jenkins que permite importar informes de Cucumber. Ofrece varias formas de personalizar datos para los siguientes tipos de Jira:
- test,
- test plan, y
- test execution.
Puedes encontrar más información en la página de documentación del plugin en Jenkins Plugins.