# info.description
BugBug.io is a modern browser-based app for software testers, developers, or product managers in need of quick & reliable test automation. You can run tests from your CI/CD pipeline or build system. You can run tests and suites in the cloud via BugBug Command Line Interface.

Please use Authorize button to Try it out.

# paths./api/v2/components/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/components/.get.parameters[].description
Search in names with the following query

# paths./api/v2/components/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/components/.post.description
Create a standalone component (not attached to any test).

# paths./api/v2/components/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/components/{id}/usage/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/config/ips/.get.description
Returns List of Bugbug infrastructure IP addresses.

# paths./api/v2/config/ips/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/config/status/.get.description
Lightweight liveness probe. Always returns 200 when the API is reachable. If an `Authorization: Token <key>` header is sent it is validated and the result is reported via the `authenticated` flag, but neither a missing nor an invalid token causes a 401. Intended for client-side connection indicators and uptime monitors.

# paths./api/v2/config/status/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/folders/.get.description
Returns folders for the project. Filter by `kind` or `parentId`.

# paths./api/v2/folders/.get.parameters[].description
* `test` - Test
* `component` - Component

# paths./api/v2/folders/.get.parameters[].description
Ordering

* `name` - Name
* `-name` - Name (descending)
* `created` - Created
* `-created` - Created (descending)
* `depth` - Depth
* `-depth` - Depth (descending)

# paths./api/v2/folders/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/folders/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/folders/.post.description
Creates a new folder. Project is taken from the auth token.

# paths./api/v2/folders/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/folders/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/folders/{id}/.patch.description
Updates folder name and/or moves the folder to a different parent. Pass `parentId=null` to move to root.

# paths./api/v2/folders/{id}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/folders/{id}/.delete.description
Deletes a folder. Fails with 400 if folder is not empty unless `force=true` is passed. When forced, contained tests/components are unlinked and subtree is soft-deleted.

# paths./api/v2/folders/{id}/.delete.parameters[].description
If true, deletes folder even if non-empty (cascades to subtree).

# paths./api/v2/folders/{id}/.delete.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/folders/tree/.get.description
Returns the full nested folder tree for a given kind.

# paths./api/v2/folders/tree/.get.parameters[].description
Ordering

* `name` - Name
* `-name` - Name (descending)
* `created` - Created
* `-created` - Created (descending)
* `depth` - Depth
* `-depth` - Depth (descending)

# paths./api/v2/folders/tree/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/folders/tree/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/groups/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/groups/.get.parameters[].description
Search in names with the following query

# paths./api/v2/groups/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/groups/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/groups/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/groups/{id}/.put.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/groups/{id}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/groups/{id}/.delete.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/organizations/.get.description
Returns organizations available within the public API token scope.

# paths./api/v2/organizations/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/organizations/.get.parameters[].description
Search in names with the following query

# paths./api/v2/organizations/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/profiles/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/profiles/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/profiles/{id}/.get.parameters[].description
A UUID string identifying this run profile.

# paths./api/v2/profiles/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/project/export/.get.description
Exports the entire project including all tests, components, suites and profiles as a ZIP archive.

# paths./api/v2/project/export/.get.responses.200.description
ZIP archive download. Content-Type is `application/zip`.

# paths./api/v2/project/export/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/project/import/check/.post.description
**Stateless, read-only** check: confirms the ZIP is a well-formed project export (has `project.yaml`, no folder/slug collisions). No DB writes, no draft or upload artifact created unlike `import/validate` - safe to call repeatedly. Does not check against this organization's existing data, so a `200` here doesn't guarantee `import/validate` + `import/run` will succeed. Use for pre-flight checks, including by LLM/agent callers, before committing to `import/validate`.

# paths./api/v2/project/import/check/.post.summary
Check whether a project ZIP is importable (stateless)

# paths./api/v2/project/import/check/.post.responses.400.description
File missing, too large, or structurally invalid ZIP. See `message` for the reason.

# paths./api/v2/project/import/check/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/project/import/run/.post.description
Starts the async import process for a previously validated upload. Returns immediately — the import runs in the background. The upload slot expires 30 minutes after `import/validate` was called.

# paths./api/v2/project/import/run/.post.summary
Run project import from a previously validated upload

# paths./api/v2/project/import/run/.post.responses.400.description
Missing `uploadId`, upload not found, expired, or artifact missing.

# paths./api/v2/project/import/run/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/project/import/validate/.post.description
Validates a ZIP file and creates a temporary upload slot (valid for 30 minutes). Returns an `uploadId` to be passed to the `import/run` endpoint.

# paths./api/v2/project/import/validate/.post.responses.400.description
File missing, too large, or invalid ZIP.

# paths./api/v2/project/import/validate/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/projects/.get.description
Returns projects available within the public API token scope.

# paths./api/v2/projects/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/projects/.get.parameters[].description
Search in names with the following query

# paths./api/v2/projects/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/projects/{project_pk}/backups/.get.description
Returns the backup schedule and unexpired backup archives for the selected project.

# paths./api/v2/projects/{project_pk}/backups/.get.responses.401.description
Authentication credentials were not provided.

# paths./api/v2/projects/{project_pk}/backups/{id}/download/.get.description
Downloads an unexpired project backup as a ZIP archive.

# paths./api/v2/projects/{project_pk}/backups/{id}/download/.get.parameters[].description
A UUID string identifying this project backup.

# paths./api/v2/projects/{project_pk}/backups/{id}/download/.get.responses.200.description
ZIP archive download. Content-Type is `application/zip`.

# paths./api/v2/projects/{project_pk}/backups/{id}/download/.get.responses.401.description
Authentication credentials were not provided.

# paths./api/v2/projects/{project_pk}/settings/.get.description
Returns settings for the project selected in the URL or authenticated by the project API token.

# paths./api/v2/projects/{project_pk}/settings/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/projects/settings/.get.description
Returns settings for the project selected in the URL or authenticated by the project API token.

# paths./api/v2/projects/settings/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/schema/yaml/v1/.get.description
Returns the JSON Schema for YAML import and export files.

# paths./api/v2/schema/yaml/v1/.get.responses.200.description
JSON Schema document for YAML import/export files.

# paths./api/v2/schema/yaml/v1/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/settings/.get.description
Returns settings for the project selected in the URL or authenticated by the project API token.

# paths./api/v2/settings/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/stepruns/{id}/.get.parameters[].description
A UUID string identifying this step run.

# paths./api/v2/stepruns/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/steps/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/steps/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/steps/{id}/.put.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/steps/{id}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/steps/{id}/.delete.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/suiteruns/.get.parameters[].description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# paths./api/v2/suiteruns/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/{id}/.get.parameters[].description
A UUID string identifying this suite run.

# paths./api/v2/suiteruns/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/{id}/debug-artifacts/.get.description
Returns report artifacts attached to the suite run. Currently only JUnit report artifacts are exposed.

