Valores de Salida
El bloque output: permite exportar valores del entorno, métricas e identificadores de recursos generados tras la ejecución de testform apply.
Es la pieza fundamental para integrar Testform con pipelines de CI/CD (GitHub Actions, GitLab CI, Jenkins), permitiendo pasar dinámicamente identificadores de suites o URLs de reportes hacia etapas posteriores (como notificaciones de Slack o gates de despliegue).
1. Declaración de Salidas (output:)
Sección titulada «1. Declaración de Salidas (output:)»Puedes declarar salidas en tu archivo raíz main.yml o en un archivo independiente output.yml:
output: # 1. Atributo retornado por el Provider (ej. Issue en GitHub/GitLab o ID local) smoke_run_id: description: "Identificador del Test Run en el proveedor" value: "${testrun.suites/smoke.run.feature.@tr-1.remoteId}"
smoke_issue_number: description: "Número de Issue asociado al Test Run" value: "${testrun.suites/smoke.run.feature.@tr-1.issueNumber}"
# 2. Título o metadato de un testcase login_case_title: value: "${testcase.auth/login.case.feature.@tc-1.title}"
# 3. Variable de entorno resuelta active_environment: description: "Ambiente destino donde se ejecutó la sincronización" value: "${var.environment}"
# 4. Expresión compuesta o URL dashboard_link: value: "${local.base_url}/reports/${testrun.suites/smoke.run.feature.@tr-1.remoteId}"2. Atributos Canónicos Exportables por Recurso
Sección titulada «2. Atributos Canónicos Exportables por Recurso»Al referenciar ${<scope>.<featurepath>.<tag>.<atributo>}, tienes acceso a los siguientes atributos registrados en el estado:
| Atributo | Descripción | Ejemplo de Salida |
|---|---|---|
.remoteId / .id |
Identificador remoto asignado por el proveedor | local:15 o I_kwDOB... |
.issueNumber / .number |
Número de incidencia en GitHub/GitLab | 15 |
.url |
Enlace web directo a la incidencia o recurso | https://github.com/org/repo/issues/15 |
.title |
Título del escenario o feature | Inicio de sesión exitoso |
.labels |
Lista de etiquetas asociadas | ["testcase", "smoke", "auth"] |
.status |
Estado de ejecución (si aplica) | passed |
.custom_fields.<campo> |
Valor de un campo personalizado configurado | High |
3. Uso en el CLI: testform output
Sección titulada «3. Uso en el CLI: testform output»A. Listar todos los outputs
Sección titulada «A. Listar todos los outputs»testform outputSalida:
active_environment = "staging"login_case_title = "Inicio de sesión exitoso con usuario estándar"smoke_issue_number = 15smoke_run_id = "local:15"B. Consultar un valor específico
Sección titulada «B. Consultar un valor específico»testform output smoke_run_idSalida:
smoke_run_id = "local:15"C. Modo Crudo para Scripts de CI/CD (-raw)
Sección titulada «C. Modo Crudo para Scripts de CI/CD (-raw)»Ideal para almacenar el valor directamente en una variable de entorno en GitHub Actions o Bash:
RUN_ID=$(testform output smoke_run_id -raw)echo "El Test Run creado fue: $RUN_ID"D. Exportar en Formato JSON (-json)
Sección titulada «D. Exportar en Formato JSON (-json)»Permite a herramientas externas parsear la estructura completa:
testform output -json > outputs.jsonSalida JSON:
{ "active_environment": { "sensitive": false, "type": "string", "value": "staging" }, "smoke_run_id": { "sensitive": false, "type": "string", "value": "local:15" }, "smoke_issue_number": { "sensitive": false, "type": "number", "value": 15 }}4. Scoping en Módulos (module.<nombre>.<output>)
Sección titulada «4. Scoping en Módulos (module.<nombre>.<output>)»Si un output se declara dentro de un módulo (por ejemplo, en modules/auth/auth.yml), no contamina el espacio global.
Se referencia estrictamente con el prefijo del módulo:
Given que utilizo el token del módulo "${module.auth.session_token}"Y en la CLI se inspecciona como:
testform output module.auth.session_token -raw