Referencia de Allure CodeceptJS
Estas son las funciones que puedes usar para integrar tus pruebas de CodeceptJS con Allure Report.
En la mayoría de los casos, Allure CodeceptJS proporciona dos formas diferentes de usar una característica: la API en tiempo de ejecución y la API de etiquetas.
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 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 temprano.
API de etiquetas: usa el método
tag()
para asignar diversos datos a un escenario particular.La mayoría de las etiquetas requieren valores. Puedes usar un colon 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 garantizarán que se agreguen al resultado de la prueba sin importar cómo se ejecute la prueba en sí.
Metadatos
Asigna una descripción, enlaces y otros metadatos a la 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 motivos de seguridad.
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.description("This test attempts to log into the website.");
// ...
});
Owner
allure.owner(name: string): PromiseLike<void>
@allure.label.owner:⟨VALOR⟩
Establece el propietario de la prueba.
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.owner("John Doe");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
}).tag("@allure.label.owner:JohnDoe");
Tag
allure.tag(name: string): PromiseLike<void>
allure.tags(...tagsList: string[]): PromiseLike<void>
Establece los tags de la prueba.
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.tags("Web interface", "Authentication");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
})
.tag("Web interface")
.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”
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.severity("critical");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
}).tag("@allure.label.severity:critical");
Label
allure.label(name: LabelName | string, value: string): PromiseLike<void>
allure.labels(...labelsList: Label[]): PromiseLike<void>
@allure.label.⟨NOMBRE⟩:⟨VALOR⟩
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()
varias veces para crear un arreglo de valores bajo el nombre dado.
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.label("my custom label", "value");
// ...
});
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
}).tag("@allure.label.MyCustomLabel:value");
ID
@allure.id:⟨VALOR⟩
Establece el ID de la prueba.
Feature("Test My Website");
Scenario("Test Authentication", async () => {
// ...
}).tag("@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 tipo
(que puede ser cualquier cadena, por defecto es "link"), Allure intentará cargar una plantilla de enlace correspondiente para procesar la URL, tal 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 deja sin modificaciones.
El nombre
se utilizará 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 predefinidos: issue
y tms
.
const allure = require("allure-js-commons");
Feature("Test My Website");
Scenario("Test Authentication", async () => {
await allure.link("https://dev.example.com/", "Website");
await allure.issue("AUTH-123", "https://issues.example.com/AUTH-123");
await allure.tms("TMS-456", "https://tms.example.com/TMS-456");
// ...
});
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:⟨VALOR⟩
@allure.label.feature:⟨VALOR⟩
@allure.label.story:⟨VALOR⟩
Asigne nombres de épicas, características o historias de usuario a una prueba, como parte de la jerarquía basada en el comportamiento de Allure.
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");
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:⟨VALOR⟩
@allure.label.suite:⟨VALOR⟩
@allure.label.subSuite:⟨VALOR⟩
Asigne el nombre de la suite, como parte de la jerarquía basada en suites de Allure.
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");
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
proporcionado.
La función step()
es asincrónica, y acepta una función anónima asincrónica como su segundo argumento. Observe las palabras clave async
y await
en el siguiente ejemplo.
La función anónima puede aceptar ninguno o un solo argumento de la clase StepContext
. Este objeto proporciona los siguientes métodos:
displayName()
— sobrescribe el nombre del paso durante su ejecución.parameter()
— indica parámetros arbitrarios utilizados para el paso. Las firmas disponibles de este método son similares a la implementación de pruebas en general, consulte Pruebas parametrizadas.
Para crear un paso sin un cuerpo, llame a la función logStep()
que acepta un nombre y, opcionalmente, un estado del paso y un objeto de error.
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);
});
Pruebas parametrizadas
allure.parameter(name: string, value: string, options?: ParameterOptions): PromiseLike<void>
Especifica un nombre
y valor
de un parámetro que se usó durante esta prueba. Consulte 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 true, Allure no usará el parámetro cuando compare el resultado actual de la prueba con el anterior en el historial. Consulte Error 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"
(igual 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. Utilice 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.
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);
// ...
});
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 adjunto al resultado de la prueba bajo el nombre
dado. Proporcione el contenido
o la ruta
desde donde 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 adjunto desde el informe de la prueba. Puede especificar ambas opciones en un objeto (como se muestra para el 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 apropiada (como se muestra para el adjunto de texto a continuación). En cualquier caso, el tipo de medio puede ser un valor de la enumeración ContentType
o cualquier cadena.
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",
});
});