New Feature

Announcing Chaos Proxy API:Automate Network Chaos in CI/CD 🚀

Stop manual testing. Programmatically inject 500 errors and latency into your GitHub Actions pipeline.

Full API Control

Create, configure, and destroy proxies via HTTPS endpoints.

CI/CD Native

Built for GitHub Actions, GitLab CI, and Jenkins.

Moving Beyond "Localhost" Testing

Until now, Debuggo has been a fantastic tool for manual testing. You spin up a proxy, connect your phone, and verify how your app handles a 503 error or high latency. It works great for ad-hoc debugging.

But manual testing doesn't scale.

You cannot ask your QA team to manually verify "Offline Mode" handling on every single Pull Request.

To build truly resilient apps, you need Continuous Chaos.

Today, we are launching the Chaos Proxy API. Now you can programmatically create proxies, configure chaos rules, and tear them down—all within your CI/CD pipeline.

Architecture: How it works in CI

The API gives you full control over the lifecycle of a Chaos Proxy directly from your pipeline scripts:

  • POSTSpin up a fresh, isolated proxy instance.
  • PUTApply chaos rules (latency, errors) via JSON.
  • GETDownload the CA certificate for mobile simulators.
  • DELETEClean up resources when testing finishes.

Real-World Example: GitHub Actions

Here is a complete workflow. This script spins up a proxy, injects a 3-second latency to simulate a slow network, runs tests to ensure the UI handles "Rage Clicks" correctly, and then shuts everything down.

.github/workflows/chaos-test.yml
name: 🧪 Chaos E2E Tests

on: [push]

jobs:
  chaos-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      # 1. Start the Proxy
      - name: 🚀 Start Debuggo Proxy
        id: start_proxy
        run: |
          RESPONSE=$(curl -s -X POST https://chaos-proxy.debuggo.app/api/v1/sessions \
            -H "Authorization: Bearer ${{ secrets.DEBUGGO_API_KEY }}")
          
          # Extract and save details to ENV
          echo "PROXY_ID=$(echo $RESPONSE | jq -r .id)" >> $GITHUB_ENV
          echo "PROXY_HOST=$(echo $RESPONSE | jq -r .host)" >> $GITHUB_ENV
          echo "PROXY_PORT=$(echo $RESPONSE | jq -r .port)" >> $GITHUB_ENV
          echo "PROXY_AUTH=$(echo $RESPONSE | jq -r .auth)" >> $GITHUB_ENV

      # 2. Configure Chaos (The "Bad 3G" Simulation)
      - name: 💣 Configure Chaos Rules
        run: |
          curl -X PUT https://chaos-proxy.debuggo.app/api/v1/sessions/$PROXY_ID/rules \
            -H "Authorization: Bearer ${{ secrets.DEBUGGO_API_KEY }}" \
            -H "Content-Type: application/json" \
            -d '{
              "rules": [
                {
                  "url_pattern": "*/api/checkout",
                  "delay": 3000,
                  "error_code": null
                }
              ]
            }'

      # 3. Run Tests
      - name: 🧪 Run Playwright Tests
        run: |
          # Route traffic through the authenticated proxy
          export HTTPS_PROXY="http://$PROXY_AUTH@$PROXY_HOST:$PROXY_PORT"
          npx playwright test

      # 4. Cleanup (Always run this, even if tests fail)
      - name: 🧹 Cleanup
        if: always()
        run: |
          curl -X DELETE https://chaos-proxy.debuggo.app/api/v1/sessions/$PROXY_ID \
            -H "Authorization: Bearer ${{ secrets.DEBUGGO_API_KEY }}"

3 Reasons to Automate Chaos

1. Catch Regressions in "Unhappy Paths"

Developers often break error handling logic because they rarely see errors locally. Automating a 500 Error test ensures your "Something went wrong" screen never breaks.

2. Validate Idempotency

By injecting latency into your payment endpoints during CI, you can verify that your backend correctly handles duplicate requests (Rage Clicks) before they reach production.

3. Native Mobile Testing

Unlike Playwright’s built-in page.route (which only works in a browser context), Debuggo works at the system level for Android and iOS simulators.

Ready to break your build (on purpose)?

Get your API Key and start creating resilient applications today.