UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

uip tm report

Generate a structured verdict summary for a completed test execution, or export an execution report file in Excel, PDF, or JUnit format, using `uip tm report`.

uip tm report summarizes and exports test execution reports. report get produces a structured summary of a completed execution: counts, pass rate, duration, and every failed test case with the assertion message that explains the failure. The output serves as a human-scannable dashboard line or a machine-readable verdict for CI pipelines. report export asks Test Manager to build a report file (Excel, PDF, or JUnit) for one execution, or PDFs of chosen test case results.

Synopsis​

uip tm report get --execution-id <uuid> (--project-key <key> | --project-id <id> | --test-set-key <key>) [--query <expr>]
uip tm report export (--project-key <key> | --project-id <id>) (--execution-id <uuid> [--format <format>] | --test-case-log-ids <uuid...>) [--time-zone <iana-name>] [--wait --output-file <path> [--overwrite] [--timeout <seconds>] [--poll-interval <seconds>]]
uip tm report get --execution-id <uuid> (--project-key <key> | --project-id <id> | --test-set-key <key>) [--query <expr>]
uip tm report export (--project-key <key> | --project-id <id>) (--execution-id <uuid> [--format <format>] | --test-case-log-ids <uuid...>) [--time-zone <iana-name>] [--wait --output-file <path> [--overwrite] [--timeout <seconds>] [--poll-interval <seconds>]]

All verbs honor the global options and the standard exit codes.

uip tm report get​

Get a summary for a completed test execution. The command:

  1. Fetches the execution's stats (passed, failed, none, duration, timing).
  2. Pages through the failed test case logs.
  3. For each failed log without an info string, fetches its assertions and concatenates the messages of the failed ones.
  4. Returns one JSON envelope with the summary plus a FailedTests list keyed by test case name.

The command exits 0 whenever it produces the summary, whether the run passed or failed. Turning "failed tests present" into a non-zero CI exit is the caller's job (branch on .Data.Failed). See Exit-code behavior on executions for the recommended three-step pipeline.

Arguments​

None.

Options​

  • --execution-id <uuid> (required) — execution to summarize. Get this from uip tm testsets run output.

  • --project-key <key> — owning project key.

  • --project-id <id> — owning project ID. Use instead of --project-key.

    Pass --project-id, --project-key, or --test-set-key. When you pass more than one, --project-id is used first, then --project-key, then the project prefix of --test-set-key.

  • --test-set-key <key> — test set key (for example, DEMO:42); the project key is derived from the prefix.

  • --query <expr> — jq-style filter applied to the Data payload. The filtered value replaces Data in the ReportGet envelope. Supports field access (.Field, .Field.Nested) and object construction ({key: .Field}).

Examples​

# simplest
uip tm report get --execution-id a1b2c3d4-0000-0000-0000-000000000001 --project-key DEMO

# scripting-friendly — pick a subset
uip tm report get \
  --execution-id a1b2c3d4-0000-0000-0000-000000000001 \
  --project-key DEMO \
  --query '{total: .TotalTests, passed: .Passed, failed: .Failed}'
# simplest
uip tm report get --execution-id a1b2c3d4-0000-0000-0000-000000000001 --project-key DEMO

# scripting-friendly — pick a subset
uip tm report get \
  --execution-id a1b2c3d4-0000-0000-0000-000000000001 \
  --project-key DEMO \
  --query '{total: .TotalTests, passed: .Passed, failed: .Failed}'

Data shape (default output)​

{
  "Code": "ReportGet",
  "Data": {
    "ExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
    "TestSetName": "Smoke Suite",
    "TotalTests": 10,
    "Passed": 8,
    "Failed": 2,
    "Skipped": 0,
    "PassRate": "80%",
    "StartTime": "2025-04-15T10:00:00.000Z",
    "EndTime": "2025-04-15T10:02:15.000Z",
    "Duration": "00:02:15",
    "FailedTests": [
      { "TestCaseName": "Login flow", "Error": "Selector not found" },
      { "TestCaseName": "Logout flow", "Error": "Timeout" }
    ]
  }
}
{
  "Code": "ReportGet",
  "Data": {
    "ExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
    "TestSetName": "Smoke Suite",
    "TotalTests": 10,
    "Passed": 8,
    "Failed": 2,
    "Skipped": 0,
    "PassRate": "80%",
    "StartTime": "2025-04-15T10:00:00.000Z",
    "EndTime": "2025-04-15T10:02:15.000Z",
    "Duration": "00:02:15",
    "FailedTests": [
      { "TestCaseName": "Login flow", "Error": "Selector not found" },
      { "TestCaseName": "Logout flow", "Error": "Timeout" }
    ]
  }
}
FieldMeaning
TotalTestsPassed + Failed + Skipped.
SkippedThe execution's None count (test case logs with no result).
PassRatePercentage string, for example "80%".
StartTime, EndTimeISO 8601 timestamps from the execution stats; empty when not set.
DurationFormatted HH:MM:SS.
FailedTests[].ErrorThe test case log's info field if present; otherwise a ; -joined list of failed assertion messages; otherwise an empty string.

uip tm report export​

Export a report file. Pass --execution-id for one execution's report in Excel, PDF, or JUnit format, or --test-case-log-ids for a PDF of chosen test case results. One test case result produces a .pdf; two or more produce one .zip with a PDF per result. Exactly one of --execution-id or --test-case-log-ids is required.

Test Manager builds the file as a background job. Without --wait, the command returns the job, and its Instructions name the two commands that finish it: export-jobs get (with --object-type testExecution for an execution report, or --object-type testCaseLog for test case results) until Status reads Completed, then attachment download --attachment-id for the file. With --wait, the command polls the job itself and writes the file to --output-file.

