Skip to content

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.


Testform provides two complementary methods for consuming modules:

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 units

Register reusable module instances with native input arguments or explicit variable: blocks:

main.yml
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}"

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.0 or ?ref=main

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 OK

Enterprise-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:

  1. Quality Policies (.testform/modules/**/policies/*.js): Corporate quality gates apply immediately to all projects.
  2. Resource Templates (.testform/modules/**/resources/*.js): Shared field mappings to Jira, Azure DevOps, or internal tools.
  3. Custom Backends & Providers: Centrally maintained cloud and API connectors.