Comenzando con Allure WebdriverIO
Genera informes HTML hermosos utilizando Allure Report y tus pruebas de WebdriverIO.
Configuración
1. Prepara tu proyecto
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 de Allure WebdriverIO.
bashnpm install --save-dev @wdio/allure-reporter
bashyarn add --dev @wdio/allure-reporter
bashpnpm install --dev @wdio/allure-reporter
En el archivo
wdio.conf.ts
, agrega['allure', {}]
a la lista de reporteros. Dentro de{}
, puedes especificar las opciones de configuración de Allure WebdriverIO, si es necesario. Por ejemplo:tsexport const config = { // ... reporters: [ "spec", [ "allure", { outputDir: "allure-results", }, ], ], };
2. Ejecuta las pruebas
Ejecuta tus pruebas de WebdriverIO de la misma manera que normalmente las ejecutarías. Por ejemplo:
npm run wdio
yarn run wdio
pnpm run wdio
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, de modo que un informe futuro se basará 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 forma en que se genera el informe. Ejecuta allure --help
para ver la lista completa de opciones.
Escribiendo pruebas
El adaptador de Allure WebdriverIO extiende las características de informe estándar de WebdriverIO al proporcionar capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección resalta 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 Pruebas: Estructura tus pruebas en jerarquías claras para una mejor legibilidad y organización organizar pruebas.
- División en Pasos: Desglosa las pruebas en pasos de prueba más pequeños para facilitar la comprensión y el mantenimiento.
- Pruebas Parametrizadas: Describe claramente los parámetros de las pruebas parametrizadas para especificar diferentes escenarios.
- Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de las pruebas.
- Detalles del Entorno: Incluye información detallada del entorno para acompañar el informe de 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 obtener una lista exhaustiva de lo que se puede agregar.
Para asignar un campo de metadatos, llama al método correspondiente en cualquier momento dentro del cuerpo de un método de prueba. Sin embargo, es muy recomendable asignar todos los metadatos lo antes posible. De lo contrario, existe el riesgo de que la prueba falle antes de haber establecido todos los metadatos, lo cual es perjudicial para la legibilidad del informe de prueba.
import {
addDescription,
addIssue,
addLink,
addOwner,
addSeverity,
addTestId,
TYPE,
} from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addDescription("Attempt to log into the website.", TYPE.MARKDOWN);
addSeverity("critical");
addOwner("John Doe");
addLink("https://dev.example.com/", "Website");
addIssue("AUTH-123");
addTestId("TMS-456");
// ...
});
Organizar pruebas
Como se describe en Mejorar la navegación en tu informe de prueba, Allure soporta 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 comportamiento:
import { addEpic, addFeature, addStory } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addEpic("Web interface");
addFeature("Essential features");
addStory("Authentication");
// ...
});
Para especificar la ubicación de una prueba en la jerarquía basada en suites:
import { addParentSuite, addSubSuite, addSuite } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addParentSuite("Tests for web interface");
addSuite("Tests for essential features");
addSubSuite("Tests for authentication");
// ...
});
Dividir una prueba en pasos
Allure WebdriverIO proporciona tres formas de crear pasos y sub-pasos: "pasos lambda", "pasos noop" y "pasos de bajo nivel", consulta la referencia.
import { step } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
await step("Step 1", async (step) => {
await step.step("Step 1.1", async () => {
// ...
});
await step.step("Step 1.2", async () => {
// ...
});
});
await step("Step 2", async (step) => {
await step.step("Step 2.1", async () => {
// ...
});
await step.step("Step 2.2", async () => {
// ...
});
});
});
import { addStep } from "@wdio/allure-reporter";
import { Status } from "allure-js-commons";
it("Test Authentication"), async () => {
addStep("Successful step");
addStep("Skipped step", undefined, Status.SKIPPED);
addStep(
"Skipped step with attachment",
{ content: "This is attachment.", name: "file.txt", type: "text/plain" },
Status.SKIPPED,
);
});
import { endStep, startStep } from "@wdio/allure-reporter";
import { Status } from "allure-js-commons";
it("Test Authentication"), async () => {
startStep("Step 1");
try {
// ...
endStep();
} catch {
endStep(Status.FAILED);
}
startStep("Step 2");
try {
// ...
endStep();
} catch {
endStep(Status.FAILED);
}
});
Describir pruebas parametrizadas
Dado que las pruebas en WebdriverIO, a diferencia de otros marcos, se escriben como funciones anónimas, es muy fácil implementar el patrón de pruebas parametrizadas, es decir, ejecutar la misma lógica de prueba con diferentes datos de prueba. Para hacerlo, simplemente escribe la prueba dentro de un bucle y usa los parámetros de la variable tanto en su título como en su cuerpo.
Para mostrar un valor de parámetro en el informe de la prueba, pásalo a la función addArgument()
.
import { addArgument } from "@wdio/allure-reporter";
for (const login of ["johndoe", "[email protected]"]) {
it(`Test Authentication as ${login}`, async () => {
addArgument("login", login);
// ...
});
}
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 capturen el estado de la interfaz de usuario en momentos específicos durante la ejecución de la prueba.
Para obtener instrucciones detalladas sobre cómo implementar adjuntos, consulta la sección de adjuntos en la referencia de Allure WebdriverIO.
import { addAttachment } from "@wdio/allure-reporter";
import * as fs from "fs";
it("Test Authentication"), async () => {
// ...
addAttachment("Text", "This is the file content.", "text/plain");
addAttachment("Screenshot", fs.readFileSync("/path/to/image.png"), "image/png");
});
Seleccionar pruebas a través de un archivo de plan de pruebas
DANGER
El plan de pruebas actualmente no es compatible con el adaptador Allure WebdriverIO.
Información del entorno
Para la página principal del informe, puedes recopilar diversa información sobre el entorno en el que se ejecutaron las pruebas.
Por ejemplo, es una buena idea usar esto 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 futuro lector a investigar errores que solo se reproducen en algunos entornos.
import * as os from "os";
export const config = {
// ...
reporters: [
"spec",
[
"allure",
{
reportedEnvironmentVars: {
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 WebdriverIO (consulta Cómo funciona), Allure WebdriverIO solo guardará la información del entorno de la última ejecución.