A colcon event handler that uploads test results to Tesults after colcon test completes.
If you are using GoogleTest (C++) or pytest (Python) we strongly recommend using gtest-tesults or pytest-tesults instead. Those integrations provide per-test reporting with descriptions, steps, custom fields, and file uploads. colcon-tesults reads JUnit XML output and provides basic pass/fail results only — no enhanced reporting.
colcon-tesults is best suited for mixed workspaces where per-package setup is not practical, or as a quick zero-config starting point.
pip install colcon-tesultsOr with Pixi/RoboStack:
pixi add --pypi colcon-tesultsSet TESULTS_TARGET to your target token and run colcon test as usual:
TESULTS_TARGET=token colcon testcolcon-tesults is enabled by default once installed. If TESULTS_TARGET is not set, it silently does nothing.
Keep tokens out of scripts by using a key name and pointing to a config file:
TESULTS_TARGET=my-target TESULTS_CONFIG=/path/to/tesults.cfg colcon testtesults.cfg format:
# Tesults target tokens
my-target = eyJ0eXAiOiJ...
staging = eyJ0eXAiOiK...
TESULTS_BUILD_NAME=1.0.0 \
TESULTS_BUILD_RESULT=pass \
TESULTS_BUILD_DESCRIPTION="Release build" \
TESULTS_BUILD_REASON="" \
colcon testcolcon-tesults hooks into the colcon event system. After each package's tests finish (JobEnded event), it reads the JUnit XML output from the package's build directory. When the colcon process exits, all collected results are uploaded to Tesults in a single request.