# paths./api/v2/suiteruns/{id}/debug-artifacts/.get.parameters[].description
A UUID string identifying this suite run.

# paths./api/v2/suiteruns/{id}/debug-artifacts/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/{id}/report/junit/.get.description
Download the report for the selected suite run in the specified format.

# paths./api/v2/suiteruns/{id}/report/junit/.get.parameters[].description
A UUID string identifying this suite run.

# paths./api/v2/suiteruns/{id}/report/junit/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/{id}/screenshots/.get.parameters[].description
A UUID string identifying this suite run.

# paths./api/v2/suiteruns/{id}/screenshots/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/{id}/status/.get.parameters[].description
A UUID string identifying this suite run.

# paths./api/v2/suiteruns/{id}/status/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suiteruns/{id}/stop/.post.parameters[].description
A UUID string identifying this suite run.

# paths./api/v2/suiteruns/{id}/stop/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suites/.get.parameters[].description
Include the latest run summary for each suite.

# paths./api/v2/suites/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/suites/.get.parameters[].description
Search in names with the following query

# paths./api/v2/suites/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suites/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suites/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suites/{id}/.put.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suites/{id}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/suites/{id}/.delete.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/testruns/.get.parameters[].description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# paths./api/v2/testruns/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/debug-artifacts/.get.description
Returns list of debug artifacts attached to the test run.

# paths./api/v2/testruns/{id}/debug-artifacts/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/debug-artifacts/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/debug-artifacts/{artifact_type}/.get.description
Returns a single debug artifact of the given kind attached to the test run.

# paths./api/v2/testruns/{id}/debug-artifacts/{artifact_type}/.get.summary
Retrieve test run debug artifact by kind

# paths./api/v2/testruns/{id}/debug-artifacts/{artifact_type}/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/debug-artifacts/{artifact_type}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/logs/.get.description
Download the logs for the selected test run.

# paths./api/v2/testruns/{id}/logs/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/logs/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/report/junit/.get.description
Download the JUnit XML report for the selected test run.

# paths./api/v2/testruns/{id}/report/junit/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/report/junit/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/screenshots/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/screenshots/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/status/.get.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/status/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/testruns/{id}/stop/.post.parameters[].description
A UUID string identifying this test run.

# paths./api/v2/testruns/{id}/stop/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/.get.parameters[].description
Include the latest run summary for each test.

# paths./api/v2/tests/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/tests/.get.parameters[].description
Search in names with the following query

# paths./api/v2/tests/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/.patch.summary
Retrieve a test by its ID and update details

# paths./api/v2/tests/{id}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/.delete.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/export/{fmt}/.get.description
Exports a single test. `yaml` returns a standalone YAML file. `zip` returns a ZIP archive that includes the test and all reusable components it depends on.

# paths./api/v2/tests/{id}/export/{fmt}/.get.responses.200.description
File download. Content-Type is `text/yaml` for yaml, `application/zip` for zip.

# paths./api/v2/tests/{id}/export/{fmt}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/insert-component/.post.description
Insert a component into a test. Prefer componentId. The legacy groupId field is still accepted and must contain the component relation ID returned by the components endpoint.

# paths./api/v2/tests/{id}/insert-component/.post.summary
Insert a component into a test by test ID

# paths./api/v2/tests/{id}/insert-component/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/unlink-component/.post.summary
Unlink a component from a test by test ID

# paths./api/v2/tests/{id}/unlink-component/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/{id}/update-step-position/.post.description
Update the position of a step within a test.

# paths./api/v2/tests/{id}/update-step-position/.post.summary
Move a step to a different position or group

# paths./api/v2/tests/{id}/update-step-position/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/import/.post.description
Imports a test from a YAML or ZIP file. When a test with the same slug already exists, the behaviour depends on `conflictMode`. If `conflictMode` is omitted, conflicts are returned in the response body for manual resolution.

# paths./api/v2/tests/import/.post.parameters[].description
How to handle a slug conflict with an existing test. `overwrite` replaces the existing test. `skip` leaves the existing test unchanged. Omit to receive conflict details in the response and resolve manually.

# paths./api/v2/tests/import/.post.parameters[].description
How to handle component references that are missing in the project. `error` (default) aborts the import. `skip` imports the test without the missing component steps.

# paths./api/v2/tests/import/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/tests/import/check/.post.description
**Stateless, read-only** check: confirms the YAML/ZIP is a well-formed test export (right schema, no folder/slug collisions). No DB writes, unlike `import` which writes immediately whenever there's no slug conflict - safe to call repeatedly. Does not check against this project's existing tests/components, so a `200` here doesn't guarantee `import` will succeed. Use for pre-flight checks, including by LLM/agent callers, before committing to `import`.

# paths./api/v2/tests/import/check/.post.summary
Check whether a test YAML or ZIP is importable (stateless)

# paths./api/v2/tests/import/check/.post.responses.400.description
File missing, too large, or structurally invalid. See `message` for the reason.

# paths./api/v2/tests/import/check/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/variables/.get.description
Returns available built-in and custom variables.

# paths./api/v2/variables/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/variables/.post.description
Create a custom variable in the default run profile.

# paths./api/v2/variables/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/variables/{key}/.get.description
Returns a custom variable from the default run profile by key.

# paths./api/v2/variables/{key}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/variables/{key}/.patch.description
Partially update a custom variable in the default run profile by key.

# paths./api/v2/variables/{key}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/reference-screenshots/.get.description
Returns a list of visual regression reference screenshots.

# paths./api/v2/visual-regression/reference-screenshots/.get.summary
List visual regression reference screenshots

# paths./api/v2/visual-regression/reference-screenshots/.get.parameters[].description
A page number within the paginated result set.

# paths./api/v2/visual-regression/reference-screenshots/.get.parameters[].description
Filter reference screenshots by step ID.

# paths./api/v2/visual-regression/reference-screenshots/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/reference-screenshots/.post.description
Creates a new visual regression reference screenshot.

# paths./api/v2/visual-regression/reference-screenshots/.post.summary
Create visual regression reference screenshot

# paths./api/v2/visual-regression/reference-screenshots/.post.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.get.description
Returns a single visual regression reference screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.get.summary
Retrieve visual regression reference screenshot

# paths./api/v2/visual-regression/reference-screenshots/{id}/.get.parameters[].description
A UUID string identifying this visual regression ref screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.get.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.put.description
Updates a visual regression reference screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.put.summary
Update visual regression reference screenshot

# paths./api/v2/visual-regression/reference-screenshots/{id}/.put.parameters[].description
A UUID string identifying this visual regression ref screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.put.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.patch.description
Updates a visual regression reference screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.patch.summary
Update visual regression reference screenshot

# paths./api/v2/visual-regression/reference-screenshots/{id}/.patch.parameters[].description
A UUID string identifying this visual regression ref screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.patch.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.delete.description
Deletes a visual regression reference screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.delete.summary
Delete visual regression reference screenshot

