E2E Testing API Reference
Base URL: https://e2e.shellapps.com/api/v1/
All endpoints require authentication via ShellApps ID.
Test Runs
POST /runs
Trigger a new test run.
// Request
{
"suite": "smoke",
"target": "https://experience.shellapps.com",
"browsers": ["chromium", "firefox"],
"options": {
"retries": 2,
"timeout": 30000,
"workers": 4
}
}
// Response 201
{
"runId": "run_abc123",
"status": "queued",
"suite": "smoke",
"createdAt": "2025-03-01T10:00:00Z"
}GET /runs/:runId
Get run status and results.
// Response 200
{
"runId": "run_abc123",
"status": "completed",
"suite": "smoke",
"results": {
"total": 24,
"passed": 23,
"failed": 1,
"skipped": 0,
"duration": 124500
},
"failures": [
{
"test": "dashboard › should load widgets",
"error": "Timeout waiting for selector .widget-grid",
"screenshot": "https://e2e.shellapps.com/screenshots/run_abc123/failure-1.png"
}
],
"completedAt": "2025-03-01T10:02:04Z"
}GET /runs
List recent test runs.
GET /runs?suite=smoke&status=failed&limit=10DELETE /runs/:runId
Cancel a running test.
Screenshots
GET /runs/:runId/screenshots
List all screenshots from a run.
// Response 200
{
"screenshots": [
{
"name": "dashboard.png",
"url": "https://e2e.shellapps.com/screenshots/run_abc123/dashboard.png",
"status": "passed"
},
{
"name": "login-form.png",
"url": "https://e2e.shellapps.com/screenshots/run_abc123/login-form.png",
"status": "failed",
"diffUrl": "https://e2e.shellapps.com/screenshots/run_abc123/login-form-diff.png"
}
]
}PUT /runs/:runId/screenshots/:name/approve
Approve a visual diff and update the baseline.
Suites
GET /suites
List available test suites.
GET /suites/:name
Get suite details including test count and average duration.
Error Responses
{
"error": {
"code": "RUN_NOT_FOUND",
"message": "Run 'run_abc123' not found",
"status": 404
}
}| Code | Status | Description |
|---|---|---|
RUN_NOT_FOUND | 404 | Test run does not exist |
SUITE_NOT_FOUND | 404 | Test suite does not exist |
RUN_IN_PROGRESS | 409 | Suite already has an active run |
CONTAINER_ERROR | 500 | Docker container failed to start |