Skip to main content

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, the commit SHA, and the repository in owner/repo format. You can find your API key on the GitHub Integration Settings page in Spur. All three headers are required:
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.

Running specific test plans

By default, the webhook runs every test plan enabled on the GitHub Integration Settings page. To run only some of them, add the test_plan_ids query parameter to the webhook URL. Separate multiple IDs with commas. A test plan’s ID is the number at the end of its URL in Spur, for example app.spurtest.com/test-plans/789:
Use this to run a different test plan from each workflow. For example, you can run a staging plan on pull requests to develop and a UAT plan on pull requests to staging.
The parameter name is plural: test_plan_ids. Spur ignores test_plan_id and runs every enabled test plan.Spur runs only the listed test plans that are enabled for the integration. If none of the IDs is enabled, no run starts, and the webhook still returns a success response. If an ID is not a whole number, Spur rejects the request with Invalid test plan ids and starts no run.