# paths./api/v2/visual-regression/reference-screenshots/{id}/.delete.parameters[].description
A UUID string identifying this visual regression ref screenshot.

# paths./api/v2/visual-regression/reference-screenshots/{id}/.delete.responses.401.description
Authentication credentials were missing or invalid.

# paths./api/v2/visual-regression/resolve/.post.description
Resolves failed visual regression checks. Use `set_new_reference` to accept the observed screenshot as the new baseline, or `set_new_max_difference` to raise the step's allowed difference to just above the observed value. Provide exactly one of `stepRunId` or `testRunId`.

# paths./api/v2/visual-regression/resolve/.post.responses.401.description
Authentication credentials were missing or invalid.

# components.schemas.APICreateVariable.properties.type.description
* `value` - Value
* `evaluate` - Evaluate

# components.schemas.APICreatedVariable.properties.type.description
* `value` - Value
* `evaluate` - Evaluate

# components.schemas.APIVariable.properties.type.description
* `value` - Value
* `evaluate` - Evaluate

# components.schemas.AssertStep.properties.assertionProperty.description
* `checked` - Checked
* `count` - Count
* `customJavaScript` - Custom Javascript
* `exist` - Exist
* `notChecked` - Not Checked
* `notExist` - Not Exist
* `notVisible` - Not Visible
* `textContent` - Text Content
* `hasAttribute` - Has Attribute
* `hasNotAttribute` - Has Not Attribute
* `value` - Value
* `visible` - Visible
* `pageTitle` - Page Has Title
* `pageShowsText` - Page Shows Text
* `pageDoesNotShowText` - Page Does Not Show Text
* `pageUrlIs` - Page Url Is
* `downloadStarted` - Download Started
* `variableValue` - Variable Value
* `clipboardValue` - Clipboard Value
* `disabled` - Disabled
* `notDisabled` - Not Disabled

# components.schemas.AssertStep.properties.assertionType.description
* `contain` - Contain
* `equal` - Equal
* `greaterThan` - Greater Than
* `lessThan` - Less Than
* `match` - Match
* `notContain` - Not Contain
* `notEqual` - Not Equal
* `notMatch` - Not Match
* `any` - Any

# components.schemas.AssertStep.properties.assertionJavaScript.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.AssertStep.properties.assertionVariableName.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.ClickStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.DebugArtifact.properties.kind.description
* `logs_partial` - Logs Partial
* `logs` - Logs
* `cloud_logs` - Cloud Logs
* `container_stats` - Container Stats
* `chrome_debug_logs` - Chrome Debug Logs
* `dom_snapshot` - Dom Snapshot
* `network_logs` - Network Logs

# components.schemas.HoverStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.IfConditionStep.description
If condition steps reuse assertion_* fields as the branch condition.

# components.schemas.IfConditionStep.properties.assertionProperty.description
* `checked` - Checked
* `count` - Count
* `customJavaScript` - Custom Javascript
* `exist` - Exist
* `notChecked` - Not Checked
* `notExist` - Not Exist
* `notVisible` - Not Visible
* `textContent` - Text Content
* `hasAttribute` - Has Attribute
* `hasNotAttribute` - Has Not Attribute
* `value` - Value
* `visible` - Visible
* `pageTitle` - Page Has Title
* `pageShowsText` - Page Shows Text
* `pageDoesNotShowText` - Page Does Not Show Text
* `pageUrlIs` - Page Url Is
* `downloadStarted` - Download Started
* `variableValue` - Variable Value
* `clipboardValue` - Clipboard Value
* `disabled` - Disabled
* `notDisabled` - Not Disabled

# components.schemas.IfConditionStep.properties.assertionType.description
* `contain` - Contain
* `equal` - Equal
* `greaterThan` - Greater Than
* `lessThan` - Less Than
* `match` - Match
* `notContain` - Not Contain
* `notEqual` - Not Equal
* `notMatch` - Not Match
* `any` - Any

# components.schemas.IfConditionStep.properties.assertionJavaScript.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.IfConditionStep.properties.assertionVariableName.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.MouseDownStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.MouseUpStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedAPIUpdateVariable.properties.type.description
* `value` - Value
* `evaluate` - Evaluate

# components.schemas.PatchedAssertStep.properties.assertionProperty.description
* `checked` - Checked
* `count` - Count
* `customJavaScript` - Custom Javascript
* `exist` - Exist
* `notChecked` - Not Checked
* `notExist` - Not Exist
* `notVisible` - Not Visible
* `textContent` - Text Content
* `hasAttribute` - Has Attribute
* `hasNotAttribute` - Has Not Attribute
* `value` - Value
* `visible` - Visible
* `pageTitle` - Page Has Title
* `pageShowsText` - Page Shows Text
* `pageDoesNotShowText` - Page Does Not Show Text
* `pageUrlIs` - Page Url Is
* `downloadStarted` - Download Started
* `variableValue` - Variable Value
* `clipboardValue` - Clipboard Value
* `disabled` - Disabled
* `notDisabled` - Not Disabled

# components.schemas.PatchedAssertStep.properties.assertionType.description
* `contain` - Contain
* `equal` - Equal
* `greaterThan` - Greater Than
* `lessThan` - Less Than
* `match` - Match
* `notContain` - Not Contain
* `notEqual` - Not Equal
* `notMatch` - Not Match
* `any` - Any

# components.schemas.PatchedAssertStep.properties.assertionJavaScript.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.PatchedAssertStep.properties.assertionVariableName.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.PatchedClickStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedHoverStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedIfConditionStep.description
If condition steps reuse assertion_* fields as the branch condition.

# components.schemas.PatchedIfConditionStep.properties.assertionProperty.description
* `checked` - Checked
* `count` - Count
* `customJavaScript` - Custom Javascript
* `exist` - Exist
* `notChecked` - Not Checked
* `notExist` - Not Exist
* `notVisible` - Not Visible
* `textContent` - Text Content
* `hasAttribute` - Has Attribute
* `hasNotAttribute` - Has Not Attribute
* `value` - Value
* `visible` - Visible
* `pageTitle` - Page Has Title
* `pageShowsText` - Page Shows Text
* `pageDoesNotShowText` - Page Does Not Show Text
* `pageUrlIs` - Page Url Is
* `downloadStarted` - Download Started
* `variableValue` - Variable Value
* `clipboardValue` - Clipboard Value
* `disabled` - Disabled
* `notDisabled` - Not Disabled

# components.schemas.PatchedIfConditionStep.properties.assertionType.description
* `contain` - Contain
* `equal` - Equal
* `greaterThan` - Greater Than
* `lessThan` - Less Than
* `match` - Match
* `notContain` - Not Contain
* `notEqual` - Not Equal
* `notMatch` - Not Match
* `any` - Any

