Run Diffie tests in your GitLab CI/CD pipeline
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.
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).
In your GitLab project, go to Settings → CI/CD → Variables. Add DIFFIE_TOKEN and DIFFIE_SUITE_ID as masked variables.
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"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.