Diffie + GitLab CI

Run Diffie tests in your GitLab CI/CD pipeline

Overview

Add Diffie to your GitLab CI/CD pipeline to run browser tests on every merge request. The integration uses two API calls in a shell script — one to start a suite run, one to poll for results. No plugins or dependencies required, just curl and jq.

Setup Guide

1

Get your API token and Suite ID

In the Diffie dashboard, go to Settings → API Tokens to generate a token (DIFFIE_TOKEN). Then open the test suite you want to run and copy the Suite ID from the URL or settings page (DIFFIE_SUITE_ID).

2

Add variables to GitLab CI/CD

In your GitLab project, go to Settings → CI/CD → Variables. Add DIFFIE_TOKEN and DIFFIE_SUITE_ID as masked variables.

3

Add Diffie to your .gitlab-ci.yml

Add a test stage that starts a Diffie suite run and polls for results.

stages:
  - test

diffie-tests:
  stage: test
  image: alpine:latest
  before_script:
    - apk add --no-cache curl jq
  script:
    - |
      RESPONSE=$(curl -s -X POST \
        "https://api.diffie.ai/ci/suites/$DIFFIE_SUITE_ID/execute" \
        -H "Authorization: Bearer $DIFFIE_TOKEN" \
        -H "Content-Type: application/json" \
        -d "{\"baseUrl\": \"$PREVIEW_URL\"}")

      RUN_ID=$(echo $RESPONSE | jq -r '.suiteRunId')
      RUN_URL=$(echo $RESPONSE | jq -r '.url')

      if [ "$RUN_ID" = "null" ] || [ -z "$RUN_ID" ]; then
        echo "Failed to start suite run"
        echo "$RESPONSE"
        exit 1
      fi

      echo "Suite run started: $RUN_ID"
      echo "View results: $RUN_URL"

      while true; do
        STATUS_RESPONSE=$(curl -s \
          "https://api.diffie.ai/ci/suite-runs/$RUN_ID" \
          -H "Authorization: Bearer $DIFFIE_TOKEN")

        STATUS=$(echo $STATUS_RESPONSE | jq -r '.status')
        PASSED=$(echo $STATUS_RESPONSE | jq -r '.passed_tests')
        TOTAL=$(echo $STATUS_RESPONSE | jq -r '.total_tests')

        echo "Status: $STATUS ($PASSED/$TOTAL passed)"

        if [ "$STATUS" = "passed" ]; then
          echo "All tests passed!"
          exit 0
        elif [ "$STATUS" = "failed" ]; then
          echo "Tests failed! Details: $RUN_URL"
          exit 1
        elif [ "$STATUS" = "cancelled" ]; then
          echo "Run was cancelled"
          exit 1
        fi

        sleep 10
      done
  variables:
    PREVIEW_URL: "https://your-app.example.com"
  rules:
    - if: $CI_MERGE_REQUEST_ID
    - if: $CI_COMMIT_BRANCH == "main"
4

Push and verify

Commit your changes and create a merge request. Diffie tests will run as part of your pipeline. If anything fails, click through to the Diffie dashboard for screenshots and error details.

Benefits

  • Native integration with GitLab merge request workflow
  • Test results visible directly in your pipeline logs
  • Works with GitLab's review apps for testing preview deployments
  • No browser installation or Node.js needed — just curl and jq
  • Just two API endpoints — start a run and check status

Ready to get started?

Create your first AI-powered browser test in minutes.

Other Integrations