# Integration Tests This directory contains integration tests for bd (beads) that test end-to-end functionality. ## Tests ### test_agent_race.py Multi-agent race condition test that validates collision prevention with Agent Mail. **What it tests:** - Multiple agents simultaneously attempting to claim the same issue - WITH Agent Mail: Only one agent succeeds (via reservation) - WITHOUT Agent Mail: Multiple agents may succeed (collision) - Verification via JSONL that no duplicate claims occur ### test_mail_failures.py Agent Mail server failure scenarios test that validates graceful degradation. **What it tests:** - Server never started (connection refused) - Server crashes during operation - Network partition (timeout) - Server returns 500 errors - Invalid bearer token (401) - Malformed JSON responses - JSONL consistency under multiple failures **Performance:** - Uses `--no-daemon` flag for fast tests (~33s total) - 1s HTTP timeouts for quick failure detection - Mock HTTP server avoids real network calls ## Prerequisites - bd installed: `go install github.com/steveyegge/beads/cmd/bd@latest` - Agent Mail server running (optional, for full test suite): ```bash cd ~/src/mcp_agent_mail source .venv/bin/activate uv run python -m mcp_agent_mail.cli serve-http ``` ## Running Tests **Run test_agent_race.py:** ```bash python3 tests/integration/test_agent_race.py ``` **Run test_mail_failures.py:** ```bash python3 tests/integration/test_mail_failures.py ``` **Run all integration tests:** ```bash python3 tests/integration/test_agent_race.py python3 tests/integration/test_mail_failures.py ``` ## Expected Results ### test_agent_race.py - **WITH Agent Mail running:** Test 1 passes (only 1 claim), Test 2 shows collision, Test 3 passes - **WITHOUT Agent Mail running:** All tests demonstrate collision (expected behavior without reservation system) ### test_mail_failures.py - All 7 tests should pass in ~30-35 seconds - Each test validates graceful degradation to Beads-only mode - JSONL remains consistent across all failure scenarios ## Adding New Tests Integration tests should: 1. Use temporary workspaces (cleaned up automatically) 2. Test real bd CLI commands, not just internal APIs 3. Use `--no-daemon` flag for fast execution 4. Verify behavior in `.beads/issues.jsonl` when relevant 5. Clean up resources in `finally` blocks 6. Provide clear output showing what's being tested