Modular Architecture
Modules in Testform package, parameterize, and reuse complex testing workflows (authentication, shopping cart seeding, teardown routines) across different feature suites and repositories, matching Terraform’s module architecture.
Invocation Modes
Section titled “Invocation Modes”Testform provides two complementary methods for consuming modules:
1. Direct Tag Invocation (@module)
Section titled “1. Direct Tag Invocation (@module)”Invoke a module directly over a Background: step or a Scenario: using the @module tag:
Feature: Inventory Management
Background: @module(source="./modules/auth/login.feature", scenario="Admin Login", variable={user: "admin", role: "SuperAdmin"}) Given admin session is active
Scenario: Create new product in catalog When admin registers product "SKU-991" Then stock reflects 100 units2. Centralized Declaration in main.yml
Section titled “2. Centralized Declaration in main.yml”Register reusable module instances with native input arguments or explicit variable: blocks:
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}"Remote Modules (Git Module Registry)
Section titled “Remote Modules (Git Module Registry)”Testform downloads and verifies modules hosted in remote Git repositories during testform init:
module: shared_auth: source: "git::https://github.com/my-org/test-modules.git//auth?ref=v1.2.0" base_url: "https://qa.company.com"The URL adheres to standard Terraform module syntax:
- Prefix:
git::https://... - Subdirectory:
//path/submodule - Branch / Tag:
?ref=v1.2.0or?ref=main
Isolated Module Outputs
Section titled “Isolated Module Outputs”Values exported by a child module are namespaced under module.<name>.<output>:
Scenario: Consume session token produced by child module Given request header is set to "Authorization: Bearer ${module.shared_auth.token}" When user queries protected endpoint Then response status is 200 OKEnterprise-Scale Governance & Resource Sharing
For enterprises managing hundreds of microservices, modules eliminate configuration duplication:
# main.yml (across all 200 projects)module: standards: source: "git::https://github.com/my-org/testform-enterprise-standards.git?ref=v2.0"Running testform init installs the module into .testform/modules/standards/. Testform natively auto-discovers and enforces:
- Quality Policies (
.testform/modules/**/policies/*.js): Corporate quality gates apply immediately to all projects. - Resource Templates (
.testform/modules/**/resources/*.js): Shared field mappings to Jira, Azure DevOps, or internal tools. - Custom Backends & Providers: Centrally maintained cloud and API connectors.