Skip to main content
A GitHub deployment is a request to deploy a specific ref — a branch, SHA or tag. Creating one fires a webhook event that external services act on, and that is how QA Wolf hears about your deploys. A deployment status is how the service doing the deploying marks what became of it; QA Wolf acts on a status of success. A deployment is separate from the workflow that created it, so your repository can run any CI it likes as long as something creates the deployment.

Requirements

  • Access to a QA Wolf workspace
  • Permission to install a GitHub App on the organization that owns the repository

Install the GitHub App

1

Enable the GitHub integration

Open Workspace settings → Integrations and enable GitHub. This installs the QA Wolf GitHub App.
2

Select the repositories that deploy

A repository the App does not cover sends nothing, so every repository whose deploys you want tested has to be selected.
3

Confirm the install

Reopen the integrations page and confirm GitHub reads as connected.

Create the deployment

Some hosting providers, Vercel among them, create deployments on their own. Otherwise the workflow creates one and marks it with a deployment status of success once the deploy finishes.
  • The workflow needs permissions: deployments: write.
  • auto_merge: false and required_contexts: [] keep GitHub from refusing or deferring the deployment behind other checks.
  • environment defaults to production. QA Wolf matches it against the workspace’s environments by alias or by slugified name, and creates a new environment when nothing matches. See Deployments.
  • environment_url, set on the deployment status, is the address QA Wolf runs against.
QA Wolf evaluates triggers on a deployment’s first success status only. A deployment left pending starts nothing.

Preview deployments

For PR testing, a preview deployment runs on pull_request, deploys ref: pullRequest.head.sha, and names its environment and environment_url per pull request. Set transient_environment: true so the environment is a preview rather than permanent.

Advanced: pass environment variables into the run

A deployment’s payload is a JSON object GitHub stores alongside the deployment for extra information about it. QA Wolf reads one convention from it: a qawolf object whose environmentVariables is a flat map of string to string. Those values override the environment’s variables for the runs this deployment requests, which is how one deploy can point its flows at a build, a tenant or a feature flag that differs from the environment’s standing configuration. Example:
A payload that does not match this shape is ignored rather than rejected. Every value has to be a string; a number, a boolean or a nested object anywhere inside environmentVariables means QA Wolf reads no variables at all. Quote every value.
The Webhook path takes environmentVariables as a field of the report itself.

Create a trigger

A connected integration starts no runs on its own. Create a deployment trigger whose conditions match the deployments your repository now creates. See Triggers.
Last modified on September 22, 2026