Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.spurtest.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Connecting Spur to your CI/CD pipeline adds an automated quality gate right before deployment. When a pull request is opened or code is pushed, Spur triggers your test plans and reports results directly in your repository. Failing tests block a merge before anything reaches production.

GitHub

Set up GitHub Actions to run test plans on every pull request.

GitLab

Set up GitLab CI/CD to run test plans on every merge request.

Override URLs

Redirect tests to deploy previews or feature branch URLs at runtime.

Triggering via webhook

As an alternative to the GitHub Actions or GitLab pipeline files, you can trigger Spur test plans directly using a curl request to the Spur webhook. This is useful if you use a CI/CD provider other than GitHub or GitLab, or if you want more control over when tests are triggered. Send a POST request to the Spur webhook endpoint with your API key (found on the GitHub Integration Settings page in Spur):
curl -X POST \
  -H "Content-Type: application/json" \
  -H "SPUR_GITHUB_KEY: <YOUR_API_KEY>" \
  -d '{
    "override_urls": {
      "default": "https://my-app-pr-42.vercel.app"
    }
  }' \
  "https://app.spurtest.com/api/webhook"
The override_urls body is optional — include it to redirect tests to a different URL (such as a deploy preview) without changing your environment settings. See Override URLs for the full configuration options.
You can use this webhook in any CI/CD system, including Jenkins, CircleCI, Bitbucket Pipelines, or custom deployment scripts.

Launching a specific test plan

If you need to trigger a single test plan by ID — for example, to run a specific regression suite as part of a deployment pipeline — use the run_test_plan endpoint instead of the general webhook. Send a POST request to https://app.spurtest.com/api/run_test_plan with your authorization token and a JSON body specifying which test plan to run.

Request fields

FieldTypeRequiredNotes
test_plan_idintegerYesMust be a JSON number, not a string.
request_idstringYesNon-empty string used as the workflow or run request ID.
override_urlsobjectNoIf present, must be a JSON object. Any other type (such as a string or array) is rejected. See Override URLs for configuration details.

Example request

curl -X POST https://app.spurtest.com/api/run_test_plan \
  -H "Authorization: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "test_plan_id": 789,
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "override_urls": {
      "domains": {
        "staging.example.com": "https://preview-abc.example.com"
      },
      "default": "https://staging.example.com"
    }
  }'
The test_plan_id must be a number in the JSON body. Passing it as a string (e.g. "789") will fail validation.