# components.schemas.PatchedIfConditionStep.properties.assertionJavaScript.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.PatchedIfConditionStep.properties.assertionVariableName.description
Required for assert and ifCondition steps. Send an empty string when unused.

# components.schemas.PatchedMouseDownStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedMouseUpStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedScrollStep.properties.scrollEdge.description
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedScrollStep.properties.scrollDirection.description
* `down` - Down
* `up` - Up
* `right` - Right
* `left` - Left

# components.schemas.PatchedScrollStep.properties.scrollTo.description
* `coords` - Coords
* `edge` - Edge
* `untilNextStepElementIsVisible` - Until Next Step Element Is Visible
* `elementIntoView` - Element Into View

# components.schemas.PatchedScrollStep.properties.scrollInside.description
* `window` - window
* `element` - element

# components.schemas.PatchedSelectStep.properties.selectType.description
* `text` - text
* `index` - index
* `value` - value

# components.schemas.PatchedSetLocalVariableStep.properties.localVariableSource.description
* `element` - element
* `value` - value
* `evaluate` - evaluate

# components.schemas.PatchedSwitchContext.properties.value.description
* `topFrame` - Top Frame
* `iframe` - Iframe

# components.schemas.PatchedV2DragAndDropStep.properties.dndDragOn.description
* `coords` - coords
* `element` - element

# components.schemas.PatchedV2DragAndDropStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedV2DragAndDropStep.properties.dndDropOn.description
* `coords` - coords
* `element` - element

# components.schemas.PatchedV2DragAndDropStep.properties.dndDropInteractionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.PatchedV2TestCreate.properties.screenSizeType.description
* `desktop` - Desktop
* `mobile` - Mobile
* `custom` - Custom

# components.schemas.ProjectImportRunRequest.properties.uploadId.description
Upload ID returned by `import/validate`.

# components.schemas.ProjectImportValidateResult.properties.uploadId.description
Pass this to `import/run` to start the import.

# components.schemas.ScrollStep.properties.scrollEdge.description
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.ScrollStep.properties.scrollDirection.description
* `down` - Down
* `up` - Up
* `right` - Right
* `left` - Left

# components.schemas.ScrollStep.properties.scrollTo.description
* `coords` - Coords
* `edge` - Edge
* `untilNextStepElementIsVisible` - Until Next Step Element Is Visible
* `elementIntoView` - Element Into View

# components.schemas.ScrollStep.properties.scrollInside.description
* `window` - window
* `element` - element

# components.schemas.SelectStep.properties.selectType.description
* `text` - text
* `index` - index
* `value` - value

# components.schemas.SetLocalVariableStep.properties.localVariableSource.description
* `element` - element
* `value` - value
* `evaluate` - evaluate

# components.schemas.SwitchContext.properties.value.description
* `topFrame` - Top Frame
* `iframe` - Iframe

# components.schemas.TestImportCreated.properties.status.description
* `created` - created
* `updated` - updated
* `skipped` - skipped
* `conflict` - conflict

# components.schemas.TestImportCreated.properties.entityIds.description
Map of entity type to list of created/updated IDs.

# components.schemas.UpdateSelector.properties.type.description
* `XPath` - Xpath
* `customCSS` - Custom Css
* `customXPath` - Custom Xpath

# components.schemas.UpdateSelectorsGroup.properties.relation.description
* `descendant` - Descendant
* `ancestor` - Ancestor
* `sibling` - Sibling

# components.schemas.UpdateStepWaitingCondition.properties.type.description
* `documentComplete` - documentComplete
* `elementIsVisible` - elementIsVisible
* `elementIsNotCovered` - elementIsNotCovered
* `elementIsNotAnimating` - elementIsNotAnimating
* `elementIsNotDisabled` - elementIsNotDisabled
* `elementHasFocus` - elementHasFocus
* `networkIdle` - networkIdle
* `pageNavigationAfterExecution` - pageNavigationAfterExecution
* `elementHasAttribute` - elementHasAttribute

# components.schemas.UpdateStepWaitingCondition.properties.isOverridden.description
Required for each item when sending waitingConditions.

# components.schemas.V2DragAndDropStep.properties.dndDragOn.description
* `coords` - coords
* `element` - element

# components.schemas.V2DragAndDropStep.properties.interactionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.V2DragAndDropStep.properties.dndDropOn.description
* `coords` - coords
* `element` - element

# components.schemas.V2DragAndDropStep.properties.dndDropInteractionPosition.description
Required interaction target position. auto is not supported.

* `smart` - Smart
* `custom` - Custom
* `topLeft` - Top Left
* `topCenter` - Top Center
* `topRight` - Top Right
* `middleLeft` - Middle Left
* `middleCenter` - Middle Center
* `middleRight` - Middle Right
* `bottomLeft` - Bottom Left
* `bottomCenter` - Bottom Center
* `bottomRight` - Bottom Right

# components.schemas.V2Folder.properties.kind.description
* `test` - Test
* `component` - Component

# components.schemas.V2FolderCreate.properties.kind.description
* `test` - Test
* `component` - Component

# components.schemas.V2ProjectSettings.description
Read-only project settings exposed through the public API.

Uses an explicit whitelist (`API_EXPOSED_FIELDS`) so any new field added
to the parent `ProjectSettingsSerializer` (potentially secret or
infra-only) stays hidden until deliberately opted into API output. Secrets
like `api_token` and infra fields like `cloud_proxy` are therefore never
accidentally leaked. `id` (PK of settings row) is also omitted - MCP
clients don't need it; scoping is via the bearer token.

# components.schemas.V2ProjectSettings.properties.domSnapshot.description
When enabled, DOM snapshot will be captured on test failure

# components.schemas.V2ProjectSettings.properties.runLogs.description
* `disabled` - Disabled
* `consoleLogs` - Console logs
* `fullBugBugDebugging` - Full bugbug debugging

# components.schemas.V2ProjectSettings.properties.selectorsExcludedAttributes.description
Comma-separated list of attributes to exclude from selector generation

# components.schemas.V2ProjectSettings.properties.selectorsIncludedAttributes.description
Comma-separated list of attributes to include in selector generation

# components.schemas.V2ProjectSettings.properties.selectorsNonSemanticClassesEnabled.description
When enabled, non-semantic classes will be included in automatic selector generation

# components.schemas.V2ProjectSettings.properties.selectorsPriority.description
* `automatic` - Automatic
* `manual` - Manual

