Platform How-Tos

CI/CD Pipeline Integration

Trigger a test run automatically when your pipeline deploys — so a tester can sign off on the build before it reaches production.
CI/CD
GitHub Actions
Jenkins
Enterprise
API

How the Integration Works

Evaficy Smart Test is a manually executed testing tool — a tester opens a run and marks each test case pass or fail step by step. The CI/CD integration does not automate test execution. What it does is give your pipeline a way to kick off that human sign-off at the right moment in your release cycle.

When a pipeline step calls the trigger endpoint, Evaficy creates a new test run in Draft status with all test case snapshots ready. The tester receives a notification, opens the run in Evaficy Smart Test, and executes it normally. The pipeline does not wait — it fires and moves on.

1
Pipeline deploys to Staging

Your CI/CD system completes a build and deploys it.

2
Pipeline calls the trigger endpoint

A single POST request creates a test run with environment and build version pre-filled.

3
Tester executes the run

A QA engineer opens the new run in Evaficy Smart Test and marks each test case pass or fail.

4
Release decision is made

The team reviews the results in Evaficy and decides whether to promote the build.

Use your CI system's native gate for blocking deployments

If you want to block a deployment until QA signs off, use your CI platform's built-in approval mechanism — GitHub Environment protection rules, GitLab manual gates, or Jenkins input steps. These are designed for human approvals and handle timeouts cleanly. The Evaficy trigger creates the run; your CI gate waits for the approval.


How to Set Up the Integration

The integration requires the Enterprise plan and takes a few minutes to configure. You need one token, two IDs, and a pipeline step.

1
Upgrade to the Enterprise plan

The CI/CD trigger endpoint is available on the Enterprise plan. You can upgrade from Settings → Billing or by starting a free trial.

2
Generate a Personal Access Token

Go to Settings → API Tokens and create a new token. Give it a descriptive name like "CI Pipeline". Copy the token immediately — it is only shown once. Store it as a secret in your CI system.

3
Find your Project ID and Scenario ID

Open the project in Evaficy Smart Test. The Project ID appears in the URL when viewing the project. To find the Scenario ID, open the scenario — its ID is also visible in the URL. Both are MongoDB ObjectIDs (24-character hex strings).

4
Add the pipeline step

Add a step to your pipeline that sends a POST request to the trigger endpoint with your token, Project ID, Scenario ID, environment name, and build version. See the examples below.

5
Execute the run in Evaficy Smart Test

After the pipeline step runs, a new test run appears in Test Runs with Draft status. A tester opens it and executes each test case manually, marking pass or fail. The pipeline does not wait — this is a fire-and-forget trigger.

Store your token as a secret

Never commit your Personal Access Token to source control. Add it as a repository secret in GitHub Actions (secrets.EVAFICY_TOKEN), a credential in Jenkins, or the equivalent in your CI system. Tokens can be revoked from Settings → API Tokens at any time.


Endpoint Reference

The trigger endpoint accepts a JSON body and responds immediately. It does not hold the connection open while the run is being executed.

POST https://app.evaficy.com/runs/trigger
Request body
{
  "projectId":   "<24-char Project ID>",       // required
  "scenarioId":  "<24-char Scenario ID>",      // required
  "environment": "Staging",                    // optional
  "buildVersion": "1.4.2",                     // optional
  "runName": "CI Run — build #42"              // optional — auto-generated if omitted
}
Response (201 Created)
{
  "success": true,
  "runId": "<run ID>",
  "runName": "CI Run — Checkout Flow (1.4.2) — 2026-04-10",
  "testCaseCount": 24,
  "message": "Test run created. Open Evaficy Smart Test to execute it."
}
FieldDescription
runId

The ID of the newly created test run. Use it to link directly to the run in the app.

runName

The name assigned to the run — either what you supplied or the auto-generated name.

testCaseCount

How many test case snapshots were included in the run.

message

Human-readable confirmation that the run was created.


Example — GitHub Actions

Add this step to any workflow to trigger a test run after a deployment. Store EVAFICY_TOKEN as a repository secret and set EVAFICY_SCENARIO_ID and EVAFICY_PROJECT_ID as repository variables.

name: Create QA Run

on:
  push:
    branches: [main]

jobs:
  create-qa-run:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger Evaficy test run
        run: |
          curl -s -X POST https://app.evaficy.com/runs/trigger \
            -H "Authorization: Bearer ${{ secrets.EVAFICY_TOKEN }}" \
            -H "Content-Type: application/json" \
            -d '{
              "scenarioId": "${{ vars.EVAFICY_SCENARIO_ID }}",
              "projectId":  "${{ vars.EVAFICY_PROJECT_ID }}",
              "environment": "Staging",
              "buildVersion": "${{ github.sha }}"
            }'
Use the short SHA for a readable build version

github.sha gives the full 40-character commit hash. For a shorter build version label, use ${{ github.sha }} sliced: add a step that runs echo "SHORT_SHA=$(echo $GITHUB_SHA | cut -c1-8)" >> $GITHUB_ENV and reference ${{ env.SHORT_SHA }} in the trigger step.


Example — Jenkins Pipeline

In Jenkins, store the token as a Secret Text credential and reference it with withCredentials. Bind the Scenario ID and Project ID as string parameters or environment variables.

pipeline {
  agent any
  environment {
    EVAFICY_SCENARIO_ID = '<your-scenario-id>'
    EVAFICY_PROJECT_ID  = '<your-project-id>'
  }
  stages {
    stage('Trigger QA Run') {
      steps {
        withCredentials([string(credentialsId: 'evaficy-token', variable: 'EVAFICY_TOKEN')]) {
          sh """
            curl -s -X POST https://app.evaficy.com/runs/trigger \
              -H "Authorization: Bearer ${EVAFICY_TOKEN}" \
              -H "Content-Type: application/json" \
              -d '{"scenarioId":"${EVAFICY_SCENARIO_ID}","projectId":"${EVAFICY_PROJECT_ID}","buildVersion":"${BUILD_NUMBER}","environment":"Staging"}'
          """
        }
      }
    }
  }
}

Test the Endpoint Without a Pipeline

If you do not have a CI/CD pipeline configured yet, you can test the trigger endpoint directly from Evaficy Smart Test. Go to Settings → CI/CD Trigger Test, paste your Personal Access Token, select a project and scenario, and click Send Test Request. If the run is created successfully, it will appear in Test Runs with Draft status.


Common Errors

Most failures are due to a missing or expired token, a wrong plan, or incorrect IDs. The API always returns a message field explaining what went wrong.

401 — User not found

The Bearer token is invalid or has been deleted. Regenerate a Personal Access Token from Settings → API Tokens and update your pipeline secret.

403 — Feature not available on your plan

The trigger endpoint requires the Enterprise plan. Upgrade from Settings → Billing.

400 — scenarioId and projectId are required

Both IDs must be supplied in the request body. Double-check your pipeline variables contain the correct 24-character hex IDs.

404 — Scenario not found

The scenarioId does not match any scenario in the given project. Verify the Scenario ID from the scenario URL in Evaficy Smart Test.


Gate your releases on a real test sign-off

The CI/CD trigger is available on the Enterprise plan — connect your pipeline and make human-verified QA part of every release.

Start your trial