Test Suites & Organization
Manage test suites, group tests into collections, configure browser states, shared parameters, reusable modules, AI suggestions, and notification channels.
Test Suites
| Method | Path | What it does |
|---|---|---|
| POST | /test-suites | Create a suite (name and org_id required) |
| GET | /test-suites/{test_suite_id} | Get suite details |
| DELETE | /test-suites/{test_suite_id} | Delete a suite and all its tests |
| PUT | /test-suites/{test_suite_id}/rename | Rename a suite |
| GET | /test-suites/{test_suite_id}/tree | Get the full folder/test tree |
| GET | /test-suites/{test_suite_id}/test-case-ids | List all test case IDs in the suite |
| GET | /test-suites/{test_suite_id}/test-case-paths | List folder paths in the suite |
| GET | /test-suites/{test_suite_id}/test-cases-by-path | List tests matching a folder path (path and exact_match queries) |
Collections
Group tests together to run as a set, on a schedule, with shared run-setting overrides.
| Method | Path | What it does |
|---|---|---|
| POST | /test-suites/collection | Create a collection (name, test_suite_id; optional schedule in cron format, run_settings) |
| GET | /test-suites/collection/{collection_id} | Get a collection with its linked runs |
| PUT | /test-suites/collection/{collection_id} | Update a collection (add/remove tests, change schedule, update settings) |
| DELETE | /test-suites/collection/{collection_id} | Delete a collection |
| GET | /test-suites/collections/{test_suite_id} | List collections in a suite |
| GET | /test-suites/collections-summaries/{test_suite_id} | Per-collection pass/fail/running summary |
| POST | /test-suites/collection/{collection_id}/run-all | Bulk-run all tests in a collection |
schedule uses standard cron format. Example: "0 9 * * 1-5" runs the collection at 09:00 UTC every weekday.
Browser States
Save authenticated browser sessions to skip login on every test run.
| Method | Path | What it does |
|---|---|---|
| GET | /browser-states/{test_suite_id} | List browser states in a suite |
| POST | /browser-state | Create a browser state (name, storage_state, test_suite_id) |
| PUT | /browser-state | Update a browser state |
| GET | /browser-state/{test_suite_id}/{browser_state_id} | Get a single browser state |
Shared & Asset Parameters
Manage reusable variables and file references available across tests in a suite.
| Method | Path | What it does |
|---|---|---|
| GET | /test-suites/{test_suite_id}/shared-parameters | List shared parameters (values are masked) |
| POST | /test-suites/{test_suite_id}/shared-parameters | Add a shared parameter (key, value) |
| PUT | /test-suites/{test_suite_id}/shared-parameters/{shared_parameter_id} | Update a shared parameter |
| DELETE | /test-suites/{test_suite_id}/shared-parameters/{shared_parameter_id} | Delete a shared parameter |
| GET | /test-suites/{test_suite_id}/asset-parameters | List asset parameters |
| POST | /test-suites/{test_suite_id}/asset-parameters | Add an asset parameter (references an uploaded asset by asset_id) |
| DELETE | /test-suites/{test_suite_id}/asset-parameters/{asset_parameter_id} | Delete an asset parameter |
Test Modules
Reusable setup building blocks (for example, a shared login flow) derived from a test case or defined as a Python script.
| Method | Path | What it does |
|---|---|---|
| GET | /test-suites/{test_suite_id}/test-modules | List test modules in a suite |
| POST | /test-suites/{test_suite_id}/test-module | Create a module (name required; optional test_case_id, module_type, defining_py_script) |
| PATCH | /test-suites/{test_suite_id}/test-module/{test_module_id} | Update a module |
| DELETE | /test-suites/{test_suite_id}/test-module/{test_module_id} | Delete a module |
| PUT | /test-suites/{test_suite_id}/test-module/{test_module_id}/script/approve | Approve or disapprove a module's Python script |
AI Test Suggestions
Let CJ propose new test cases from a URL, an existing test, an uploaded document, or free-text context.
| Method | Path | What it does |
|---|---|---|
| GET | /test-suites/{test_suite_id}/test-case-suggestion-bundles | List previously generated suggestion bundles |
| POST | /test-suites/{test_suite_id}/suggest-test-cases | Generate and persist suggestions (async) |
| POST | /test-suites/{test_suite_id}/suggest-test-cases-sync | Generate lightweight suggestions without saving |
| POST | /test-suites/{test_suite_id}/suggestions/verdict | Accept or reject a suggestion (verdict: accepted / rejected); an accepted suggestion creates a real test case |
Notification Channels
Configure where failure alerts are sent (Email, Slack, MS Teams).
| Method | Path | What it does |
|---|---|---|
| GET | /test-suites/{test_suite_id}/notification-channels | List notification channels |
| POST | /test-suites/{test_suite_id}/notification-channels | Add a channel |
| PUT | /test-suites/{test_suite_id}/notification-channels/{channel_id} | Update a channel |
| DELETE | /test-suites/{test_suite_id}/notification-channels/{channel_id} | Remove a channel |
The config field uses a service_type discriminator. Examples:
Slack
{
"name": "Slack — #test-failures",
"config": {
"service_type": "slack",
"webhook_url": "https://hooks.slack.com/services/..."
},
"linked_collection_ids": ["<collection_id>"]
}
{
"name": "Email alerts",
"config": {
"service_type": "email",
"to_email_list": ["dev@example.com"],
"cc_email_list": ["manager@example.com"]
},
"linked_collection_ids": ["<collection_id>"]
}
MS Teams
{
"name": "Teams — Dev channel",
"config": {
"service_type": "msteams",
"webhook_url": "https://outlook.office.com/webhook/..."
},
"linked_collection_ids": ["<collection_id>"]
}