# components.schemas.V2ProjectSettings.properties.timezone.description
* `Africa/Abidjan` - Africa/Abidjan
* `Africa/Accra` - Africa/Accra
* `Africa/Addis_Ababa` - Africa/Addis_Ababa
* `Africa/Algiers` - Africa/Algiers
* `Africa/Asmara` - Africa/Asmara
* `Africa/Bamako` - Africa/Bamako
* `Africa/Bangui` - Africa/Bangui
* `Africa/Banjul` - Africa/Banjul
* `Africa/Bissau` - Africa/Bissau
* `Africa/Blantyre` - Africa/Blantyre
* `Africa/Brazzaville` - Africa/Brazzaville
* `Africa/Bujumbura` - Africa/Bujumbura
* `Africa/Cairo` - Africa/Cairo
* `Africa/Casablanca` - Africa/Casablanca
* `Africa/Ceuta` - Africa/Ceuta
* `Africa/Conakry` - Africa/Conakry
* `Africa/Dakar` - Africa/Dakar
* `Africa/Dar_es_Salaam` - Africa/Dar_es_Salaam
* `Africa/Djibouti` - Africa/Djibouti
* `Africa/Douala` - Africa/Douala
* `Africa/El_Aaiun` - Africa/El_Aaiun
* `Africa/Freetown` - Africa/Freetown
* `Africa/Gaborone` - Africa/Gaborone
* `Africa/Harare` - Africa/Harare
* `Africa/Johannesburg` - Africa/Johannesburg
* `Africa/Juba` - Africa/Juba
* `Africa/Kampala` - Africa/Kampala
* `Africa/Khartoum` - Africa/Khartoum
* `Africa/Kigali` - Africa/Kigali
* `Africa/Kinshasa` - Africa/Kinshasa
* `Africa/Lagos` - Africa/Lagos
* `Africa/Libreville` - Africa/Libreville
* `Africa/Lome` - Africa/Lome
* `Africa/Luanda` - Africa/Luanda
* `Africa/Lubumbashi` - Africa/Lubumbashi
* `Africa/Lusaka` - Africa/Lusaka
* `Africa/Malabo` - Africa/Malabo
* `Africa/Maputo` - Africa/Maputo
* `Africa/Maseru` - Africa/Maseru
* `Africa/Mbabane` - Africa/Mbabane
* `Africa/Mogadishu` - Africa/Mogadishu
* `Africa/Monrovia` - Africa/Monrovia
* `Africa/Nairobi` - Africa/Nairobi
* `Africa/Ndjamena` - Africa/Ndjamena
* `Africa/Niamey` - Africa/Niamey
* `Africa/Nouakchott` - Africa/Nouakchott
* `Africa/Ouagadougou` - Africa/Ouagadougou
* `Africa/Porto-Novo` - Africa/Porto-Novo
* `Africa/Sao_Tome` - Africa/Sao_Tome
* `Africa/Tripoli` - Africa/Tripoli
* `Africa/Tunis` - Africa/Tunis
* `Africa/Windhoek` - Africa/Windhoek
* `America/Adak` - America/Adak
* `America/Anchorage` - America/Anchorage
* `America/Anguilla` - America/Anguilla
* `America/Antigua` - America/Antigua
* `America/Araguaina` - America/Araguaina
* `America/Argentina/Buenos_Aires` - America/Argentina/Buenos_Aires
* `America/Argentina/Catamarca` - America/Argentina/Catamarca
* `America/Argentina/Cordoba` - America/Argentina/Cordoba
* `America/Argentina/Jujuy` - America/Argentina/Jujuy
* `America/Argentina/La_Rioja` - America/Argentina/La_Rioja
* `America/Argentina/Mendoza` - America/Argentina/Mendoza
* `America/Argentina/Rio_Gallegos` - America/Argentina/Rio_Gallegos
* `America/Argentina/Salta` - America/Argentina/Salta
* `America/Argentina/San_Juan` - America/Argentina/San_Juan
* `America/Argentina/San_Luis` - America/Argentina/San_Luis
* `America/Argentina/Tucuman` - America/Argentina/Tucuman
* `America/Argentina/Ushuaia` - America/Argentina/Ushuaia
* `America/Aruba` - America/Aruba
* `America/Asuncion` - America/Asuncion
* `America/Atikokan` - America/Atikokan
* `America/Bahia` - America/Bahia
* `America/Bahia_Banderas` - America/Bahia_Banderas
* `America/Barbados` - America/Barbados
* `America/Belem` - America/Belem
* `America/Belize` - America/Belize
* `America/Blanc-Sablon` - America/Blanc-Sablon
* `America/Boa_Vista` - America/Boa_Vista
* `America/Bogota` - America/Bogota
* `America/Boise` - America/Boise
* `America/Cambridge_Bay` - America/Cambridge_Bay
* `America/Campo_Grande` - America/Campo_Grande
* `America/Cancun` - America/Cancun
* `America/Caracas` - America/Caracas
* `America/Cayenne` - America/Cayenne
* `America/Cayman` - America/Cayman
* `America/Chicago` - America/Chicago
* `America/Chihuahua` - America/Chihuahua
* `America/Ciudad_Juarez` - America/Ciudad_Juarez
* `America/Costa_Rica` - America/Costa_Rica
* `America/Coyhaique` - America/Coyhaique
* `America/Creston` - America/Creston
* `America/Cuiaba` - America/Cuiaba
* `America/Curacao` - America/Curacao
* `America/Danmarkshavn` - America/Danmarkshavn
* `America/Dawson` - America/Dawson
* `America/Dawson_Creek` - America/Dawson_Creek
* `America/Denver` - America/Denver
* `America/Detroit` - America/Detroit
* `America/Dominica` - America/Dominica
* `America/Edmonton` - America/Edmonton
* `America/Eirunepe` - America/Eirunepe
* `America/El_Salvador` - America/El_Salvador
* `America/Fort_Nelson` - America/Fort_Nelson
* `America/Fortaleza` - America/Fortaleza
* `America/Glace_Bay` - America/Glace_Bay
* `America/Goose_Bay` - America/Goose_Bay
* `America/Grand_Turk` - America/Grand_Turk
* `America/Grenada` - America/Grenada
* `America/Guadeloupe` - America/Guadeloupe
* `America/Guatemala` - America/Guatemala
* `America/Guayaquil` - America/Guayaquil
* `America/Guyana` - America/Guyana
* `America/Halifax` - America/Halifax
* `America/Havana` - America/Havana
* `America/Hermosillo` - America/Hermosillo
* `America/Indiana/Indianapolis` - America/Indiana/Indianapolis
* `America/Indiana/Knox` - America/Indiana/Knox
* `America/Indiana/Marengo` - America/Indiana/Marengo
* `America/Indiana/Petersburg` - America/Indiana/Petersburg
* `America/Indiana/Tell_City` - America/Indiana/Tell_City
* `America/Indiana/Vevay` - America/Indiana/Vevay
* `America/Indiana/Vincennes` - America/Indiana/Vincennes
* `America/Indiana/Winamac` - America/Indiana/Winamac
* `America/Inuvik` - America/Inuvik
* `America/Iqaluit` - America/Iqaluit
* `America/Jamaica` - America/Jamaica
* `America/Juneau` - America/Juneau
* `America/Kentucky/Louisville` - America/Kentucky/Louisville
* `America/Kentucky/Monticello` - America/Kentucky/Monticello
* `America/Kralendijk` - America/Kralendijk
* `America/La_Paz` - America/La_Paz
* `America/Lima` - America/Lima
* `America/Los_Angeles` - America/Los_Angeles
* `America/Lower_Princes` - America/Lower_Princes
* `America/Maceio` - America/Maceio
* `America/Managua` - America/Managua
* `America/Manaus` - America/Manaus
* `America/Marigot` - America/Marigot
* `America/Martinique` - America/Martinique
* `America/Matamoros` - America/Matamoros
* `America/Mazatlan` - America/Mazatlan
* `America/Menominee` - America/Menominee
* `America/Merida` - America/Merida
* `America/Metlakatla` - America/Metlakatla
* `America/Mexico_City` - America/Mexico_City
* `America/Miquelon` - America/Miquelon
* `America/Moncton` - America/Moncton
* `America/Monterrey` - America/Monterrey
* `America/Montevideo` - America/Montevideo
* `America/Montserrat` - America/Montserrat
* `America/Nassau` - America/Nassau
* `America/New_York` - America/New_York
* `America/Nome` - America/Nome
* `America/Noronha` - America/Noronha
* `America/North_Dakota/Beulah` - America/North_Dakota/Beulah
* `America/North_Dakota/Center` - America/North_Dakota/Center
* `America/North_Dakota/New_Salem` - America/North_Dakota/New_Salem
* `America/Nuuk` - America/Nuuk
* `America/Ojinaga` - America/Ojinaga
* `America/Panama` - America/Panama
* `America/Paramaribo` - America/Paramaribo
* `America/Phoenix` - America/Phoenix
* `America/Port-au-Prince` - America/Port-au-Prince
* `America/Port_of_Spain` - America/Port_of_Spain
* `America/Porto_Velho` - America/Porto_Velho
* `America/Puerto_Rico` - America/Puerto_Rico
* `America/Punta_Arenas` - America/Punta_Arenas
* `America/Rankin_Inlet` - America/Rankin_Inlet
* `America/Recife` - America/Recife
* `America/Regina` - America/Regina
* `America/Resolute` - America/Resolute
* `America/Rio_Branco` - America/Rio_Branco
* `America/Santarem` - America/Santarem
* `America/Santiago` - America/Santiago
* `America/Santo_Domingo` - America/Santo_Domingo
* `America/Sao_Paulo` - America/Sao_Paulo
* `America/Scoresbysund` - America/Scoresbysund
* `America/Sitka` - America/Sitka
* `America/St_Barthelemy` - America/St_Barthelemy
* `America/St_Johns` - America/St_Johns
* `America/St_Kitts` - America/St_Kitts
* `America/St_Lucia` - America/St_Lucia
* `America/St_Thomas` - America/St_Thomas
* `America/St_Vincent` - America/St_Vincent
* `America/Swift_Current` - America/Swift_Current
* `America/Tegucigalpa` - America/Tegucigalpa
* `America/Thule` - America/Thule
* `America/Tijuana` - America/Tijuana
* `America/Toronto` - America/Toronto
* `America/Tortola` - America/Tortola
* `America/Vancouver` - America/Vancouver
* `America/Whitehorse` - America/Whitehorse
* `America/Winnipeg` - America/Winnipeg
* `America/Yakutat` - America/Yakutat
* `Antarctica/Casey` - Antarctica/Casey
* `Antarctica/Davis` - Antarctica/Davis
* `Antarctica/DumontDUrville` - Antarctica/DumontDUrville
* `Antarctica/Macquarie` - Antarctica/Macquarie
* `Antarctica/Mawson` - Antarctica/Mawson
* `Antarctica/McMurdo` - Antarctica/McMurdo
* `Antarctica/Palmer` - Antarctica/Palmer
* `Antarctica/Rothera` - Antarctica/Rothera
* `Antarctica/Syowa` - Antarctica/Syowa
* `Antarctica/Troll` - Antarctica/Troll
* `Antarctica/Vostok` - Antarctica/Vostok
* `Arctic/Longyearbyen` - Arctic/Longyearbyen
* `Asia/Aden` - Asia/Aden
* `Asia/Almaty` - Asia/Almaty
* `Asia/Amman` - Asia/Amman
* `Asia/Anadyr` - Asia/Anadyr
* `Asia/Aqtau` - Asia/Aqtau
* `Asia/Aqtobe` - Asia/Aqtobe
* `Asia/Ashgabat` - Asia/Ashgabat
* `Asia/Atyrau` - Asia/Atyrau
* `Asia/Baghdad` - Asia/Baghdad
* `Asia/Bahrain` - Asia/Bahrain
* `Asia/Baku` - Asia/Baku
* `Asia/Bangkok` - Asia/Bangkok
* `Asia/Barnaul` - Asia/Barnaul
* `Asia/Beirut` - Asia/Beirut
* `Asia/Bishkek` - Asia/Bishkek
* `Asia/Brunei` - Asia/Brunei
* `Asia/Chita` - Asia/Chita
* `Asia/Colombo` - Asia/Colombo
* `Asia/Damascus` - Asia/Damascus
* `Asia/Dhaka` - Asia/Dhaka
* `Asia/Dili` - Asia/Dili
* `Asia/Dubai` - Asia/Dubai
* `Asia/Dushanbe` - Asia/Dushanbe
* `Asia/Famagusta` - Asia/Famagusta
* `Asia/Gaza` - Asia/Gaza
* `Asia/Hebron` - Asia/Hebron
* `Asia/Ho_Chi_Minh` - Asia/Ho_Chi_Minh
* `Asia/Hong_Kong` - Asia/Hong_Kong
* `Asia/Hovd` - Asia/Hovd
* `Asia/Irkutsk` - Asia/Irkutsk
* `Asia/Jakarta` - Asia/Jakarta
* `Asia/Jayapura` - Asia/Jayapura
* `Asia/Jerusalem` - Asia/Jerusalem
* `Asia/Kabul` - Asia/Kabul
* `Asia/Kamchatka` - Asia/Kamchatka
* `Asia/Karachi` - Asia/Karachi
* `Asia/Kathmandu` - Asia/Kathmandu
* `Asia/Khandyga` - Asia/Khandyga
* `Asia/Kolkata` - Asia/Kolkata
* `Asia/Krasnoyarsk` - Asia/Krasnoyarsk
* `Asia/Kuala_Lumpur` - Asia/Kuala_Lumpur
* `Asia/Kuching` - Asia/Kuching
* `Asia/Kuwait` - Asia/Kuwait
* `Asia/Macau` - Asia/Macau
* `Asia/Magadan` - Asia/Magadan
* `Asia/Makassar` - Asia/Makassar
* `Asia/Manila` - Asia/Manila
* `Asia/Muscat` - Asia/Muscat
* `Asia/Nicosia` - Asia/Nicosia
* `Asia/Novokuznetsk` - Asia/Novokuznetsk
* `Asia/Novosibirsk` - Asia/Novosibirsk
* `Asia/Omsk` - Asia/Omsk
* `Asia/Oral` - Asia/Oral
* `Asia/Phnom_Penh` - Asia/Phnom_Penh
* `Asia/Pontianak` - Asia/Pontianak
* `Asia/Pyongyang` - Asia/Pyongyang
* `Asia/Qatar` - Asia/Qatar
* `Asia/Qostanay` - Asia/Qostanay
* `Asia/Qyzylorda` - Asia/Qyzylorda
* `Asia/Riyadh` - Asia/Riyadh
* `Asia/Sakhalin` - Asia/Sakhalin
* `Asia/Samarkand` - Asia/Samarkand
* `Asia/Seoul` - Asia/Seoul
* `Asia/Shanghai` - Asia/Shanghai
* `Asia/Singapore` - Asia/Singapore
* `Asia/Srednekolymsk` - Asia/Srednekolymsk
* `Asia/Taipei` - Asia/Taipei
* `Asia/Tashkent` - Asia/Tashkent
* `Asia/Tbilisi` - Asia/Tbilisi
* `Asia/Tehran` - Asia/Tehran
* `Asia/Thimphu` - Asia/Thimphu
* `Asia/Tokyo` - Asia/Tokyo
* `Asia/Tomsk` - Asia/Tomsk
* `Asia/Ulaanbaatar` - Asia/Ulaanbaatar
* `Asia/Urumqi` - Asia/Urumqi
* `Asia/Ust-Nera` - Asia/Ust-Nera
* `Asia/Vientiane` - Asia/Vientiane
* `Asia/Vladivostok` - Asia/Vladivostok
* `Asia/Yakutsk` - Asia/Yakutsk
* `Asia/Yangon` - Asia/Yangon
* `Asia/Yekaterinburg` - Asia/Yekaterinburg
* `Asia/Yerevan` - Asia/Yerevan
* `Atlantic/Azores` - Atlantic/Azores
* `Atlantic/Bermuda` - Atlantic/Bermuda
* `Atlantic/Canary` - Atlantic/Canary
* `Atlantic/Cape_Verde` - Atlantic/Cape_Verde
* `Atlantic/Faroe` - Atlantic/Faroe
* `Atlantic/Madeira` - Atlantic/Madeira
* `Atlantic/Reykjavik` - Atlantic/Reykjavik
* `Atlantic/South_Georgia` - Atlantic/South_Georgia
* `Atlantic/St_Helena` - Atlantic/St_Helena
* `Atlantic/Stanley` - Atlantic/Stanley
* `Australia/Adelaide` - Australia/Adelaide
* `Australia/Brisbane` - Australia/Brisbane
* `Australia/Broken_Hill` - Australia/Broken_Hill
* `Australia/Darwin` - Australia/Darwin
* `Australia/Eucla` - Australia/Eucla
* `Australia/Hobart` - Australia/Hobart
* `Australia/Lindeman` - Australia/Lindeman
* `Australia/Lord_Howe` - Australia/Lord_Howe
* `Australia/Melbourne` - Australia/Melbourne
* `Australia/Perth` - Australia/Perth
* `Australia/Sydney` - Australia/Sydney
* `Canada/Atlantic` - Canada/Atlantic
* `Canada/Central` - Canada/Central
* `Canada/Eastern` - Canada/Eastern
* `Canada/Mountain` - Canada/Mountain
* `Canada/Newfoundland` - Canada/Newfoundland
* `Canada/Pacific` - Canada/Pacific
* `Europe/Amsterdam` - Europe/Amsterdam
* `Europe/Andorra` - Europe/Andorra
* `Europe/Astrakhan` - Europe/Astrakhan
* `Europe/Athens` - Europe/Athens
* `Europe/Belgrade` - Europe/Belgrade
* `Europe/Berlin` - Europe/Berlin
* `Europe/Bratislava` - Europe/Bratislava
* `Europe/Brussels` - Europe/Brussels
* `Europe/Bucharest` - Europe/Bucharest
* `Europe/Budapest` - Europe/Budapest
* `Europe/Busingen` - Europe/Busingen
* `Europe/Chisinau` - Europe/Chisinau
* `Europe/Copenhagen` - Europe/Copenhagen
* `Europe/Dublin` - Europe/Dublin
* `Europe/Gibraltar` - Europe/Gibraltar
* `Europe/Guernsey` - Europe/Guernsey
* `Europe/Helsinki` - Europe/Helsinki
* `Europe/Isle_of_Man` - Europe/Isle_of_Man
* `Europe/Istanbul` - Europe/Istanbul
* `Europe/Jersey` - Europe/Jersey
* `Europe/Kaliningrad` - Europe/Kaliningrad
* `Europe/Kirov` - Europe/Kirov
* `Europe/Kyiv` - Europe/Kyiv
* `Europe/Lisbon` - Europe/Lisbon
* `Europe/Ljubljana` - Europe/Ljubljana
* `Europe/London` - Europe/London
* `Europe/Luxembourg` - Europe/Luxembourg
* `Europe/Madrid` - Europe/Madrid
* `Europe/Malta` - Europe/Malta
* `Europe/Mariehamn` - Europe/Mariehamn
* `Europe/Minsk` - Europe/Minsk
* `Europe/Monaco` - Europe/Monaco
* `Europe/Moscow` - Europe/Moscow
* `Europe/Oslo` - Europe/Oslo
* `Europe/Paris` - Europe/Paris
* `Europe/Podgorica` - Europe/Podgorica
* `Europe/Prague` - Europe/Prague
* `Europe/Riga` - Europe/Riga
* `Europe/Rome` - Europe/Rome
* `Europe/Samara` - Europe/Samara
* `Europe/San_Marino` - Europe/San_Marino
* `Europe/Sarajevo` - Europe/Sarajevo
* `Europe/Saratov` - Europe/Saratov
* `Europe/Simferopol` - Europe/Simferopol
* `Europe/Skopje` - Europe/Skopje
* `Europe/Sofia` - Europe/Sofia
* `Europe/Stockholm` - Europe/Stockholm
* `Europe/Tallinn` - Europe/Tallinn
* `Europe/Tirane` - Europe/Tirane
* `Europe/Ulyanovsk` - Europe/Ulyanovsk
* `Europe/Vaduz` - Europe/Vaduz
* `Europe/Vatican` - Europe/Vatican
* `Europe/Vienna` - Europe/Vienna
* `Europe/Vilnius` - Europe/Vilnius
* `Europe/Volgograd` - Europe/Volgograd
* `Europe/Warsaw` - Europe/Warsaw
* `Europe/Zagreb` - Europe/Zagreb
* `Europe/Zurich` - Europe/Zurich
* `GMT` - GMT
* `Indian/Antananarivo` - Indian/Antananarivo
* `Indian/Chagos` - Indian/Chagos
* `Indian/Christmas` - Indian/Christmas
* `Indian/Cocos` - Indian/Cocos
* `Indian/Comoro` - Indian/Comoro
* `Indian/Kerguelen` - Indian/Kerguelen
* `Indian/Mahe` - Indian/Mahe
* `Indian/Maldives` - Indian/Maldives
* `Indian/Mauritius` - Indian/Mauritius
* `Indian/Mayotte` - Indian/Mayotte
* `Indian/Reunion` - Indian/Reunion
* `Pacific/Apia` - Pacific/Apia
* `Pacific/Auckland` - Pacific/Auckland
* `Pacific/Bougainville` - Pacific/Bougainville
* `Pacific/Chatham` - Pacific/Chatham
* `Pacific/Chuuk` - Pacific/Chuuk
* `Pacific/Easter` - Pacific/Easter
* `Pacific/Efate` - Pacific/Efate
* `Pacific/Fakaofo` - Pacific/Fakaofo
* `Pacific/Fiji` - Pacific/Fiji
* `Pacific/Funafuti` - Pacific/Funafuti
* `Pacific/Galapagos` - Pacific/Galapagos
* `Pacific/Gambier` - Pacific/Gambier
* `Pacific/Guadalcanal` - Pacific/Guadalcanal
* `Pacific/Guam` - Pacific/Guam
* `Pacific/Honolulu` - Pacific/Honolulu
* `Pacific/Kanton` - Pacific/Kanton
* `Pacific/Kiritimati` - Pacific/Kiritimati
* `Pacific/Kosrae` - Pacific/Kosrae
* `Pacific/Kwajalein` - Pacific/Kwajalein
* `Pacific/Majuro` - Pacific/Majuro
* `Pacific/Marquesas` - Pacific/Marquesas
* `Pacific/Midway` - Pacific/Midway
* `Pacific/Nauru` - Pacific/Nauru
* `Pacific/Niue` - Pacific/Niue
* `Pacific/Norfolk` - Pacific/Norfolk
* `Pacific/Noumea` - Pacific/Noumea
* `Pacific/Pago_Pago` - Pacific/Pago_Pago
* `Pacific/Palau` - Pacific/Palau
* `Pacific/Pitcairn` - Pacific/Pitcairn
* `Pacific/Pohnpei` - Pacific/Pohnpei
* `Pacific/Port_Moresby` - Pacific/Port_Moresby
* `Pacific/Rarotonga` - Pacific/Rarotonga
* `Pacific/Saipan` - Pacific/Saipan
* `Pacific/Tahiti` - Pacific/Tahiti
* `Pacific/Tarawa` - Pacific/Tarawa
* `Pacific/Tongatapu` - Pacific/Tongatapu
* `Pacific/Wake` - Pacific/Wake
* `Pacific/Wallis` - Pacific/Wallis
* `US/Alaska` - US/Alaska
* `US/Arizona` - US/Arizona
* `US/Central` - US/Central
* `US/Eastern` - US/Eastern
* `US/Hawaii` - US/Hawaii
* `US/Mountain` - US/Mountain
* `US/Pacific` - US/Pacific
* `UTC` - UTC

