Configuración de Allure TestCafe
El reporter de Allure TestCafe acepta opciones de configuración que controlan dónde se guardan los resultados, cómo se capturan los pasos, cómo se formatean los enlaces y qué datos adicionales se incluyen en el reporte.
La configuración solo está disponible cuando se utiliza la API runner. Al registrar el reporter por nombre en un archivo de configuración o en la CLI, el reporter se ejecuta con la configuración predeterminada.
Para establecer opciones, pasa un objeto de configuración a createAllureTestCafeReporter():
const createTestCafe = require("testcafe");
const createAllureTestCafeReporter = require("testcafe-reporter-allure-official");
const { createAllureTestPlanFilter } = require("testcafe-reporter-allure-official/testplan");
const { Status } = require("allure-js-commons");
const os = require("node:os");
(async () => {
const testcafe = await createTestCafe();
try {
await testcafe
.createRunner()
.src(["tests/**/*.test.js"])
.browsers(["chromium:headless"])
.filter(createAllureTestPlanFilter())
.reporter(
createAllureTestCafeReporter({
resultsDir: "allure-results",
captureActionsAsSteps: true,
links: {
issue: {
nameTemplate: "Issue #%s",
urlTemplate: "https://issues.example.com/%s",
},
tms: {
nameTemplate: "TMS #%s",
urlTemplate: "https://tms.example.com/%s",
},
jira: {
urlTemplate: (v) => `https://jira.example.com/browse/${v}`,
},
},
categories: [
{
name: "Known flaky tests",
messageRegex: /timeout/,
matchedStatuses: [Status.BROKEN],
},
],
environmentInfo: {
os_platform: os.platform(),
os_release: os.release(),
node_version: process.version,
},
globalLabels: [{ name: "layer", value: "e2e" }],
}),
)
.run();
} finally {
await testcafe.close();
}
})();resultsDir
Ruta al directorio donde el reporter guardará los resultados de prueba, consulta Cómo funciona. Si el directorio no existe, se creará. El valor predeterminado es allure-results.
captureActionsAsSteps
Si es true (el valor predeterminado), el reporter captura automáticamente las acciones y aserciones de TestCafe como pasos de Allure. Se capturan las siguientes acciones:
- Navegación:
t.navigateTo() - Interacciones:
t.click(),t.doubleClick(),t.rightClick(),t.hover(),t.drag(),t.dragToElement() - Entrada:
t.typeText(),t.selectText(),t.selectTextAreaContent(),t.pressKey(),t.setFilesToUpload(),t.clearUpload() - Desplazamiento:
t.scroll(),t.scrollBy(),t.scrollIntoView() - Frames y roles:
t.switchToIframe(),t.useRole() - Capturas de pantalla:
t.takeScreenshot(),t.takeElementScreenshot() - HTTP:
t.request() - Esperas:
t.wait() - Aserciones:
t.expect(...).eql(),t.expect(...).ok()y otras cadenas de expect - Acciones personalizadas:
t.runCustomAction()
Los pasos automáticos se anidan bajo cualquier paso explícito creado con allure.step(). Cuando una aserción falla, el paso correspondiente se marca como fallido con los valores actual y expected en los detalles de estado.
Establece en false para desactivar la captura automática de pasos:
createAllureTestCafeReporter({
captureActionsAsSteps: false,
});links
Un mapeo de plantillas que se pueden usar para construir URLs completas a partir de identificadores cortos.
Para cada tipo de enlace (consulta allure.link()), puedes especificar lo siguiente:
nameTemplate— una plantilla o función para generar el nombre del enlace cuando no se proporciona.urlTemplate— una plantilla o función para generar la dirección del enlace cuando se pasa un identificador corto en lugar de una URL completa.
Las plantillas pueden ser cadenas (con %s donde debe colocarse el identificador) o funciones (que aceptan el identificador y devuelven el resultado).
Por ejemplo, con la configuración anterior, await allure.issue("AUTH-123", "Related issue") producirá un enlace con el nombre "Related issue" y la dirección https://issues.example.com/AUTH-123. Si no se pasa un nombre, el valor predeterminado será Issue #AUTH-123.
Las plantillas de enlace también se pueden establecer mediante claves meta. Un valor en "allure.link.<type>" meta se trata como una URL o identificador sin procesar que se procesa a través de la plantilla correspondiente, si está configurada.
categories
Define categorías personalizadas que se usarán para distinguir los resultados de prueba por sus errores; consulta Categorías.
Esta configuración es un array, cada elemento es un objeto que representa una categoría personalizada. Los objetos pueden tener las siguientes propiedades:
name— el nombre de la categoría.messageRegex— una expresión regular que debe coincidir con el mensaje del resultado de prueba.traceRegex— una expresión regular que debe coincidir con el trace del resultado de prueba.matchedStatuses— un array de estados que debe tener el resultado de prueba.flaky— si el resultado de prueba debe marcarse como inestable.description— una descripción que se muestra en el panel de categorías para esta categoría. Se admite Markdown.descriptionHtml— una descripción HTML que se muestra en el panel de categorías para esta categoría.
Este formato se basa en el archivo de categorías heredado de Allure y es compatible con todas las versiones de Allure Report. Allure Report 3 también proporciona una configuración nativa de categorías más rica — con coincidencia por etiquetas, controles de agrupación, transiciones y más — que se establece directamente en el archivo de configuración de Allure Report en lugar de en el reporter.
environmentInfo
Pares clave-valor que se mostrarán en la página principal del reporte, consulta Información de entorno.
globalLabels
Etiquetas aplicadas a cada resultado de prueba en la ejecución. Útil para etiquetar todos los resultados con una capa, equipo o identificador de entorno sin repetirlo en cada prueba.
Se pueden proporcionar como un array de objetos etiqueta { name, value }:
createAllureTestCafeReporter({
globalLabels: [
{ name: "layer", value: "e2e" },
{ name: "team", value: "frontend" },
],
});O como un objeto simple que mapea nombres de etiqueta a valores. Un nombre puede mapear a una cadena o a un array de cadenas:
createAllureTestCafeReporter({
globalLabels: {
layer: "e2e",
team: "frontend",
},
});createAllureTestPlanFilter
createAllureTestPlanFilter() acepta una opción opcional:
cwd— el directorio usado para resolver unALLURE_TESTPLAN_PATHrelativo. Úsalo en monorepos donde TestCafe no se ejecuta desde la raíz del paquete:
const { createAllureTestPlanFilter } = require("testcafe-reporter-allure-official/testplan");
module.exports = {
// ...
filter: createAllureTestPlanFilter({ cwd: __dirname }),
};