DART Testing
Load this skill when writing or debugging tests.
Quick Commands
pixi run test # Quick test run
pixi run test-py # Python tests
pixi run test-all # Build defaults and run C++/Python tests
pixi run -e gazebo test-gz # Gazebo/gz-physics compatibility gate
Full Documentation
For complete testing guide: docs/onboarding/testing.md
For CI/CD troubleshooting: docs/onboarding/ci-cd.md
Test Organization
- Unit tests:
tests/unit/ - Integration tests:
tests/integration/ - Regression tests: Near the code they test
Writing Tests
- Follow existing patterns in the test directory
- Use GoogleTest framework
- Name tests descriptively:
TEST(ClassName, MethodName_Condition_ExpectedResult)
CI Validation
Before submitting PR:
pixi run lint # Must pass
pixi run test-all # Default build plus C++/Python runtime aggregate
pixi run -e gazebo test-gz # Must pass when Gazebo/gz-physics compatibility could be affected
Debugging Test Failures
# Run the smallest existing Pixi test task that covers the failure
pixi run test
# Get CI logs
gh run view <RUN_ID> --log-failed
Simulation And Visual End-to-End Checks
When a failure or change depends on scene structure, dynamics,
collision/contact, simulation stepping, OSG output, or a visual example, also
load dart-verify-sim. Use its text-first oracle and then an assessed,
claim-tied capture through DebugOverlay. Record a concrete no-visual reason
only when capture is unavailable or not applicable.
Gotchas
pixi run buildbuilds libraries only, NOT every test binary. If you runctestdirectly, build the relevant test target first;pixi run build-testsbuilds the release-branch test targets.pixi run test-allbuilds the default CMakeALLgraph. The branch config pinsBUILD_TESTING=ON, so that graph also runs CTest and pytest. Pair it withpixi run lint; usepixi run testorpixi run test-pyfor focused reruns and clearer failure attribution.- For package, collision, constraint, or dependency changes that could affect
downstream users, run
pixi run -e gazebo test-gzwhen practical.