Skip to main content

Test Runs API

Create Test Run

POST /api/v1/test_runs
Request:
{
  "pages": ["page_abc", "page_def"],
  "base_url": "https://staging.example.com",
  "browsers": ["chromium", "firefox"],
  "parallel": 4
}
Response:
{
  "id": "run_abc123",
  "status": "running",
  "total_pages": 2,
  "total_captures": 4,
  "progress": 0,
  "started_at": "2024-01-15T10:30:00Z"
}

Get Test Run

GET /api/v1/test_runs/:id
Response:
{
  "id": "run_abc123",
  "status": "completed",
  "total_pages": 2,
  "total_captures": 4,
  "passed_count": 3,
  "failed_count": 0,
  "pending_count": 1,
  "progress": 100,
  "started_at": "2024-01-15T10:30:00Z",
  "completed_at": "2024-01-15T10:30:45Z",
  "duration_seconds": 45,
  "comparisons": [
    {
      "id": "cmp_1",
      "page": "Homepage",
      "browser": "chromium",
      "status": "passed",
      "diff_percentage": 0
    },
    {
      "id": "cmp_2",
      "page": "Homepage",
      "browser": "firefox",
      "status": "passed",
      "diff_percentage": 0.1
    },
    {
      "id": "cmp_3",
      "page": "Pricing",
      "browser": "chromium",
      "status": "pending_review",
      "diff_percentage": 2.5
    }
  ]
}

List Test Runs

GET /api/v1/test_runs
Query Parameters:
  • status - Filter by status: running, passed, failed, pending_review
  • since - Runs since timestamp
  • limit - Max results
Response:
{
  "test_runs": [
    {
      "id": "run_abc123",
      "status": "completed",
      "total_pages": 10,
      "passed_count": 8,
      "failed_count": 1,
      "pending_count": 1,
      "started_at": "2024-01-15T10:30:00Z",
      "duration_seconds": 45
    }
  ]
}

Cancel Test Run

POST /api/v1/test_runs/:id/cancel
Response:
{
  "id": "run_abc123",
  "status": "cancelled",
  "cancelled_at": "2024-01-15T10:30:30Z"
}

Retry Failed Tests

POST /api/v1/test_runs/:id/retry
Creates a new test run with only the failed pages. Response:
{
  "original_run_id": "run_abc123",
  "new_run_id": "run_def456",
  "pages_retried": 2
}

Approve All Pending

POST /api/v1/test_runs/:id/approve_all
Request:
{
  "reason": "Approved design changes for Q1 release"
}
Response:
{
  "run_id": "run_abc123",
  "approved_count": 3,
  "new_baselines_created": 3
}

Get Run Summary

GET /api/v1/test_runs/:id/summary
Response:
{
  "run_id": "run_abc123",
  "summary": {
    "total": 10,
    "passed": 8,
    "failed": 1,
    "pending_review": 1,
    "pass_rate": 80.0,
    "avg_diff_percentage": 0.5,
    "browsers": {
      "chromium": { "passed": 4, "failed": 1 },
      "firefox": { "passed": 4, "failed": 0 }
    },
    "slowest_capture": {
      "page": "Dashboard",
      "duration_ms": 5200
    }
  }
}