Testing in Roboticks
Roboticks treats every test as a verification artifact. A test is not just a green or red dot — it is the bottom diagonal of the V-model, the thing that proves a requirement on the left is implemented by the code on the right.The job is traceability. Roboticks doesn’t replace pytest, gtest, or launch_testing. It records what each test confirms, ties that to a requirement, and packages the result for an auditor.
The V-model diagonals
The V-model splits product development into two arms: requirements decomposition on the left, integration and verification on the right. The diagonals connecting the two are the only thing a regulator cares about. Roboticks owns the dotted arrows. Every passing test on the right closes a diagonal back to a requirement on the left.Supported frameworks
| Framework | Language | Use for |
|---|---|---|
| pytest | Python | Unit + integration tests using rclpy assertion helpers, fault injection, MCAP capture |
| gtest | C++ | Unit + integration tests inside ament_cmake packages with the roboticks_cpp library |
| launch_testing | Python | System tests that bring up multiple nodes and assert on their interactions |
@confirms metadata. See Wire contract for the exact shape.
How a test becomes a traceability link
- You import
roboticksand decorate a test with@confirms("REQ-014"). - The pytest11 plugin (registered automatically by the entry point) intercepts the decoration and writes it into the JUnit XML as a
<property name="roboticks.confirms" value="REQ-014"/>. - The runner uploads the JUnit XML to the Roboticks platform.
- The traceability engine parses the property, looks up
REQ-014, and records: this test, this commit, this result, confirms this requirement. - The matrix UI and the next evidence pack reflect the link.
ROBOTICKS_CONFIRMS and for launch_testing via the standard pytest mechanism.
Where tests run
Locally
Run
pytest or colcon test as you always have. The SDK still emits @confirms; you can upload the JUnit XML afterwards or trigger a cloud run with the CLI.Hosted runners
Fargate Spot for headless ROS2; G4dn.xlarge Spot Fleet for Gazebo Harmonic and Webots GPU jobs. Sim-minute metered.
Self-hosted runners
Run the
roboticks-runner Go binary on your own hardware. Compute is always free of charge.Air-gapped
Enterprise mode for regulated networks. Same wire contract, no outbound calls.
What you get
- A Check Run on every PR with the requirement-coverage delta.
- A live traceability matrix at
app.roboticks.iofor the head of every branch. - An evidence pack per release: PDF + ReqIF + ZIP with a tamper-evident hash chain.
- An LLM triage verdict on each failing test, citing logs, MCAPs, and the confirming requirement.
Where to start
Quickstart
Install the GitHub App, mark one test, see the matrix update.
Write tests in pytest
@confirms, rclpy assertion helpers, conftest patterns.Write tests in C++
gtest with the
ROBOTICKS_CONFIRMS macro and roboticks_cpp.Wire contract
The JUnit-with-confirms schema, versioning, and forward-compat rules.