Configuración de Dart y Flutter
La integración de Allure Dart y Flutter se configura mediante un archivo opcional allure-dart.yaml y un conjunto de variables de entorno. Cuando ambos definen el mismo ajuste, como el directorio de resultados, la variable de entorno tiene prioridad.
allure-dart.yaml
Establece los valores predeterminados del proyecto que se guardan en el repositorio: el directorio de resultados, las etiquetas aplicadas a cada prueba y la información de entorno para el reporte.
La integración busca allure-dart.yaml (o allure-dart.yml) desde el directorio de trabajo actual hacia arriba, deteniéndose después de revisar el directorio que contiene pubspec.yaml. De esta manera, cada paquete en un repositorio puede tener su propio archivo de configuración.
resultsDir: build/allure-results
labels:
module: checkout
layer:
- api
environment:
target: localLas claves soportadas:
resultsDir(alias:resultsDirectory) — el directorio donde se escriben los archivos de resultados.labels— etiquetas añadidas a cada resultado de prueba en la ejecución. Puede ser un mapa de nombres de etiqueta a valores (un valor de lista añade una etiqueta por cada elemento), o una lista de entradas{name: ..., value: ...}.environment— un mapa de pares clave-valor que se escribe enenvironment.propertiesdentro del directorio de resultados y se muestra en el widget de Entornos del reporte.
ALLURE_CONFIG
Apunta a un archivo de configuración explícito, en lugar de buscar allure-dart.yaml en el árbol de directorios. La ruta puede ser absoluta o relativa al directorio de trabajo actual.
ALLURE_CONFIG=./configs/allure-ci.yaml dart testSi el archivo no existe, la integración lanza un error.
ALLURE_RESULTS_DIR
Sobrescribe el directorio donde la integración escribe los resultados de Allure. Esto tiene prioridad sobre resultsDir del archivo de configuración.
Cuando ninguno está definido, la integración usa allure-results en el directorio de trabajo actual.
ALLURE_RESULTS_DIR=build/allure-results dart testALLURELABEL*
Añade etiquetas globales a cada resultado de prueba.
Cualquier variable de entorno cuyo nombre comience con ALLURE_LABEL_ se convierte en una etiqueta de Allure. Por ejemplo:
ALLURE_LABEL_epic="Web interface" \
ALLURE_LABEL_owner="QA Team" \
dart testEsto aplica las etiquetas epic y owner a cada prueba en la ejecución. El nombre después del prefijo ALLURE_LABEL_ se usa tal cual (distingue mayúsculas y minúsculas) — se recomienda usar los nombres habituales de Allure (epic, owner, parentSuite, …). ALLURE_LABEL_host y ALLURE_LABEL_thread son casos especiales: en vez de añadir una segunda etiqueta conflictiva, sobrescriben los valores automáticos de host y thread descritos abajo.
ALLURE_TESTPLAN_PATH
Apunta a un archivo JSON que define qué pruebas deben ejecutarse.
El archivo utiliza la forma estándar del plan de pruebas de Allure:
{
"version": "1.0",
"tests": [{ "id": "AUTH-1" }, { "selector": "test/auth_test.dart#authentication#login works" }]
}Ejecuta las pruebas con:
ALLURE_TESTPLAN_PATH=./testplan.json dart testLa selección funciona de la siguiente manera:
- las entradas con
idcoinciden con pruebas que declaran un Allure ID, por ejemplo mediante el marcador en línea@allure.id:AUTH-1, - las entradas con
selectorcoinciden con el nombre completo de la prueba — la ruta del archivo de prueba relativa a la raíz del paquete, los nombres de grupo y el nombre de la prueba, unidos con#.
La forma en que se manejan las pruebas excluidas depende del estilo de integración:
- con los wrappers drop-in
test,groupytestWidgets, las pruebas excluidas se omiten en la declaración: el cuerpo no se ejecuta y no se escribe ningún resultado de Allure (a diferencia de un drop-inskip: true, que se reporta como omitido), - con
installAllure()y los imports originales del framework, las pruebas excluidas aún se ejecutan, pero sus resultados no se escriben en el directorio de resultados.
Si ALLURE_TESTPLAN_PATH no está definido, el archivo no existe o el JSON está mal formado, la integración imprime una advertencia, omite el filtrado y ejecuta las pruebas normalmente. Una lista vacía "tests": [] es válida y no selecciona ninguna prueba.
Etiquetas e identificadores automáticos
La integración añade algunas etiquetas a cada prueba automáticamente:
language=dartframework=dart-test,flutter-testoflutter-integration-test, según el adaptador y el binding activo de Flutterhost— el nombre del host local, o el valor sobrescrito porALLURE_LABEL_hostcuando está definidothread— el ID del proceso actual, o el valor sobrescrito porALLURE_LABEL_threadcuando está definidopackage— la ruta del archivo de prueba relativa a la raíz del paquetetestClass— el nombre del grupo más interno, o el nombre del archivo de prueba cuando la prueba no está en un grupotestMethod— el nombre de la prueba
También deriva etiquetas de suite a partir de la jerarquía de group():
- un solo grupo se convierte en
suite, - dos grupos anidados se convierten en
parentSuiteysuite, - tres o más grupos anidados se convierten en
parentSuite,suiteysubSuite(los nombres de grupo restantes unidos con` > `).
Las llamadas explícitas a allure.parentSuite(...), allure.suite(...) o allure.subSuite(...) sobrescriben las etiquetas derivadas automáticamente.
Finalmente, la integración deriva identificadores estables usados para el historial y los reintentos:
testCaseId— un hash del nombre completo de la prueba,historyId— un hash del nombre completo de la prueba y sus valores de parámetros no excluidos, de modo que la misma prueba con diferentes parámetros se rastrea como entradas de historial separadas.
Ambos pueden sobrescribirse desde el cuerpo de la prueba mediante allure.testCaseId(...) y allure.historyId(...).
Cuando package:test realiza reintentos en una prueba (retry: N), cada intento se escribe como su propio resultado, y todos los intentos comparten el mismo testCaseId/historyId — el reporte los agrupa como reintentos de una sola prueba. Cada intento después del primero lleva un parámetro retry excluido con el número de intento (empezando en 1), por lo que no afecta al ID de historial compartido.