Configure Providers
Providers in Testform are decoupled modular plugins that connect declarative BDD test specifications with quality management and state platforms (GitHub Issues / Projects, GitLab, Jira, or Local Ledger).
Just as in Terraform a provider manages communication with cloud APIs (AWS, Azure, GCP) to record infrastructure state, in Testform a provider manages communication with the issue tracker or state storage to create, update, close, and version test cases and execution runs as code in Git.
Declaration in main.yml
Section titled “Declaration in main.yml”Providers are configured in the root main.yml file:
testform: required_version: ">= 1.0.0" backend: local: path: "./testform.state"
provider: github: owner: "my-organization" repository: "my-web-platform" token_env: "GITHUB_TOKEN" jira: host: "my-company.atlassian.net" project_key: "QA" email: "qa-team@company.com"Available Providers
Section titled “Available Providers”| Provider | Storage Type | Recommended Usage |
|---|---|---|
local |
Local testform.state file |
Agile projects, local suites, and offline Git repositories with no external dependencies. |
github |
GitHub Issues + GitHub Projects (GraphQL) | Teams centralizing specifications and test tracking in GitHub Enterprise / Cloud. |
gitlab |
GitLab Issues + Scoped Labels | GitLab CI/CD pipelines tracking tests on GitLab issue boards. |
| Custom Providers | Registered via registerResource() |
Custom integrations with proprietary QA platforms, TestRail, or Xray. |
GitHub Provider Detailed Setup (provider: github)
Section titled “GitHub Provider Detailed Setup (provider: github)”When using GitHub as your test management platform, Testform interfaces with the GraphQL API of GitHub Projects (Projects V2) and the REST API of GitHub Issues. To guarantee seamless two-way synchronization, your target repository and organization must meet the following configuration requirements:
1. GitHub Projects (Projects V2) Board
Section titled “1. GitHub Projects (Projects V2) Board”- An active GitHub Projects V2 board (at organization or user level) linked to the target repository.
- The project board must contain a Single-select field named strictly
Status. - The
Statusfield must contain the following exact option values:TodoDonepassedfailedblockedskippedunexecuted
2. Required Labels
Section titled “2. Required Labels”Testform maps declarative resources (testcase, testrun, testplan, etc.) to issue labels. The following 5 labels are mandatory:
bugtestcasetestplantestreporttestrun
3. Authentication & Token Permissions (PAT)
Section titled “3. Authentication & Token Permissions (PAT)”The authentication token configured via token_env or testform login must have the appropriate scopes:
- Classic Personal Access Token (PAT):
- Scope
repo(Full control of private and public repositories). - Scope
project(Read and write GitHub projects).
- Scope
- Fine-Grained Personal Access Token:
- Repository permission:
Issuesset to Read and write. - Organization permission:
Projectsset to Read and write.
- Repository permission:
Provider Initialization (testform init)
Section titled “Provider Initialization (testform init)”Before running a plan, testform init validates credentials and sets up the workspace:
testform initDuring initialization:
- Verifies access tokens (e.g.
GITHUB_TOKENorGITLAB_TOKEN). - Configures the state backend and creates the state lock file (
.lock). - Verifies repository access and project boards.