Skip to main content

uip tm wait

uip tm wait polls a test execution until it reaches a terminal state (Passed, Failed, Cancelled, etc.) and then prints a one-line summary. Use it to turn the asynchronous uip tm testsets run into a blocking step in a CI pipeline.

wait is registered as a top-level verb under tm, not as a resource — invoke it as uip tm wait, not uip tm executions wait.

Synopsis

uip tm wait --execution-id <uuid> (--project-key <key> | --test-set-key <key>) [--timeout <seconds>]

Honors the global options. See the Exit codes section below for the domain-specific behavior on timeout.

uip tm wait

Block until the given execution reaches a terminal state, polling Test Manager once every 60 seconds.

Arguments: none.

Options:

  • --execution-id <uuid> (required) — execution to wait on. Get it from uip tm testsets run.
  • --project-key <key> — owning project. Either this or --test-set-key is required.
  • --test-set-key <key> — test set key (e.g. DEMO:42); the project key is derived from the prefix.
  • --timeout <seconds> — maximum seconds to wait. Defaults to 1800 (30 minutes). Pass 0 to wait indefinitely.
  • -t, --tenant <name> — override the active session's tenant for this call.
  • --log-level <level>debug, info, warn, error. Defaults to Information.

Example:

uip tm wait \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--project-key DEMO \
--timeout 900

Data shape — when the execution reaches a terminal state before the timeout:

{
"Code": "WaitComplete",
"Data": {
"ExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"Status": "Passed",
"EndTime": "2025-04-15T10:32:11Z",
"Duration": "00:02:11"
}
}

Status can be any terminal state Test Manager reports (including Passed, Failed, Cancelled). "Reached a terminal state" is the success signal for wait — the verb exits 0 regardless of whether tests inside the execution passed or failed. To branch on pass/fail, read the report get output after wait returns.

Exit codes

wait follows the standard exit codes for 0, 1, and 3, with one domain-specific reuse of 2:

Exit codeMeaning
0Execution reached a terminal state within the timeout.
1Polling failed (repeated API errors, interrupt, abort) — see the Message field for detail.
2Timed out. The timeout elapsed before the execution reached a terminal state.
3Validation error (bad flag value, missing required option).

Exit code 2 is domain-specific. The shared CLI contract reserves 2 for AuthenticationError, but wait reuses it for timeout so that scripts can distinguish "took too long" from "polling genuinely failed" without parsing text. See Exit-code behavior on executions for the full pattern.

Script pattern:

if ! uip tm wait --execution-id "$id" --project-key DEMO --timeout 1800; then
case $? in
2) echo "timed out" >&2; exit 2 ;;
*) echo "wait failed" >&2; exit 1 ;;
esac
fi
  • testsets run — produces the ExecutionId to wait on.
  • report — summary to read once wait returns 0.
  • result — JUnit XML export.
  • executions retry — re-run the failed cases of a finished execution.

See also