Qyrus
The Qyrus node triggers a web-test suite in Qyrus and polls the run until it completes. It returns the run status, an overall pass/fail result, a link to the report, and case and scenario counts. Use it to gate deployments on automated UI tests or to fold regression suites into a larger workflow.
Common uses include:
- Running a regression suite as part of a release workflow.
- Kicking off a smoke test after a deployment and waiting for the verdict.
- Blocking downstream steps until a UI test suite passes.
- Emailing suite results to a distribution list on completion.
Before You Startโ
| What you may need | Where to set it up | Why it matters |
|---|---|---|
| Qyrus connection | Qyrus connection type | Stores the API key used to authenticate and derive the Qyrus gateway. |
| Team, project, and suite names | Qyrus | The action identifies the suite to run by team, project, and suite name. |
| A Qyrus API key | Qyrus account | The connector authenticates with the x-api-key header. |
Connectionโ
The Qyrus action requires a Qyrus connection, referenced by connectionId. The connection is a QyrusConnectionDetails record with these fields:
| Field | Required | Description |
|---|---|---|
apiKey | Yes | Qyrus API key in the form sk_<env>_<uuid> |
gatewayUrlOverride | No | Explicit gateway URL that overrides the value derived from the key |
The connector authenticates with the x-api-key header and a scope: NODE_CLI header. The gateway URL is derived from the environment segment of the API key (sk_<env>_<uuid>) unless gatewayUrlOverride is set.
Configure the connection under Connections > Qyrus in the Global Configurator, then reference it from the step.
Actionsโ
| Action | Description |
|---|---|
qyrus:runWebTest | Trigger a web-test suite and poll until it completes |
qyrus:runWebTestโ
Triggers a Qyrus web-test suite, then polls its status roughly every 30 seconds until the run finishes or the wait timeout is reached. Parameters are read from the qyrusRunWebTestDetails configuration key.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
connectionId | string | Yes | -- | Reference to the Qyrus connection |
teamName | string | Yes | -- | Qyrus team that owns the suite |
projectName | string | Yes | -- | Project containing the suite |
suiteName | string | Yes | -- | Web-test suite to run |
browser | string | No | -- | Browser to run the suite in |
browserOS | string | No | -- | Operating system for the browser |
emailId | string | No | -- | Email address to receive the result |
onErrorContinue | boolean | No | false | Continue the suite past a failed test instead of stopping |
maxWaitMinutes | integer | No | 60 | Maximum time to poll before timing out |
Example: Run a checkout regression suite
| Field | Value |
|---|---|
| connectionId | qyrus-prod |
| teamName | Web QA |
| projectName | Storefront |
| suiteName | Checkout Regression |
| browser | chrome |
| maxWaitMinutes | 30 |
What happens:
- The node authenticates with the Qyrus gateway derived from the connection's API key.
- It triggers the named suite and receives a
runId. - It polls the run status about every 30 seconds until the run completes or
maxWaitMinuteselapses. - On completion it returns the result, report URL, and case/scenario counts. The step is
COMPLETEDonly whenresultisPASS.
Outputโ
| Field | Type | Description |
|---|---|---|
runId | string | Identifier of the triggered run |
status | string | Run lifecycle status |
result | string | Overall outcome: PASS or FAIL |
reportUrl | string | Link to the Qyrus run report |
totalTestCases | integer | Total test cases in the run |
passTestCases | integer | Test cases that passed |
failTestCases | integer | Test cases that failed |
passScenarios | integer | Scenarios that passed |
failScenarios | integer | Scenarios that failed |
scriptResults | array | Per-script result details |
summary | string | Human-readable run summary |
Result handling: The step completes with status COMPLETED only when result is PASS. If the run finishes with result of FAIL, the step is marked FAILED with error type TEST_FAILED, while the full result payload (report URL and counts) remains available for inspection.
Example output:
{
"runId": "run-8f21c",
"status": "COMPLETED",
"result": "PASS",
"reportUrl": "https://gateway.qyrus.com/reports/run-8f21c",
"totalTestCases": 24,
"passTestCases": 24,
"failTestCases": 0,
"passScenarios": 6,
"failScenarios": 0,
"summary": "All 24 test cases passed across 6 scenarios"
}
Common Error Scenariosโ
| Error | Type | Likely Cause | What to Check |
|---|---|---|---|
| Missing parameter | VALIDATION_ERROR | A required field (connectionId, teamName, projectName, suiteName) is blank | Provide all required parameters |
| Team, project, or suite not found | NOTFOUND_ERROR | A name does not match a Qyrus team, project, or suite | Verify the exact names in Qyrus; the connector reports "not found" messages for the missing entity |
| Test failure | TEST_FAILED | The suite ran but finished with result of FAIL | Open the reportUrl to review failing cases; this is a test outcome, not a configuration error |
| Access blocked | HTTP 503 | The caller's IP is not whitelisted at the Qyrus gateway | Ask the Qyrus administrator to whitelist the platform's outbound IP |
| Run timeout | -- | The run did not complete within maxWaitMinutes | Increase maxWaitMinutes for long suites, or confirm the run is progressing in Qyrus |
Best Practicesโ
- Match names exactly. Team, project, and suite names must match Qyrus exactly. Store them in global variables to avoid typos and simplify updates.
- Size the wait to the suite. Set
maxWaitMinutesabove the suite's typical runtime so the node does not time out before the run finishes. - Gate on the result. Because the step fails with
TEST_FAILEDwhen the suite fails, you can branch downstream steps on success without parsing the output. - Whitelist the platform IP. A
503usually means the outbound IP is not whitelisted at the Qyrus gateway โ arrange this with the Qyrus administrator before running in production. - Send result emails. Set
emailIdto have Qyrus deliver the run report to stakeholders automatically. - Keep the API key in the connection. The gateway is derived from the
sk_<env>_<uuid>key, so store the key in the connection rather than passing it inline.