Arquitectura Modular
Los Módulos en Testform permiten empaquetar, parametrizar y reutilizar flujos de prueba complejos (autenticación, checkout, sembrado de datos) a través de múltiples suites y proyectos, siguiendo exactamente el modelo de módulos de Terraform.
Modos de Invocación
Sección titulada «Modos de Invocación»Testform ofrece dos modalidades complementarias para modularizar pruebas:
1. Invocación Directa en Gherkin (@module)
Sección titulada «1. Invocación Directa en Gherkin (@module)»Puedes invocar un módulo directamente sobre un paso de fondo (Background:) o un escenario mediante el tag @module:
Feature: Gestión de Inventario
Background: @module(source="./modules/auth/login.feature", scenario="Login de Administrador", variable={user: "admin", role: "SuperAdmin"}) Given que la sesión de administrador está iniciada
Scenario: Crear nuevo producto en catálogo When el administrador registra el producto "SKU-991" Then el stock muestra 100 unidades2. Registro Central en main.yml
Sección titulada «2. Registro Central en main.yml»Puedes registrar módulos con alias reutilizables y parámetros por defecto (pasando variables de entrada de forma directa y nativa, o mediante el bloque variable:):
module: auth_staging: source: "./modules/auth/login.feature" base_url: "${var.app_url}" user: "staging_tester" password: "${var.test_password}" output: token: value: "${testcase.modules/auth/login.feature.@login.token}"Módulos Remotos (Git Module Registry)
Sección titulada «Módulos Remotos (Git Module Registry)»Testform soporta la descarga e inicialización automática de módulos alojados en repositorios Git remotos durante testform init:
module: shared_auth: source: "git::https://github.com/mi-org/test-modules.git//auth?ref=v1.2.0" base_url: "https://qa.empresa.com"El formato de URL sigue la convención estándar de Terraform:
- Prefijo:
git::https://... - Subdirectorio:
//ruta/subdirectorio - Versión o Tag:
?ref=v1.2.0o?ref=main
Outputs Aislados de Módulos
Sección titulada «Outputs Aislados de Módulos»Los valores exportados por un módulo hijo quedan registrados bajo el namespace del módulo (module.<nombre>.<output>):
Scenario: Consumir token generado por módulo Given configuro el encabezado "Authorization: Bearer ${module.shared_auth.token}" When consulto la lista de usuarios Then el código HTTP es 200Compartición de Políticas y Recursos en Escala Empresarial
Sección titulada «Compartición de Políticas y Recursos en Escala Empresarial»En organizaciones con decenas o cientos de microservicios y proyectos, los módulos de Testform resuelven la redundancia permitiendo empaquetar y distribuir estándares corporativos comunes:
# main.yml (en cada uno de los proyectos de la empresa)module: standards: source: "git::https://github.com/mi-empresa/testform-enterprise-standards.git?ref=v2.0"Al ejecutar testform init, el módulo se descarga automáticamente a .testform/modules/standards/. Testform inspecciona e integra de forma nativa:
- Políticas de Calidad (
.testform/modules/**/policies/*.js): Cualquier regla o compuerta de gobernanza corporativa se activa automáticamente en todos los proyectos. - Plantillas de Recursos (
.testform/modules/**/resources/*.js): Mapeos de Gherkin a Jira, Azure DevOps o APIs internas. - Backends y Providers Personalizados: Controladores de almacenamiento y conexión compartidos entre toda la organización.