Referencia de Allure WebdriverIO
Estas son las funciones que puedes usar para integrar tus pruebas de WebdriverIO con Allure.
Metadatos
Asigna la descripción, enlaces y otros metadatos de una prueba.
Description
addDescription(name: string, descriptionType: string)
Establece la descripción de la prueba.
El segundo argumento determina cómo se renderizará el texto. Si es igual a TYPE.MARKDOWN
, el texto será interpretado utilizando la sintaxis de Markdown. Cualquier formato HTML, si está presente, será eliminado por razones de seguridad. Para mantener el HTML intacto, pasa TYPE.HTML
al segundo argumento.
INFO
Usar descripciones en HTML no es seguro y puede romper el diseño del informe de pruebas o incluso crear un vector de ataque XSS para tu organización.
import { addDescription, TYPE } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addDescription("Attempt to log into the website.", TYPE.MARKDOWN);
// ...
});
Owner
addOwner(owner: string)
Establece el propietario de la prueba.
import { addOwner } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addOwner("John Doe");
// ...
});
Tag
addTag(tag: string)
Establece los tags de la prueba.
import { addTag } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addTag("web interface");
addTag("authentication");
// ...
});
Severity
addSeverity(severity: string)
Establece la severidad de la prueba.
Los valores permitidos son: “trivial”, “minor”, “normal”, “critical”, and “blocker”.
import { addSeverity } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addSeverity("critical");
// ...
});
Label
addLabel(name: string, value: string)
Establece una etiqueta arbitraria para la prueba. Esta es la implementación subyacente de muchas otras funciones de Allure.
El primer argumento de la función es el nombre de la etiqueta. Puede ser cualquier cadena.
Puedes llamar a addLabel()
varias veces para crear un array de valores bajo el nombre dado.
import { addLabel } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addLabel("my custom label", "value");
// ...
});
ID
addAllureId(allureId: string)
Establece el ID de la prueba.
import { addAllureId } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addAllureId("123");
// ...
});
Link
addLink(url: string, name?: string, type?: string)
addIssue(issue: string)
addTestId(testId: string)
Añade un enlace relacionado con la prueba.
Según el type
(que puede ser cualquier cadena), Allure intentará cargar un patrón de enlace correspondiente para procesar la URL, según lo definido por las opciones de configuración issueLinkTemplate
y tmsLinkTemplate
. Si no se encuentra un patrón para el tipo dado, el enlace no será añadido.
El name
será usado como el texto del enlace. Si se omite, se utilizará la URL en su lugar.
Para mayor comodidad, Allure proporciona dos funciones abreviadas con tipos de enlace pre-seleccionados: addIssue()
y addTestId()
.
import { addIssue, addLink, addTestId } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addLink("https://dev.example.com/", "Website");
addIssue("AUTH-123");
addTestId("TMS-456");
// ...
});
Si usas el ejecutor Cucumber.js y tienes habilitada la opción useCucumberStepReporter
, también puedes añadir enlaces mediante las etiquetas Gherkin @issue
y @testId
.
Feature: Labels
@issue=AUTH-123
@testId=TMS-456
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Jerarquía basada en el comportamiento
addEpic(epicName: string)
addFeature(featureName: string)
addStory(storyName: string)
Asigna nombres de epic, funciones o historias de usuario para una prueba, como parte de la jerarquía basada en el comportamiento de Allure.
import { addEpic, addFeature, addStory } from "@wdio/allure-reporter";
it("Test Authentication"), async () => {
addEpic("Web interface");
addFeature("Essential features");
addStory("Authentication");
// ...
});
TIP
Si estás utilizando el ejecutor Cucumber.js, Allure WebdriverIO usa la jerarquía de los archivos Gherkin por defecto. El comportamiento exacto depende de la opción useCucumberStepReporter
.
Jerarquía basada en la suite
addParentSuite(suiteName: string)
addSuite(suiteName: string)
addSubSuite(suiteName: string)
Asigna el nombre de la suite, como parte de la jerarquía basada en suites de Allure.
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");
// ...
});
TIP
Si estás utilizando el ejecutor Cucumber.js, Allure WebdriverIO usa la jerarquía de los archivos Gherkin por defecto. El comportamiento exacto depende de la opción useCucumberStepReporter
.
Pasos de la prueba
step(name: string, body: StepBodyFunction): Promise<void>
addStep(title: string, { content, name, type }?: any, status?: Status)
startStep(title: string)
endStep(status?: Status)
Define los pasos de la prueba.
Existen tres formas de definir un paso.
Pasos Lambda
Escribe un paso de prueba en una función lambda asincrónica y pásalo a
allureReporter.step()
. La función lambda debe aceptar ningún argumento o un solo argumento del tipoAllureCommandStepExecutable
. Puedes crear sub-pasos dentro del paso actual llamando al métodostep()
de este argumento.Pasos No-op
Si llamas a
allureReporter.addStep()
, Allure añadirá al informe un paso no-op. Esto permite un estilo de informe tipo registro dentro de una prueba o dentro de un paso más grande. Un paso no-op finaliza inmediatamente después de que comienza y no puede tener sub-pasos ni parámetros.El segundo argumento opcional indica el estado que se mostrará para el paso en el informe. Los valores permitidos son:
Status.PASSED
(el valor predeterminado),Status.FAILED
,Status.BROKEN
yStatus.SKIPPED
.Pasos de bajo nivel
Llama a
allureReporter.startStep()
yallureReporter.endStep()
para indicar manualmente a Allure WebdriverIO cuando un paso comienza o termina. Se recomienda usar bloquestry..catch
para asegurar que los pasos se finalicen independientemente de las excepciones lanzadas durante su ejecución, consulta el ejemplo a continuación.El argumento opcional para
endStep()
indica el estado que se mostrará para el paso en el informe. Los valores permitidos son:Status.PASSED
(el valor predeterminado),Status.FAILED
,Status.BROKEN
yStatus.SKIPPED
.
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);
}
});
TIP
Por defecto, Allure WebdriverIO añade automáticamente un paso para cada comando WebDriver, con los detalles de la solicitud y los datos de la respuesta añadidos como adjuntos a nivel de paso. Esto se puede desactivar, consulta la opción de configuración disableWebdriverStepsReporting
.
Pruebas parametrizadas
allureReporter.addArgument(name: string, value: string)
Dado que las pruebas en WebdriverIO, a diferencia de algunos 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 el valor de un 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);
// ...
});
}
Archivos adjuntos
addAttachment(name: string, content: string | Buffer | object, type: string)
Añade content
como un archivo adjunto al resultado de la prueba. El contenido puede ser una cadena de texto o un Buffer
codificado en base64. Como argumento type
, pasa el tipo de medio del contenido.
Puedes usar datos generados por cualquier función, no necesariamente leídos desde un archivo real.
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");
});
TIP
Por defecto, Allure WebdriverIO incluye automáticamente en el informe todas las capturas de pantalla tomadas mediante la función saveScreenshot()
de WebdriverIO. Esto se puede desactivar, consulta la opción de configuración disableWebdriverScreenshotsReporting
.