# components.schemas.V2ProjectSettings.properties.browserMediaDevicesPermissions.description
Controls how navigator.mediaDevices.getUserMedia and getDisplayMedia behave during test runs

* `disabled` - Disabled
* `always_accept` - Always accept
* `always_decline` - Always decline

# components.schemas.V2ResolveVisualRegression.properties.type.description
* `set_new_max_difference` - Max Difference
* `set_new_reference` - Set New Reference

# components.schemas.V2StepRunDetail.properties.status.description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# components.schemas.V2SuiteRun.properties.runMode.description
* `server` - cloud
* `local` - local
* `recording` - recording

# components.schemas.V2SuiteRun.properties.status.description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# components.schemas.V2SuiteRunState.properties.status.description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# components.schemas.V2TestCreate.properties.screenSizeType.description
* `desktop` - Desktop
* `mobile` - Mobile
* `custom` - Custom

# components.schemas.V2TestDetails.properties.screenSizeType.description
* `desktop` - Desktop
* `mobile` - Mobile
* `custom` - Custom

# components.schemas.V2TestRun.properties.runMode.description
* `server` - cloud
* `local` - local
* `recording` - recording

# components.schemas.V2TestRun.properties.screenSizeType.description
* `desktop` - Desktop
* `mobile` - Mobile
* `custom` - Custom

