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:

X-RAY Jenkins Plugin

  • La integración de X-RAY configurada y verificada correctamente en tu servidor de Jenkins.

X-RAY Jenkins Plugin Configuration

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:

X-RAY Jenkins Execution Info

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:

X-RAY Report 1

X-RAY Report 2

X-RAY Report 3

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:

  1. test,
  2. test plan, y
  3. test execution.

Puedes encontrar más información en la página de documentación del plugin en Jenkins Plugins.