Docs

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 uninstallAppBeforeRun with deviceReset gives 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 retryOnSameDevice when 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 testcaseTimeout slightly 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 stats data point is mandatory in at least one entry. Conditions cannot be applied to the stats data 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 ending capture 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

  1. Click the Manual icon on the Project Dashboard.
  2. Select your device from the device list.
  3. Click the Configure Session icon (top-right).
  4. Choose your Run Setting profile from the Run Settings dropdown.
  5. Click the info icon next to the selected profile to review its configuration.
  6. Start the session.

Automation Job (Hub)

  1. Click the Automation icon on the Project Dashboard.
  2. Select one or more devices.
  3. Click Configure Session (top-right).
  4. Select your Run Setting profile from the dropdown.
  5. Review and confirm, then launch the job.

Test Suite (Runner)

  1. Click the Test Suites icon on the Project Dashboard.
  2. Locate the test suite you want to run.
  3. Click the Play icon next to the suite.
  4. Select your Run Setting profile from the dropdown.
  5. 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