run_suite
Dispatch runs for several features in one call — one run per feature, on the same spine as run_feature. Omit features to run every feature with status generated (the whole runnable suite). Returns the dispatched runIds immediately.
info
A feature whose dispatch fails (e.g. no generated tests) is reported per-item with an error instead of aborting the rest.
Request
POST /api/v1/ops/projects/{project}/runs
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
project | path | string | yes | The project's public id. |
features | body | string[] | no | Feature ids or names. Omit to run all generated features. |
config | body | string | no | Playwright configuration name (default Default — see list_configs). |
siteUrl | body | string | no | Test site URL override. |
- cURL
- CLI
- MCP
curl -X POST -H "Authorization: Bearer $TESTVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' \
"$TESTVIBE_SERVER/api/v1/ops/projects/$PROJECT/runs"
testvibe run --all --wait # the whole suite; exits non-zero on any failure
testvibe run Login Checkout --wait
Tool run_suite — {} for the whole suite, or { "features": ["Login", "Checkout"] }. Follow each runId with wait_for_run.
Response
202 Accepted
{
"runs": [
{ "featureId": 12, "featureName": "Login Functionality", "runId": 215 },
{ "featureId": 15, "featureName": "Checkout", "runId": 216 },
{ "featureId": 18, "featureName": "Search", "error": "conflict", "message": "This feature has no generated tests yet — generate them first." }
]
}
Poll each runId with wait_for_run / get_run.
Errors
| HTTP | When |
|---|---|
404 not_found | No such project, or a named feature doesn't exist. |
409 conflict | features was omitted and the project has no generated features. |