# saltybot_tests — Integration Test Suite (Issue #504) Complete ROS2 system integration testing for SaltyBot full-stack bringup. ## Test Files | File | Description | |------|-------------| | `test_launch.py` | launch_testing: full stack in follow mode, 30s stability | | `test_subsystems.py` | Sensor health, perception, navigation, rosbridge | | `test_slam_nav2.py` | SLAM (RTAB-Map) + Nav2 lifecycle nodes (indoor mode) | | `test_controls_pipeline.py` | cmd_vel_mux, motor protection, accel limiter, e-stop | | `test_audio_monitoring.py` | Audio pipeline, VAD, health monitor, diagnostics, docking | ## Coverage | Subsystem | Nodes | Topics | Services | |-----------|-------|--------|----------| | Sensors | LIDAR, RealSense, IMU | /scan, /camera/*, /odom | — | | SLAM | rtabmap | /rtabmap/map, /rtabmap/odom | /saltybot/save_map | | Nav2 | planner, controller, bt_navigator | /global_costmap, /plan | /compute_path_to_pose | | Perception | yolo_node | /person/detections | — | | Controls | mux, accel_limiter, smoother | /cmd_vel, /e_stop | — | | Audio | audio_pipeline, vad | /audio/state, /audio_level | — | | Monitoring | health_monitor, watchdog | /system_health, /diagnostics | — | | Docking | docking_node | /docking_status | /saltybot/dock, /undock | | Comms | rosbridge_websocket | /tf, /odom bridged | — | ## Running ```bash # Build colcon build --packages-select saltybot_tests source install/setup.bash # Follow mode tests (no hardware) ros2 launch saltybot_bringup full_stack.launch.py mode:=follow enable_bridge:=false & sleep 15 pytest test/ -v --ignore=test/test_slam_nav2.py --tb=short # Indoor mode tests (SLAM + Nav2) ros2 launch saltybot_bringup full_stack.launch.py mode:=indoor enable_bridge:=false & sleep 25 pytest test/test_slam_nav2.py -v --tb=short # Full launch_testing suite ros2 launch launch_testing launch_test.py test/test_launch.py ```