Diffie + Bitbucket Pipelines

Run Diffie tests in your Bitbucket Pipelines

Overview

Add Diffie to your Bitbucket Pipelines configuration to run browser tests on every pull request. The integration is a shell script using curl and jq — no plugins, no dependencies, no Bitbucket Pipes required.

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 repository variables

In your Bitbucket repository, go to Repository settings → Pipelines → Repository variables. Add DIFFIE_TOKEN and DIFFIE_SUITE_ID as secured variables.

3

Update your bitbucket-pipelines.yml

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

pipelines:
  pull-requests:
    '**':
      - step:
          name: Run Diffie Tests
          image: alpine:latest
          script:
            - apk add --no-cache curl jq
            - |
              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
4

Push and verify

Commit the pipeline configuration and create a pull request. Diffie tests will run automatically. If anything fails, click through to the Diffie dashboard for screenshots and error details.

Benefits

  • Seamless integration with Bitbucket pull request workflow
  • No Bitbucket Pipes or plugins required — just curl and jq
  • Works with any preview deployment URL
  • Simple YAML configuration — set up in under 5 minutes
  • 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