Pipelines tab
The Pipelines tab of the CI/CD Pipelines screen (/pipelines?tab=pipelines) is where you define pipeline mappings — the rules that say “when this pipeline triggers, run this” — and generate the CI config that calls them.
The mapping list
Section titled “The mapping list”Each card shows the target type (Suite, Cycle, or Command), the mapping name, what it runs, any overrides, a commit sync marker when enabled, and when it was last triggered. Three actions sit on the right:
| Action | What it does |
|---|---|
| Config icon | Opens Wire into CI — the CLI snippet and generated pipeline config. |
| Pencil | Edit the mapping. |
| Trash | Delete the mapping. |
Creating a mapping
Section titled “Creating a mapping”
Mapping name (the trigger key)
Section titled “Mapping name (the trigger key)”This is what CI passes to identify the run. Because the name is embedded in generated config files and commands, it accepts only letters, numbers, spaces, dots, dashes, and underscores, must start with a letter or number, and is capped at 60 characters. The hint under the field shows the exact CLI command your name produces, updating as you type.
Execution target
Section titled “Execution target”| Target | Use it when | Notes |
|---|---|---|
| Suite | The common case — a regression or smoke suite. | Runs with the suite’s saved browser matrix, concurrency, and retries. |
| Cycle | Release gates that should update cycle tracking. | Pick a plan, then a cycle. Cycles with no mapped automation scripts are disabled — a CI trigger could not run them. |
| Command | A one-off filter, e.g. npx playwright test --grep @smoke. | The command carries its own browser/environment, so overrides are hidden for this target. |
Overrides
Section titled “Overrides”For suite and cycle targets you can pin an Environment and a Browser for this pipeline — for example the same regression suite running staging + Chrome for the PR gate and the full matrix nightly. Both pickers use the same icons as the rest of Testver. Leave them on Default to inherit the target’s saved settings.
Three layers decide how a triggered run executes, highest first:
- Trigger-time overrides — a small whitelist (environment, browser) passed in the trigger payload. Audit-logged with the run.
- Mapping overrides — what you set here. Persistent and visible in the UI.
- The suite’s or cycle’s saved settings — the default. With no overrides at all, a CI trigger runs exactly what clicking Run in the UI would run.
Commit sync
Section titled “Commit sync”Check out the triggering commit before running. When enabled, Testver checks out the commit from the trigger payload before executing, then restores the previous branch afterwards. This guarantees the gate tests the same code the build is building.
It is deliberately conservative: if the workspace has uncommitted changes, sync is skipped and a warning is recorded on the run rather than disturbing your working copy. The same applies when the commit can’t be reached — the run proceeds on the current tree and says so.
Status push-back
Section titled “Status push-back”Push commit statuses to the git host. Testver posts a pending status when the run starts and a success / failure status when it finishes, so pull requests show the verdict. This is also what makes fire-and-forget mode possible.
| Provider | Repository format | Token needs |
|---|---|---|
| GitHub | owner/repo | PAT with repo:status (classic) or Commit statuses read/write (fine-grained). |
| GitLab | group/project or the numeric project id | Access token with api scope. |
| Azure DevOps | org/project/repo | PAT with Code (Status) scope. |
| Bitbucket | workspace/repo | username:app_password with Repositories:Write (or a workspace/repository access token). |
A base URL field supports self-hosted installs (GitHub Enterprise, self-managed GitLab, Azure DevOps Server). The token is stored on the server and never returned to the browser — when editing an existing mapping the field shows a mask; leave it untouched to keep the saved token, or type a new value to replace it.
Enabled
Section titled “Enabled”Disabling a mapping keeps it configured but rejects triggers — useful for temporarily muting a gate without deleting it or touching the CI config.
Wiring a mapping into CI
Section titled “Wiring a mapping into CI”
The config icon on a mapping opens the Wire into CI dialog:
- Testver server URL — the address your CI runners will call. Defaults to the address you’re browsing; change it if runners reach the server by a different hostname.
- CLI snippet — a ready
testver trigger …command for scripts, cron jobs, or a quick manual test. - Platform — pick one of the six supported CI systems: GitHub Actions, GitLab CI, Jenkins, Azure Pipelines, Bitbucket Pipelines, or CircleCI. The selected card shows a ✓, and the panel below it tells you exactly where that platform expects the
TESTVER_CI_TOKENsecret. - Gate mode — Wait & gate or Fire-and-forget; see below.
- Generate Config → an editable preview → Save to project, which writes the file into your repository for you to commit.
Gate mode
Section titled “Gate mode”| Mode | How the build gets its verdict | Use when |
|---|---|---|
| Wait & gate (exit code) | The job polls until the run finishes and exits 0 or 1. | The default. Simple, self-contained, works without any git-host token. |
| Fire-and-forget (status push-back) | The job triggers and exits immediately; the commit status Testver pushes carries the verdict. | Long suites, where holding a hosted CI runner open would waste CI minutes. |
Generated files
Section titled “Generated files”| Platform | Generated file | Secret setup |
|---|---|---|
| GitHub Actions | .github/workflows/testver-gate.yml | TESTVER_CI_TOKEN repository secret. |
| GitLab CI | .gitlab-ci.yml | TESTVER_CI_TOKEN masked CI/CD variable. |
| Jenkins | Jenkinsfile.testver-gate | Secret Text credential with id testver-ci-token; agent needs curl + jq. |
| Azure Pipelines | azure-testver-gate.yml | TESTVER_CI_TOKEN secret pipeline variable. |
| Bitbucket Pipelines | bitbucket-pipelines.yml | TESTVER_CI_TOKEN as a secured repository variable. |
| CircleCI | .circleci/config.yml | TESTVER_CI_TOKEN as a project environment variable (or context). |
Troubleshooting
Section titled “Troubleshooting”| Symptom | Likely cause / fix |
|---|---|
| Create/Save button stays disabled | The name is empty or contains disallowed characters, no target is selected, or status push-back is enabled without a repo and token. |
| A cycle is greyed out in the dropdown | It has no mapped automation scripts. Map them under Script Mapping. |
| Overrides disappeared when I chose Command | Expected — a raw command carries its own browser/environment, so overrides don’t apply. |
| Editing a mapping shows a masked token | By design: status-push tokens are never sent back to the browser. Leave the mask to keep the token, or type a new one to replace it. |
| ⚠ “Commit sync skipped — workspace has uncommitted changes” | Intentional: Testver never disturbs a dirty working copy. Commit or stash, or leave commit sync off on that server. |
| Status push warning on a run | The git host rejected the status. Check the token scope, the repository format for that provider, and the base URL for self-hosted installs. |
Related
Section titled “Related”- CI/CD Pipelines overview — the concept, the CLI, and prerequisites.
- CI Tokens tab — the token your generated config needs.
- CI Runs tab — what happens after a mapping fires.
- Test Explorer → Suites · Test Plans & Cycles · Script Mapping