Run Settings — Complete Reference
Overview
Run Settings let you define exactly how your test jobs behave — from device preparation and app lifecycle, to retry logic, timeouts, App Vitals monitoring, and post-run integrations. Configure a named Run Setting profile once and apply it across manual sessions, automation jobs, and test suites.
Access: From the Project Dashboard, click the Run Settings icon.
Run Settings Types
RobusTest provides three types of Run Settings, each designed for a specific testing mode:
| Type | Used For | Frameworks Covered |
|---|---|---|
| Manual | Interactive manual test sessions | Android Manual, iOS Manual |
| Runner | Test suite executions using RobusTest Runner | Appium (Android & iOS) |
| Hub / Espresso-XCUITest | Native framework automation jobs | Android Espresso, iOS XCUITest, iOS XCTest, Roku |
Framework Applicability Key
Throughout this document, the Applies To column uses these short labels:
| Label | Meaning |
|---|---|
Manual |
Android and iOS manual test sessions |
Runner |
RobusTest Runner test suite sessions |
Espresso |
Android Espresso jobs |
XCUITest |
iOS XCUITest jobs |
XCTest |
iOS XCTest jobs |
Roku |
Roku automation jobs |
All Settings by Category
1. General Settings
Control how the device, app, and environment are prepared before a test begins.
1a. Device & App Preparation
| Attribute | Description | Default | Applies To |
|---|---|---|---|
general.deviceReset |
Resets the device at the start and end of every session, ensuring a clean state. Values: true, false. |
false |
Manual, Runner |
general.uninstallAppBeforeRun |
Uninstalls the app under test before the session begins. Gives each run a fresh install state. Values: true, false. |
false |
Manual, Runner, Espresso, XCUITest |
general.uninstallAppAfterRun |
Uninstalls the app under test once the session ends. Keeps devices clean. Values: true, false. |
false |
Manual, Runner, Espresso, XCUITest |
uninstallApps |
List of additional app package IDs to uninstall before the job starts. Useful for removing companion or leftover test apps. E.g. ["com.example.app", "com.example.app.test"] |
[] |
Espresso, XCUITest |
Tip: Combining
uninstallAppBeforeRunwithdeviceResetgives the cleanest possible starting state and is recommended for regression jobs where result consistency matters.
2. Job Settings
Govern the lifecycle of a full test execution — retries, timeouts, device management, and recording.
2a. Retry Behaviour
| Attribute | Description | Default | Applies To |
|---|---|---|---|
job.maxJobAttempts |
Total number of times the entire job is retried if it fails. Minimum: 1. | 2 |
Espresso, XCUITest, XCTest, Roku |
job.maxTestCaseAttempts |
Number of times an individual failed test case is retried before being marked as failed. | 2 |
Espresso, XCUITest, XCTest |
job.retryOnSameDevice |
When a test case fails, retry it on the same device instead of a different one. Values: true, false. |
false |
Espresso, XCUITest, Roku |
job.firstRetryOnSameDevice |
For the very first retry after a failure, use the same device before moving to an alternative. Values: true, false. |
false |
Espresso, XCUITest, Roku |
job.uninstallAUTAfterAttempt |
Uninstalls and reinstalls the app under test after each attempt, giving each retry a fresh install state. Values: true, false. |
false |
Espresso, XCUITest |
Tip: Use
retryOnSameDevicewhen failures are likely due to timing or transient issues. Use a different device for retries when you suspect device-specific instability.
2b. Timeouts
| Attribute | Description | Default | Applies To |
|---|---|---|---|
job.testcaseTimeout |
Maximum time (seconds) a single test case is allowed to run before it is forcefully stopped. | 600 |
Espresso, XCUITest, XCTest, Roku |
job.idleTimeout |
Maximum time (seconds) a job can remain idle without any activity before it is terminated. | 3600 |
Espresso, XCUITest, Roku |
job.devicePreparationTimeout |
Maximum time (seconds) allowed for a device to complete preparation steps (app install, reset, etc.) before the instance is closed. | 600 |
Espresso, XCUITest, Roku |
job.runTimeout |
Maximum total time (seconds) the job can be in a running state before it is discarded. | 18000 |
Espresso, XCUITest, Roku |
job.queueTimeout |
Maximum time (seconds) the job waits in the queue for an available device before being discarded. | 60000 |
Espresso, XCUITest, Roku |
job.deviceTimeout |
Maximum time (seconds) to wait for a device to become available for the job. | 0 |
Espresso, XCUITest |
Tip: Set
testcaseTimeoutslightly above your longest expected test case duration to protect jobs from hanging indefinitely on a stuck test.
2c. Device Management
| Attribute | Description | Default | Applies To |
|---|---|---|---|
job.addMoreDevices |
Allows devices to be added to the job after it has started, even beyond the maximum device count. Values: true, false. |
true |
Espresso, XCUITest, Roku |
job.deviceHealthThreshold |
Number of consecutive test case failures on a device before the system marks it as unhealthy and stops assigning tests to it for the job. | 0 (disabled) |
Espresso, XCUITest |
2d. Triggers
| Attribute | Description | Default | Applies To |
|---|---|---|---|
job.dontInvokeGlobalTriggers |
When true, prevents global-level triggers from firing for this job. Useful when a run setting has its own specific trigger configuration. Values: true, false. |
false |
Espresso, XCUITest, Roku |
3. App Vitals
App Vitals provides deep, app-level health metrics collected in parallel with test execution — with no changes required to your test scripts.
Applies To: Espresso, XCUITest
| Attribute | Description | Default |
|---|---|---|
performance.enableAppVitals |
Activates App Vitals monitoring for the test run. When enabled, health metrics are collected per test case and surfaced in the job report. Values: true, false. |
false |
For a full list of metrics collected per platform see:
4. Hooks
Configure external integrations that are triggered when a job completes. Use these to push job data to monitoring systems or call external endpoints.
4a. REST Webhook
Trigger an external endpoint when the job finishes. Can be used with any REST-compatible service including Slack incoming webhooks.
Applies To: Espresso, XCUITest, Roku
| Attribute | Description | Default |
|---|---|---|
hooks.rest.url |
The endpoint URL to call when the job finishes. E.g. a Slack incoming webhook URL or an internal CI listener. | "" |
hooks.rest.method |
The HTTP verb to use. E.g. POST, GET. |
POST |
hooks.rest.authToken |
An optional bearer token or API key for authenticated endpoints. | "" |
4b. InfluxDB Integration
Push job metrics directly to your InfluxDB instance for custom dashboards and long-term trend analysis.
Applies To: Espresso, XCUITest, Roku
| Attribute | Description | Default |
|---|---|---|
hooks.influxDB.server |
InfluxDB server URL. E.g. http://your-influxdb-host:8086. |
"" |
hooks.influxDB.database |
Target database name in InfluxDB. | "" |
hooks.influxDB.username |
InfluxDB authentication username. | "" |
hooks.influxDB.password |
InfluxDB authentication password. | "" |
5. Storage Settings
Configure where job artefacts (logs, screenshots, videos) are stored. By default, artefacts are stored in the RobusTest default storage. Use this section to route artefacts to a custom cloud storage engine.
Applies To: Espresso, XCUITest
| Attribute | Description | Default |
|---|---|---|
job.storage.storageEngineID |
The ID of the cloud storage engine configured in Admin Console → Cloud Storage. Leave empty to use default storage. | "" |
job.storage.createReplica |
When true, a replica of the artefacts is also stored in the default RobusTest storage in addition to the specified engine. Values: true, false. |
false |
job.storage.dataPoints |
List of specific artefact types to route to the custom storage engine. E.g. ["screenshot", "deviceLog", "result"]. Leave empty to route all artefacts. |
[] |
6. Test Data Collections
Configure what test artefacts are collected and pushed to external integrations (such as Report Portal) at the end of a job run. Each entry in the list defines one artefact type and its destination.
Applies To: Espresso, XCUITest
| Attribute | Description | Default |
|---|---|---|
job.testDataCollections[].testDataPoint |
The type of artefact to collect and push. Values: stats, deviceLog, result, screenshot. At least one entry must have stats. |
"" |
job.testDataCollections[].integrationType |
The integration target. E.g. reportPortal. |
"" |
job.testDataCollections[].integrationID |
The ID of the integration configured in Admin Console → Integrations. | "" |
job.testDataCollections[].invokeConditions |
Optional conditions that control when this artefact is pushed. E.g. push screenshots only for failed test cases. See conditions format below. | [] |
Invoke Condition fields:
| Field | Description |
|---|---|
attributeName |
The attribute to evaluate. E.g. status. |
attributeValue |
The value to match against. E.g. Fail, Pass. |
operator |
The comparison operator. E.g. =. |
Note: The
statsdata point is mandatory in at least one entry. Conditions cannot be applied to thestatsdata point.
For full integration setup see:
7. Custom Tags
Tags are labels automatically applied to test case results based on content found in the test output or device log. This lets you categorise failures by type (e.g. "crash", "network error", "timeout") without manual review.
Applies To: Espresso, XCUITest
| Attribute | Description |
|---|---|
job.tags[].name |
The label applied to matching test results. E.g. "Crash Log". |
job.tags[].place |
Where to search for the term. Values: result (test output) or deviceLog (device log). |
job.tags[].regx |
The text or regex pattern to search for. E.g. "INSTRUMENTATION_RESULT: shortMsg=Process crashed". |
job.tags[].condition |
true — apply tag when the pattern is found; false — apply tag when the pattern is absent. |
Example: Create a tag named "Crash Log", searching result for "INSTRUMENTATION_RESULT: shortMsg=Process crashed" with condition true. Any test case whose result contains that string is automatically labelled Crash Log.
8. Analysis Rules
Analysis rules let you define custom conditions that override the default job pass/fail status. Rules are evaluated in order — the first matching rule determines the final job status.
Applies To: Espresso, XCUITest
| Attribute | Description |
|---|---|
job.analysis[].name |
A label for this analysis rule. |
job.analysis[].place |
What to evaluate: job (overall job statistics) or tag (results matching a specific tag name). |
job.analysis[].field |
Which result type to count: pass, fail, or error. |
job.analysis[].type |
Whether the threshold is a % (percentage) or count (absolute number). |
job.analysis[].threshold |
The numeric value to compare against. E.g. 95 for 95%. |
job.analysis[].changeJobStatus |
Whether this rule changes the job's reported status. Values: true, false. |
job.analysis[].jobStatus |
The status to assign if the rule matches. E.g. Pass, Fail. |
job.analysis[].gitPRState |
Sets the associated pull request state. Values: success, failure. |
job.analysis[].notificationStatus |
Status value used to determine which notifications (triggers) fire for this rule. |
Example: Set job status to Pass if at least 95% of test cases pass — even if a small number of known flaky tests fail. Set Git PR state to success so your CI pipeline proceeds.
9. Screenshot Settings
Control when screenshots are automatically captured and how many are saved per test case.
Applies To: Espresso, XCUITest
| Attribute | Description | Default |
|---|---|---|
screenshotSettings.screenshotCaptureStatus |
Which result states trigger screenshot capture. Values: Pass, Fail, Error — provide as an array. E.g. ["Fail", "Error"]. |
[] |
screenshotSettings.screenshotCount |
Maximum number of screenshots to capture per test case. 0 means unlimited. |
0 |
screenshotSettings.screenshotInterval |
Time (seconds) between successive screenshots when capturing multiple. | 0 |
screenshotSettings.screenshotCaptureLimit |
Which screenshots to retain when the count is exceeded. Values: all, starting (first N), ending (last N). |
"" |
Tip: For failure investigation, use
endingcapture limit — you get the screenshots closest to the point of failure, which are the most useful for debugging.
Default Values Quick Reference
| Setting | Manual | Runner | Espresso | XCUITest | XCTest | Roku |
|---|---|---|---|---|---|---|
deviceReset |
false | false | — | — | — | — |
uninstallAppBeforeRun |
false | false | false | false | — | — |
uninstallAppAfterRun |
false | false | false | false | — | — |
maxJobAttempts |
— | — | 2 | 2 | 2 | 2 |
maxTestCaseAttempts |
— | — | 2 | 2 | 2 | — |
retryOnSameDevice |
— | — | false | false | — | false |
firstRetryOnSameDevice |
— | — | false | false | — | false |
uninstallAUTAfterAttempt |
— | — | false | false | — | — |
dontInvokeGlobalTriggers |
— | — | false | false | — | false |
testcaseTimeout |
— | — | 600s | 600s | 600s | 600s |
idleTimeout |
— | — | 3600s | 3600s | — | 3600s |
devicePreparationTimeout |
— | — | 600s | 600s | 600s | 600s |
runTimeout |
— | — | 18000s | 18000s | 18000s | 18000s |
queueTimeout |
— | — | 60000s | 60000s | 60000s | 60000s |
addMoreDevices |
— | — | true | true | — | true |
enableAppVitals |
— | — | false | false | — | — |
Applying Run Settings
Manual Test Session
- Click the Manual icon on the Project Dashboard.
- Select your device from the device list.
- Click the Configure Session icon (top-right).
- Choose your Run Setting profile from the Run Settings dropdown.
- Click the info icon next to the selected profile to review its configuration.
- Start the session.
Automation Job (Hub)
- Click the Automation icon on the Project Dashboard.
- Select one or more devices.
- Click Configure Session (top-right).
- Select your Run Setting profile from the dropdown.
- Review and confirm, then launch the job.
Test Suite (Runner)
- Click the Test Suites icon on the Project Dashboard.
- Locate the test suite you want to run.
- Click the Play icon next to the suite.
- Select your Run Setting profile from the dropdown.
- Confirm and execute.
All Attributes at a Glance
| Attribute | Section | Applies To |
|---|---|---|
general.deviceReset |
General | Manual, Runner |
general.uninstallAppBeforeRun |
General | Manual, Runner, Espresso, XCUITest |
general.uninstallAppAfterRun |
General | Manual, Runner, Espresso, XCUITest |
uninstallApps |
General | Espresso, XCUITest |
job.maxJobAttempts |
Job — Retry | Espresso, XCUITest, XCTest, Roku |
job.maxTestCaseAttempts |
Job — Retry | Espresso, XCUITest, XCTest |
job.retryOnSameDevice |
Job — Retry | Espresso, XCUITest, Roku |
job.firstRetryOnSameDevice |
Job — Retry | Espresso, XCUITest, Roku |
job.uninstallAUTAfterAttempt |
Job — Retry | Espresso, XCUITest |
job.testcaseTimeout |
Job — Timeout | Espresso, XCUITest, XCTest, Roku |
job.idleTimeout |
Job — Timeout | Espresso, XCUITest, Roku |
job.devicePreparationTimeout |
Job — Timeout | Espresso, XCUITest, Roku |
job.runTimeout |
Job — Timeout | Espresso, XCUITest, Roku |
job.queueTimeout |
Job — Timeout | Espresso, XCUITest, Roku |
job.deviceTimeout |
Job — Timeout | Espresso, XCUITest |
job.addMoreDevices |
Job — Device | Espresso, XCUITest, Roku |
job.deviceHealthThreshold |
Job — Device | Espresso, XCUITest |
job.dontInvokeGlobalTriggers |
Job — Triggers | Espresso, XCUITest, Roku |
performance.enableAppVitals |
App Vitals | Espresso, XCUITest |
hooks.rest.url |
Hooks — REST | Espresso, XCUITest, Roku |
hooks.rest.method |
Hooks — REST | Espresso, XCUITest, Roku |
hooks.rest.authToken |
Hooks — REST | Espresso, XCUITest, Roku |
hooks.influxDB.server |
Hooks — InfluxDB | Espresso, XCUITest, Roku |
hooks.influxDB.database |
Hooks — InfluxDB | Espresso, XCUITest, Roku |
hooks.influxDB.username |
Hooks — InfluxDB | Espresso, XCUITest, Roku |
hooks.influxDB.password |
Hooks — InfluxDB | Espresso, XCUITest, Roku |
job.storage.storageEngineID |
Storage | Espresso, XCUITest |
job.storage.createReplica |
Storage | Espresso, XCUITest |
job.storage.dataPoints |
Storage | Espresso, XCUITest |
job.testDataCollections[].testDataPoint |
Test Data Collections | Espresso, XCUITest |
job.testDataCollections[].integrationType |
Test Data Collections | Espresso, XCUITest |
job.testDataCollections[].integrationID |
Test Data Collections | Espresso, XCUITest |
job.testDataCollections[].invokeConditions |
Test Data Collections | Espresso, XCUITest |
job.tags[].name |
Custom Tags | Espresso, XCUITest |
job.tags[].place |
Custom Tags | Espresso, XCUITest |
job.tags[].regx |
Custom Tags | Espresso, XCUITest |
job.tags[].condition |
Custom Tags | Espresso, XCUITest |
job.analysis[].name |
Analysis Rules | Espresso, XCUITest |
job.analysis[].place |
Analysis Rules | Espresso, XCUITest |
job.analysis[].field |
Analysis Rules | Espresso, XCUITest |
job.analysis[].type |
Analysis Rules | Espresso, XCUITest |
job.analysis[].threshold |
Analysis Rules | Espresso, XCUITest |
job.analysis[].changeJobStatus |
Analysis Rules | Espresso, XCUITest |
job.analysis[].jobStatus |
Analysis Rules | Espresso, XCUITest |
job.analysis[].gitPRState |
Analysis Rules | Espresso, XCUITest |
job.analysis[].notificationStatus |
Analysis Rules | Espresso, XCUITest |
screenshotSettings.screenshotCaptureStatus |
Screenshots | Espresso, XCUITest |
screenshotSettings.screenshotCount |
Screenshots | Espresso, XCUITest |
screenshotSettings.screenshotInterval |
Screenshots | Espresso, XCUITest |
screenshotSettings.screenshotCaptureLimit |
Screenshots | Espresso, XCUITest |
