Configuración de Allure Cypress
El comportamiento del adaptador Allure Cypress puede verse afectado por algunas opciones de configuración definidas en tu archivo de configuración de Cypress, por ejemplo, cypress.config.ts
.
Las opciones de configuración deben definirse en el objeto que se pasa a allureCypress()
como tercer argumento. Por ejemplo:
import { allureCypress } from "allure-cypress/reporter";
import { Status } from "allure-js-commons";
import * as os from "node:os";
export default {
e2e: {
setupNodeEvents(on, config) {
allureCypress(on, config, {
resultsDir: "allure-results",
links: {
issue: {
nameTemplate: "Issue #%s",
urlTemplate: "https://issues.example.com/%s",
},
tms: {
nameTemplate: "TMS #%s",
urlTemplate: "https://tms.example.com/%s",
},
jira: {
urlTemplate: (v) => `https://jira.example.com/browse/${v}`,
},
},
categories: [
{
name: "foo",
messageRegex: "bar",
traceRegex: "baz",
matchedStatuses: [Status.FAILED, Status.BROKEN],
},
],
environmentInfo: {
os_platform: os.platform(),
os_release: os.release(),
os_version: os.version(),
node_version: process.version,
},
});
return config;
},
},
};
WARNING
Tanto el objeto config
como la configuración de Allure Cypress deben pasarse a allureCypress()
. Omitir el objeto config
puede hacer que algunas de las funciones de integración no funcionen.
Uso de Allure Cypress con controladores de eventos personalizados
Parte de la funcionalidad de Allure Cypress se implementa mediante los controladores de eventos para after:spec
o after:run
. Si tu proyecto necesita definir sus propios controladores para estos eventos, es importante asegurarse de que Cypress ejecute todos los controladores, no solo los últimos definidos.
Para hacerlo, guarda el resultado de la llamada a allureCypress()
en una variable y llama a su onAfterSpec()
o onAfterRun()
al principio de tus controladores de eventos.
Por ejemplo:
import { allureCypress } from "allure-cypress/reporter";
import { defineConfig } from "cypress";
export default defineConfig({
e2e: {
setupNodeEvents: (on, config) => {
const allurePlugin = allureCypress(on, config);
on("after:run", (results) => {
allurePlugin.onAfterRun(results);
// ... el resto del código ...
});
return config;
},
},
});
Uso de Allure Cypress con otros complementos de Cypress
Para evitar conflictos entre Allure Cypress y otros complementos de Cypress que dependen del manejo de los eventos after:spec
o after:run
, recomendamos usar cypress-on-fix
. Modifica el objeto on
para que luego puedas pasarlo a varios complementos de Cypress (incluido Allure Cypress) sin causar conflictos en los controladores de eventos.
Aquí tienes un ejemplo que usa tanto Allure Cypress como el preprocesador Cucumber para Cypress:
import { defineConfig } from "cypress";
import { allureCypress } from "allure-cypress/reporter";
import createBundler from "@bahmutov/cypress-esbuild-preprocessor";
import { addCucumberPreprocessorPlugin } from "@badeball/cypress-cucumber-preprocessor";
import { createEsbuildPlugin } from "@badeball/cypress-cucumber-preprocessor/esbuild";
import cypressOnFix from "cypress-on-fix";
export default defineConfig({
e2e: {
setupNodeEvents = async (on, config) => {
on = cypressOnFix(on);
await addCucumberPreprocessorPlugin(on, config);
on("file:preprocessor", createBundler({
plugins: [createEsbuildPlugin(config)],
}));
allureCypress(on, config);
return config;
},
// ...
},
});
Opciones soportadas
resultsDir
Ruta al directorio donde Allure Cypress guardará los resultados de las pruebas, consulta Cómo funciona. Si el directorio no existe, se creará. El valor predeterminado es allure-results
.
links
Un mapeo de plantillas que se pueden usar para construir URLs completas a partir de identificadores cortos.
Para cada tipo de enlace (consulta allure.link()
), puedes especificar lo siguiente:
nameTemplate
— una plantilla o una función para generar el nombre del enlace cuando no se proporcione.urlTemplate
— una plantilla o una función para generar la dirección del enlace cuando no se proporcione.
Las plantillas pueden ser cadenas (con %s
donde debe colocarse el identificador) o funciones (que aceptan el identificador y devuelven la URL).
Por ejemplo, con la configuración anterior, allure.issue("123")
producirá un enlace con el nombre Issue #123
y la dirección https://issues.example.com/
. Allure mostrará el enlace con el icono apropiado para el tipo issue
.
categories
Define categorías personalizadas que se utilizarán para distinguir los resultados de las pruebas según sus errores; consulta Categorías de defectos.
Esta configuración es un arreglo, donde cada elemento es un objeto que representa una categoría personalizada. Los objetos pueden tener las siguientes propiedades:
name
— el nombre de la categoría.messageRegex
— una expresión regular que el mensaje del resultado de la prueba debe coincidir.traceRegex
— una expresión regular que el rastro del resultado de la prueba debe coincidir.matchedStatuses
— un arreglo de estados que el resultado de la prueba debe tener.flaky
— si el resultado de la prueba debe ser marcado como inestable.
environmentInfo
Pares clave-valor que se mostrarán en la página principal del informe, consulta Información del entorno.