Runtime Tests Overview and CLI#
A three-stage pipeline discovers assets, generates batch jobs, runs tests, and builds reports. Preferred entrypoint inside Kit: workspace runtime_tests.
batch_maker.py: Discovers assets via search functions and test definitions; writes job JSON under
_testing/batch_jobs/.job_runner.py: Executes jobs; writes results under
_testing/job_outputs/(XML, images, logs, artifacts).report_generator.py: Builds
test_results.json,report/test_results_index.json, andindex.htmlin_testing/.
All three are wrapped by omni.simready.workspace_commands.runtime_tests for in-Kit invocation.
Quickstart#
Ensure your SimReady project root is configured in WorkspaceConfiguration.
Ensure
local_run/runners_info.tomlcontains a Kit runner.Generate jobs, run, and report:
workspace runtime_tests
Open the report:
{project_root}/_testing/index.html
Why use runtime tests?#
Pre-check-in validation: Verify assets meet capability/profile expectations before committing (screenshots, metrics, pass/fail).
Repeatable coverage: Run consistent searches over large libraries to validate many assets across engines/platforms.
CI-ready outputs: Structured job files, XML results, and deterministic HTML/JSON reports.
Fast iteration loop: Filter by modified assets, re-run only affected jobs, keep outputs for diffs.
Typical workflows:
Before check-in: run full workflow, spot-check the HTML, fix issues, re-run quickly.
Feature/profile changes: adjust test definitions or search filters, regenerate jobs, compare reports.
Engine updates: re-run existing jobs across updated engines/runners to catch regressions.
End-to-end usage (preferred)#
Full workflow:
workspace runtime_tests [--modified-assets-list FILE]
Sub-commands:
workspace runtime_tests batch_maker [ARGS]
workspace runtime_tests job_runner [ARGS]
workspace runtime_tests report_generator [ARGS]
Note: help, ?, -?, or /? are mapped to --help for subcommands.
CLI reference#
batch_maker.py#
Generates job JSON files. When used via workspace, --search-library-path is auto-injected if discoverable; for direct CLI it is required.
Path specification (choose exactly one method):
Method 1 (single pathset):
--search-functions-dir PATH--test-definitions-dir PATH--project-config-file PATH
Method 2 (multiple pathsets):
--pathsets-json JSON_ARRAY
Method 3 (auto-derive from project root):
--project-root PATH
Other options:
--runner-info PATH(default:local_run/runners_info.toml; if default, path is auto-derived from--project-root)--search-library-path PATH(required for CLI; workspace wrapper auto-discovers)--modified-assets-list FILE(JSON array of allowed assets)--tests TEST...(filter to specific tests; search still runs)--manual-assets PATH...(intersect search results with these assets)--list-tests(print available test identifiers and exit)--list-tests-format(control the format of the –list-tests command, default totext)--list-tests-path(optional absolute path location where the output of the –list-tests output is to be written)--output-directory PATH(defaults to{project_root}/_testing/batch_jobswhen project root is known)--execution-mode {local|distributed}(default:local)--platforms windows linux(space-separated list; default auto-detect)--keep-outputs
Outputs: {project_root}/_testing/batch_jobs/*.json
Examples (Kit):
# Minimal project-root invocation (workspace)
workspace runtime_tests batch_maker --project-root D:/simready --keep-outputs
# Explicit CLI (advanced) with platforms and modified assets filtering
python batch_maker/batch_maker.py \
--project-root D:/simready \
--search-library-path D:/simready/search_library \
--platforms windows linux \
--modified-assets-list D:/simready/modified_assets.json
# Select a specific test (search still runs)
workspace runtime_tests batch_maker --project-root D:/simready --tests kit_test/minimal_app
# Select tests and intersect with specific assets
workspace runtime_tests batch_maker --project-root D:/simready \
--tests kit_test/minimal_app \
--manual-assets sample_content/common_assets/props_general/obs_orange_a01/obs_orange_a01.usd
job_runner.py#
Executes a job file and (optionally) archives results.
Positional:
job_filePath to job JSON.
Options:
--timeout INT(default: 600)--enable-output-timeout--output-timeout FLOAT(default: 30.0)--enable-zip--delete-folders-after-zip--keep-outputs
Outputs: {project_root}/_testing/job_outputs/<runner>/<job>/<asset>/
Examples (Kit):
# Run auto-detected job (workspace subcommand)
workspace runtime_tests job_runner --enable-zip
# Run a specific job file (recommended for distributed)
python job_runner/job_runner.py D:/simready/_testing/batch_jobs/kit_runner_windows_gpu_000_windows.json --timeout 1200 --enable-zip
report_generator.py#
Builds JSON and HTML reports in the output base directory.
Required:
--output-dir PATH(must containbatch_jobs/andjob_outputs/unless overridden)
Optional:
--jobs-dir PATH(default:{output-dir}/batch_jobs)--results-dir PATH(default:{output-dir}/job_outputs)--assets-per-page INT(default: 25)--keep-outputs
Outputs:
{output-dir}/test_results.json{output-dir}/report/test_results_index.json{output-dir}/index.html
Examples:
# Default directories
workspace runtime_tests report_generator --output-dir D:/simready/_testing
# Explicit directories and pagination
python report_generator/report_generator.py \
--output-dir D:/simready/_testing \
--jobs-dir D:/simready/_testing/batch_jobs \
--results-dir D:/simready/_testing/job_outputs \
--assets-per-page 50
runners_info.toml (maintained by user/CI)#
runners_info.toml is owned by the user or CI/CD maintainer. batch_maker reads this file to know:
Which engines/runners exist and on which platform they run (Kit and Kit-derived apps)
Where the engine executable is located
How many runner instances to create (for distributed asset splitting)
Optional per-runner output locations and metadata
Required fields per runner:
engine(use"kit"for Kit and Kit-derived applications)platform("windows"or"linux")project_root(absolute path)executable_path(absolute or relative toproject_root)number_of_runners(int >= 1)hardware_gpu(true for GPU missions)
Optional fields:
output_dir,docker_image,runner_config_file
Example (Windows):
[kit_runner_windows_gpu]
engine = "kit"
platform = "windows"
project_root = "D:/simready_next/simready_foundations"
executable_path = "../packages/kit_107_3_0"
hardware_gpu = true
number_of_runners = 2
Example (Linux):
[kit_runner_linux_gpu]
engine = "kit"
platform = "linux"
project_root = "/work/simready_next/simready_foundations"
executable_path = "../packages/kit_107_3_0"
hardware_gpu = true
number_of_runners = 2
Notes#
runners_info.tomlcontent is maintained by user/CI; batch_maker only reads it (default path is derived from--project-rootif not provided).Platforms flag uses space-separated values (e.g.,
--platforms windows linux).