# components.schemas.V2TestRun.properties.section.description
* `main` - Main
* `before_all` - Before all
* `after_all` - After all

# components.schemas.V2TestRun.properties.status.description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# components.schemas.V2TestRun.properties.triggeredBy.description
* `user` - User
* `api` - Api
* `webhook` - Webhook
* `scheduler` - Scheduler
* `github` - Github
* `cli` - Cli
* `agent` - Agent

# components.schemas.V2TestRunState.properties.status.description
* `error` - Error
* `passed` - Passed
* `failed` - Failed
* `running` - Running
* `auto_retrying` - Auto Retrying
* `stopped` - Stopped
* `queued` - Queued
* `paused` - Paused
* `skipped` - Skipped
* `recording` - Recording
* `initialized` - Initialized

# components.schemas.V2VisualRegressionCompareResult.properties.maxDiff.description
Maximum allowed difference used for comparison

# components.schemas.V2VisualRegressionCompareResult.properties.screenSizeType.description
* `desktop` - Desktop
* `mobile` - Mobile
* `custom` - Custom

# components.schemas.V2VisualRegressionCompareResult.properties.runMode.description
* `server` - cloud
* `local` - local
* `recording` - recording

# components.schemas.V2VisualRegressionRefScreenshot.properties.runMode.description
* `server` - cloud
* `local` - local
* `recording` - recording

# components.schemas.V2VisualRegressionRefScreenshotCreate.properties.screenSizeType.description
* `desktop` - Desktop
* `mobile` - Mobile
* `custom` - Custom

# components.schemas.V2VisualRegressionRefScreenshotCreate.properties.runMode.description
* `server` - cloud
* `local` - local
* `recording` - recording

# components.schemas.V2WaitingConditionRun.properties.type.description
* `documentComplete` - documentComplete
* `elementIsVisible` - elementIsVisible
* `elementIsNotCovered` - elementIsNotCovered
* `elementIsNotAnimating` - elementIsNotAnimating
* `elementIsNotDisabled` - elementIsNotDisabled
* `elementHasFocus` - elementHasFocus
* `networkIdle` - networkIdle
* `pageNavigationAfterExecution` - pageNavigationAfterExecution
* `elementHasAttribute` - elementHasAttribute

# components.securitySchemes.tokenAuth.description
Token-based authentication with required prefix "Token"

# tags[].description
Importing and exporting YAML and ZIP files