A PDF of test case results needs a Test Cloud license for the account and the execution-read permission on the project. JUnit export can be turned off on a tenant; result download builds JUnit XML on the CLI instead.

Arguments​

None.

Options​

  • --project-key <key> — owning project key.

  • --project-id <id> — owning project ID. Use instead of --project-key.

    Pass --project-id or --project-key. When you pass both, --project-id is used.

  • --execution-id <uuid> — execution whose report to export.

  • --format <format> — report file format, with --execution-id only: excel, pdf, or junit. Defaults to excel. Refused with --test-case-log-ids, which always export PDF.

  • --test-case-log-ids <uuid...> — space-separated test case log UUIDs whose results to export as PDFs.

  • --time-zone <iana-name> — IANA time zone for the timestamps written into the file, for example Europe/Bucharest. Defaults to UTC. An unknown name is refused before the export starts.

  • --wait — wait until the export finishes and write the file to --output-file.

  • --output-file <path> — where to write the report file. Required with --wait. The parent directory must already exist.

  • --overwrite — replace --output-file if it already exists. Without it, an existing file is refused before the export starts.

  • --timeout <seconds> — maximum seconds to wait; 0 means no timeout. Defaults to 600. Requires --wait.

  • --poll-interval <seconds> — seconds between status checks. Defaults to 5. Requires --wait.

--output-file, --overwrite, --timeout, and --poll-interval have no effect without --wait; the command logs a warning and returns the job. With --wait, a --timeout that elapses exits 2 and writes nothing; the export carries on in the background.

Examples​

# start a PDF report of one execution and get the job back
uip tm report export \
  --project-key DEMO \
  --execution-id a1b2c3d4-0000-0000-0000-000000000001 \
  --format pdf

# export one execution's results as JUnit XML, wait, and write the file
uip tm report export \
  --project-key DEMO \
  --execution-id a1b2c3d4-0000-0000-0000-000000000001 \
  --format junit \
  --wait \
  --output-file ./results.xml

# PDFs of two test case results, written as one .zip
uip tm report export \
  --project-key DEMO \
  --test-case-log-ids c3d4e5f6-0000-0000-0000-000000000011 c3d4e5f6-0000-0000-0000-000000000012 \
  --wait \
  --output-file ./results.zip
# start a PDF report of one execution and get the job back
uip tm report export \
  --project-key DEMO \
  --execution-id a1b2c3d4-0000-0000-0000-000000000001 \
  --format pdf

# export one execution's results as JUnit XML, wait, and write the file
uip tm report export \
  --project-key DEMO \
  --execution-id a1b2c3d4-0000-0000-0000-000000000001 \
  --format junit \
  --wait \
  --output-file ./results.xml

# PDFs of two test case results, written as one .zip
uip tm report export \
  --project-key DEMO \
  --test-case-log-ids c3d4e5f6-0000-0000-0000-000000000011 c3d4e5f6-0000-0000-0000-000000000012 \
  --wait \
  --output-file ./results.zip

Data shape (without --wait)​

{
  "Code": "ReportExport",
  "Data": {
    "Id": "b2c3d4e5-0000-0000-0000-000000000001",
    "Status": "Initiated",
    "TaskType": "TestExecutionPdfExport",
    "AttachmentId": null,
    "Created": "2026-10-15T10:00:00.000Z",
    "CreatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "Updated": "2026-10-15T10:00:00.000Z",
    "UpdatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "Payload": null
  }
}
{
  "Code": "ReportExport",
  "Data": {
    "Id": "b2c3d4e5-0000-0000-0000-000000000001",
    "Status": "Initiated",
    "TaskType": "TestExecutionPdfExport",
    "AttachmentId": null,
    "Created": "2026-10-15T10:00:00.000Z",
    "CreatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "Updated": "2026-10-15T10:00:00.000Z",
    "UpdatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "Payload": null
  }
}

Id is the export job ID. AttachmentId stays null until the job completes; then it is the ID of the produced file.

Data shape (with --wait)​

{
  "Code": "ReportExport",
  "Data": {
    "Id": "b2c3d4e5-0000-0000-0000-000000000001",
    "Status": "Completed",
    "AttachmentId": "d4e5f6a7-0000-0000-0000-000000000002",
    "OutputFile": "./results.xml",
    "FileType": "xml",
    "Bytes": 2311
  }
}
{
  "Code": "ReportExport",
  "Data": {
    "Id": "b2c3d4e5-0000-0000-0000-000000000001",
    "Status": "Completed",
    "AttachmentId": "d4e5f6a7-0000-0000-0000-000000000002",
    "OutputFile": "./results.xml",
    "FileType": "xml",
    "Bytes": 2311
  }
}

FileType is what was written: xlsx, pdf, xml, or zip. When it does not match the extension of --output-file, the command logs a warning.

  • testsets run — produces the ExecutionId consumed here.
  • wait — block until the execution is in a terminal state before asking for a summary.
  • result — the same data as a JUnit XML file, built on the CLI.
  • export-jobs — check the export job that report export starts.
  • executions export — a spreadsheet of many executions rather than one execution's report.
  • executions testcaselogs list — full enumeration of logs (not only failures), and the source of --test-case-log-ids.
  • testcaselog list-assertions — examine a single failed log.

See also​

Was this page helpful?

Connect

Need help? Support(opens in new window)

Want to learn? UiPath Academy(opens in new window)

Have questions? UiPath Forum(opens in new window)

Stay updated