Referencia de Allure Cypress
Estas son las funciones que puedes utilizar para integrar tus pruebas de Cypress con Allure.
En la mayoría de los casos, Allure Cypress ofrece dos formas diferentes de usar una característica: la API en tiempo de ejecución (Runtime API) y la API de metadatos (Metadata API).
API en tiempo de ejecución: usa las funciones de Allure para agregar ciertos datos al resultado de la prueba durante su ejecución. Este enfoque permite construir los datos de manera dinámica.
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 temprano.
API de metadatos: agrega una etiqueta de metadatos (que comienza con
@
) al nombre de la prueba. Allure Cypress la extraerá y actualizará los datos del resultado de la prueba en consecuencia. Al usar este enfoque, se garantiza que los datos se agreguen sin importar cómo se ejecute la prueba.
Metadatos
Asigna la descripción, enlaces y otros metadatos de una prueba.
Description
allure.description(markdown: string): PromiseLike<void>
Establece la descripción de la prueba. Se permite el formato Markdown. Cualquier formato HTML, si está presente, será eliminado por razones de seguridad.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.description("This test attempts to log into the website.");
// ...
});
Owner
allure.owner(name: string): PromiseLike<void>
@allure.label.owner:⟨VALUE⟩
Establece el propietario de la prueba.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.owner("John Doe");
// ...
});
it("Authentication @allure.label.owner:JohnDoe", () => {
// ...
});
Tag
allure.tag(name: string): PromiseLike<void>
allure.tags(...tagsList: string[]): PromiseLike<void>
@allure.label.tag:⟨VALUE⟩
Establece los tags de la prueba.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.tag("Web interface");
allure.tag("Authentication");
// ...
});
it("Authentication @allure.label.tag:WebInterface @allure.label.tag:Authentication", () => {
// ...
});
Severity
allure.severity(name: string): PromiseLike<void>
@allure.label.severity:⟨VALUE⟩
Establece la severidad de la prueba.
Los valores permitidos son: “trivial”, “minor”, “normal”, “critical”, y “blocker”.
import * as allure from "allure-js-commons";
import { Severity } from "allure-js-commons";
it("Authentication", () => {
allure.severity(Severity.CRITICAL);
// ...
});
it("Authentication @allure.label.severity:critical", () => {
// ...
});
Label
allure.label(name: LabelName | string, value: string): PromiseLike<void>
allure.labels(...labelsList: Label[]): PromiseLike<void>
@allure.label.⟨NAME⟩:⟨VALUE⟩
Establece una etiqueta arbitraria para la prueba. Esta es la implementación subyacente para muchas de las otras funciones de Allure.
Puedes llamar a label()
múltiples veces para crear un arreglo de valores bajo el nombre dado.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.label("microservice", "UI");
// ...
});
it("Authentication @allure.label.microservice:UI", () => {
// ...
});
ID
@allure.id:⟨VALUE⟩
Establece el ID de la prueba.
it("Authentication @allure.id:123", () => {
// ...
});
Link
allure.link(url: string, name?: string, type?: LinkType | string): PromiseLike<void>
allure.links(...linksList: Link[]): PromiseLike<void>
allure.issue(url: string, name?: string): PromiseLike<void>
allure.tms(url: string, name?: string): PromiseLike<void>
Agrega un enlace relacionado con la prueba.
Según el type
(que puede ser cualquier cadena, y por defecto es “link”), Allure intentará cargar una plantilla de enlace correspondiente para procesar la URL, como se define en la opción de configuración links
. Si no se encuentra una plantilla para el tipo dado o si el enlace ya representa una URL válida, se dejará sin modificar.
El name
se usará como el texto del enlace. Si se omite, se usará la URL en su lugar.
Para mayor comodidad, Allure proporciona dos funciones abreviadas con tipos de enlace preseleccionados: issue
y tms
.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.issue("AUTH-123", "Related issue");
allure.tms("TMS-456", "Related TMS issue");
allure.link("JIRA-777", "Related Jira issue", "jira");
allure.link("https://example.com/", "Project website");
// ...
});
Jerarquía basada en el comportamiento
allure.epic(name: string): PromiseLike<void>
allure.feature(name: string): PromiseLike<void>
allure.story(name: string): PromiseLike<void>
@allure.label.epic:⟨VALUE⟩
@allure.label.feature:⟨VALUE⟩
@allure.label.story:⟨VALUE⟩
Asigna nombres de épicas, características o historias de usuario para una prueba, como parte de la jerarquía basada en el comportamiento de Allure.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.epic("Web interface");
allure.feature("Essential features");
allure.story("Authentication");
// ...
});
it(
"Authentication" +
" @allure.label.epic:WebInterface" +
" @allure.label.feature:EssentialFeatures" +
" @allure.label.story:Authentication",
() => {
// ...
},
);
Jerarquía basada en suites
allure.parentSuite(name: string): PromiseLike<void>
allure.suite(name: string): PromiseLike<void>
allure.subSuite(name: string): PromiseLike<void>
@allure.label.parentSuite:⟨VALUE⟩
@allure.label.suite:⟨VALUE⟩
@allure.label.subSuite:⟨VALUE⟩
Asigna los nombres de suite principal, suite o sub-suite para una prueba, como parte de la jerarquía basada en suites de Allure.
import * as allure from "allure-js-commons";
it("Authentication", () => {
allure.parentSuite("Tests for web interface");
allure.suite("Tests for essential features");
allure.subSuite("Tests for authentication");
// ...
});
it(
"Authentication" +
" @allure.label.parentSuite:TestsForWebInterface" +
" @allure.label.suite:TestsForEssentialFeatures" +
" @allure.label.subSuite:TestsForAuthentication",
() => {
// ...
},
);
Pasos de prueba
allure.step<T = void>(name: string, body: (context: StepContext) => T | PromiseLike<T>): PromiseLike<T>
allure.logStep(name: string, status?: Status, error?: Error): PromiseLike<void>
Define un paso de prueba o sub-paso con el nombre
dado.
Una función de paso acepta ya sea sin argumentos o un objeto con los siguientes métodos:
displayName()
— sobrescribir el nombre del paso durante su ejecución.parameter()
— indicar parámetros arbitrarios utilizados para el paso. Las firmas disponibles de este método son similares a la implementación a nivel de prueba, consulta Pruebas parametrizadas.
Para crear un paso sin cuerpo, llama a la función logStep()
que acepta un nombre y, opcionalmente, un estado del paso y un objeto de error.
import * as allure from "allure-js-commons";
import { Status } from "allure-js-commons";
it("Authentication", () => {
allure.step("Step 1", () => {
allure.step("Sub-step 1", (ctx) => {
ctx.parameter("foo", "1");
// ...
});
allure.step("Sub-step 2", (ctx) => {
ctx.parameter("foo", "2");
// ...
});
});
allure.logStep("Step 2", Status.SKIPPED);
});
Pruebas parametrizadas
allure.parameter(name: string, value: string, options?: ParameterOptions): PromiseLike<void>
Especifica un nombre
y un valor
de un parámetro que se utilizó durante esta prueba. Consulta Pruebas parametrizadas para más detalles.
El argumento options
, si se proporciona, debe ser un objeto con dos propiedades opcionales: excluded
y mode
.
Si
excluded
se establece en verdadero, Allure no usará el parámetro al comparar el resultado actual de la prueba con el anterior en el historial. Consulta Problema común: los reintentos de una prueba se muestran como pruebas separadas.El
mode
afecta cómo se mostrará el parámetro en el informe. Las opciones disponibles son:"default"
(lo mismo que no especificar ningún modo) — el parámetro y su valor se mostrarán en una tabla junto con otros parámetros."masked"
— el parámetro se mostrará en la tabla, pero su valor será ocultado. Usa este modo para contraseñas, tokens y otros parámetros sensibles."hidden"
— el parámetro y su valor no se mostrarán en el informe de la prueba.
Ten en cuenta que, incluso cuando uses el modo
"masked"
o"hidden"
, aún es posible extraer el valor desde el directorioallure_results
si lo publicas.
import * as allure from "allure-js-commons";
for (const login of ["johndoe", "[email protected]"]) {
it("Authentication", () => {
allure.parameter("login", login);
allure.parameter("time", new Date().toUTCString(), { excluded: true });
// ...
});
}
Archivos adjuntos
allure.attachment(name: string, content: Buffer | string, options: ContentType | string | AttachmentOptions): PromiseLike<void>
allure.attachmentPath(name: string, path: string, options: ContentType | string | Omit<AttachmentOptions, "encoding">): PromiseLike<void>
Agrega un archivo adjunto al resultado de la prueba bajo el nombre
dado. Pasa ya sea el contenido
o la ruta
desde la cual se leerán los datos.
El argumento options
controla el tipo de medio del contenido y la extensión del archivo que se usará si un usuario descarga el archivo adjunto desde el informe de la prueba. Puedes especificar ambas opciones en un objeto (como se muestra para el archivo adjunto de imagen a continuación) o solo especificar el tipo de medio y dejar que Allure deduzca automáticamente la extensión del archivo adecuada (como se muestra para el archivo adjunto de texto a continuación). En cualquiera de los casos, el tipo de medio puede ser un valor de la enumeración ContentType
o cualquier cadena.
import * as allure from "allure-js-commons";
import { ContentType } from "allure-js-commons";
it("Authentication", () => {
// ...
allure.attachment("Text file", "This is the file content.", ContentType.TEXT);
allure.attachmentPath("Screenshot", "/path/to/image.png", {
contentType: ContentType.PNG,
fileExtension: "png",
});
});
TIP
Si tu prueba llama a cy.screenshot()
o si la grabación de video está habilitada en la configuración de Cypress, las imágenes y los archivos de video resultantes se adjuntarán automáticamente a los resultados de la prueba.