Comenzando con Allure CodeceptJS
Genera hermosos reportes en HTML usando Allure Report y tus pruebas de CodeceptJS.
INFO
Consulta los proyectos de ejemplo en github.com/allure-examples para ver Allure CodeceptJS en acción.
Configuración
1. Prepara tu proyecto
Asegúrate de que Node.js esté instalado.
Allure CodeceptJS ha sido probado con Node.js 18 y versiones superiores. Las versiones anteriores pueden funcionar, pero no podemos garantizarlo.
Abre una terminal y ve al directorio del proyecto. Por ejemplo:
bashcd /home/user/myproject
Asegúrate de que Allure Report esté instalado. Si no lo está, sigue las instrucciones de instalación. Ten en cuenta que Allure Report requiere Java.
Instala el adaptador Allure CodeceptJS.
bashnpm install --save-dev codeceptjs allure-codeceptjs
bashyarn add --dev codeceptjs allure-codeceptjs allure-js-commons
bashpnpm install --dev codeceptjs allure-codeceptjs
En tu archivo
codecept.conf.js
, habilita el pluginallure
.jsexports.config = { tests: "tests/**.test.js", plugins: { allure: { enabled: true, require: "allure-codeceptjs", }, }, };
2. Ejecuta las pruebas
Ejecuta tus pruebas de CodeceptJS de la misma manera en que normalmente las ejecutarías. Por ejemplo:
npx codeceptjs run
yarn run codeceptjs run
pnpx codeceptjs run
Esto guardará los datos necesarios en allure-results
o en otro directorio, según la configuración. Si el directorio ya existe, los nuevos archivos se agregarán a los existentes, para que un informe futuro se base en todos ellos.
3. Genera un informe
Finalmente, ejecuta Allure para convertir los resultados de las pruebas en un informe HTML. Esto abrirá automáticamente tu navegador para ver el informe.
allure serve allure-results
Si es necesario, reemplaza allure-results
con la ruta al directorio especificado en la configuración.
Existen algunas opciones que pueden afectar la generación del informe. Ejecuta allure --help
para ver la lista completa de opciones.
Escribir pruebas
El adaptador Allure CodeceptJS amplía las características estándar de informes de CodeceptJS proporcionando capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección destaca las mejoras clave que se pueden utilizar:
- Anotación de Metadatos: Mejora los informes de pruebas con descripciones, enlaces y otros metadatos.
- Organización de las pruebas: Estructura tus pruebas en jerarquías claras para mejorar la legibilidad y organización organizar las pruebas.
- División en pasos: Divide las pruebas en pasos más pequeños pasos de prueba para una mejor comprensión y mantenimiento.
- Pruebas parametrizadas: Describe claramente los parámetros para las pruebas parametrizadas para especificar diferentes escenarios.
- Establecer etiquetas globalmente: Utiliza variables de entorno para establecer metadatos y otras etiquetas.
- Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de las pruebas.
- Detalles del entorno: Incluye información detallada sobre el entorno en el informe de pruebas.
En la mayoría de los casos, Allure CodeceptJS proporciona dos formas diferentes de usar una función: la API en tiempo de ejecución y la API de etiquetas.
API en tiempo de ejecución: utiliza las funciones de Allure para agregar ciertos datos al resultado de la prueba durante su ejecución. Este enfoque permite construir los datos dinámicamente.
Ten en cuenta que se recomienda llamar a las funciones de Allure lo más cerca posible del inicio de la prueba. De esta manera, los datos se agregarán incluso si la prueba falla al principio.
API de etiquetas: utiliza el método
tag()
para asignar diversos datos a un escenario particular.La mayoría de las etiquetas requieren valores. Puedes usar dos puntos o un signo igual para separar el valor del nombre, por ejemplo,
@allure.label.epic:WebInterface
es idéntico a@allure.label.epic=WebInterface
.Al usar este enfoque, los datos se agregarán garantizados al resultado de la prueba, independientemente de cómo se ejecute la prueba.
Agregar metadatos
Allure te permite enriquecer tus informes con una variedad de metadatos. Esta información adicional proporciona contexto y detalles para cada prueba, mejorando la utilidad del informe. Consulta la sección de referencia de metadatos para ver la lista completa de lo que se puede agregar.
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.owner("John Doe");
await allure.severity("critical");
await allure.tags("Web interface", "Authentication");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
})
.tag("@allure.label.owner:JohnDoe")
.tag("@allure.label.severity:critical");
.tag("Web interface")
.tag("Authentication")
Organizar las pruebas
Como se describe en Mejorar la navegación en tu informe de pruebas, Allure admite múltiples formas de organizar las pruebas en estructuras jerárquicas.
Para especificar la ubicación de una prueba en la jerarquía basada en el comportamiento:
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.epic("Web interface");
await allure.feature("Essential features");
await allure.story("Authentication");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
})
.tag("@allure.label.epic:WebInterface")
.tag("@allure.label.feature:EssentialFeatures")
.tag("@allure.label.story:Authentication");
Para especificar la ubicación de una prueba en la jerarquía basada en suites:
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.parentSuite("Tests for web interface");
await allure.suite("Tests for essential features");
await allure.subSuite("Tests for authentication");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
})
.tag("@allure.label.parentSuite:TestsForWebInterface")
.tag("@allure.label.suite:TestsForEssentialFeatures")
.tag("@allure.label.subSuite:TestsForAuthentication");
Divide una prueba en pasos
Para crear pasos y sub-pasos, puedes utilizar la función step()
, consulta la referencia.
const allure = require("allure-js-commons");
const { Status } = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.step("Step 1", async () => {
await allure.step("Sub-step 1", async (ctx) => {
await ctx.parameter("foo", "1");
// ...
});
await allure.step("Sub-step 2", async (ctx) => {
await ctx.parameter("foo", "2");
// ...
});
});
await allure.logStep("Step 2", Status.SKIPPED);
});
Describe pruebas parametrizadas
Si utilizas el patrón de pruebas parametrizadas, llama a la función allure.parameter()
para agregar los parámetros al informe de la prueba, consulta la referencia.
const allure = require("allure-js-commons");
Feature("Test My Website");
let accounts = new DataTable(["login", "password"]);
accounts.add(["johndoe", "qwerty"]);
accounts.add(["admin", "qwerty"]);
Data(accounts).Scenario("Test Authentication", async ({ current }) => {
await allure.parameter("Login", current.login);
await allure.parameter("Password", current.password);
// ...
});
Establecer etiquetas globalmente
Cualquier etiqueta, incluidas las personalizadas, se puede establecer a través de las variables de entorno en tu sistema operativo. Aquí tienes un ejemplo (suponiendo que uses el gestor de paquetes npm
):
export ALLURE_LABEL_epic=WebInterface
npx codeceptjs run
$Env:ALLURE_LABEL_epic = "WebInterface"
npx codeceptjs run
Adjuntar capturas de pantalla y otros archivos
En los informes de Allure, tienes la capacidad de adjuntar varios tipos de archivos, lo que puede mejorar considerablemente la comprensión del informe. Una práctica común es adjuntar capturas de pantalla que muestren el estado de la interfaz de usuario en momentos específicos durante la ejecución de las pruebas.
Para obtener instrucciones detalladas sobre cómo implementar los adjuntos, consulta la sección de adjuntos en la referencia de Allure CodeceptJS.
const allure = require("allure-js-commons");
const { ContentType } = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
await allure.attachment("Text file", "This is the file content.", ContentType.TEXT);
await allure.attachmentPath("Screenshot", "/path/to/image.png", {
contentType: ContentType.PNG,
fileExtension: "png",
});
});
Seleccionar pruebas a través de un archivo de plan de pruebas
DANGER
El plan de pruebas no es compatible actualmente con el adaptador Allure CodeceptJS.
Información del entorno
En la página principal del informe, puedes recopilar varios datos sobre el entorno en el que se ejecutaron las pruebas. Para hacerlo, edita el objeto environmentInfo
en la configuración.
Por ejemplo, es una buena idea usarlo para recordar la versión del sistema operativo y la versión de Node.js obtenidas de los objetos os
y process
. Esto puede ayudar al lector futuro a investigar errores que solo son reproducibles en algunos entornos.
const { setCommonPlugins } = require("@codeceptjs/configure");
const os = require("node:os");
setCommonPlugins();
/** @type {CodeceptJS.MainConfig} */
exports.config = {
tests: "tests/**/*.js",
plugins: {
allure: {
enabled: true,
require: "allure-codeceptjs",
environmentInfo: {
os_platform: os.platform(),
os_release: os.release(),
os_version: os.version(),
node_version: process.version,
},
},
},
};
Ten en cuenta que si tu lanzamiento incluye múltiples ejecuciones de CodeceptJS (consulta Cómo funciona), Allure CodeceptJS solo guardará la información del entorno de la última ejecución.