dart-test
DART testing patterns - unit tests, integration tests, CI validation
SKILL.md.claude/skills/dart-test/SKILL.md
GitHubDART 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 test-gui # GUI tests except native-window tests; needs a graphics device
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:
tests/regression/(start fromtest_Issue000Template.cpp)
Writing Tests
- Follow existing patterns in the test directory
- Use GoogleTest framework
- Name tests descriptively, in the style of the neighboring tests in that file
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, Filament 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 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.pixi run test,test-py, andtest-allbuild the GUI but skip tests that need a graphics device (CTest labelgui-deviceand the Python GUI rendering tests). Device-free GUI tests remain in the default gates; theguilabel covers all GUI tests. GUI, Filament, anddartpy.guichanges also needpixi run test-gui, which selects-L gui -LE filament-nativein the samebuild/<env>/cpp/Releasetree. Native-window tests need a desktop session or Xvfb:ctest --test-dir build/<env>/cpp/Release -L filament-native(ctest --test-dir build/<env>/cpp -C Release -L filament-nativeon Windows).- For package, collision, constraint, or dependency changes that could affect
downstream users, run
pixi run -e gazebo test-gz.