Skip to content

Commit 88f683e

Browse files
Fix test suite for refactored shttp and redisTransport
- Update tests to handle async session initialization - Fix session ID retrieval from SSE/JSON responses - Update DELETE request tests to match new behavior - Remove references to deprecated startServerListeningToRedis - Add proper waits for async operations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 93bc76f commit 88f683e

File tree

8 files changed

+9953
-94
lines changed

8 files changed

+9953
-94
lines changed

debug-test-hang.sh

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#!/bin/bash
2+
3+
# Script to debug why Jest tests hang after completion
4+
5+
echo "=== Starting Jest test hang debugging ==="
6+
echo "Expected: Tests should exit within 5 seconds"
7+
echo "Actual: Tests hang indefinitely"
8+
echo ""
9+
10+
# Run tests with timeout and capture output
11+
echo "Running tests with 10 second timeout..."
12+
timeout 10s npm test > test_output.log 2>&1 &
13+
TEST_PID=$!
14+
15+
# Monitor the test process
16+
sleep 1
17+
echo "Test process PID: $TEST_PID"
18+
19+
# Wait for either completion or timeout
20+
wait $TEST_PID
21+
EXIT_CODE=$?
22+
23+
echo ""
24+
echo "=== Test Results ==="
25+
if [ $EXIT_CODE -eq 124 ]; then
26+
echo "❌ TESTS TIMED OUT (hung after 10 seconds)"
27+
else
28+
echo "✅ Tests completed normally with exit code: $EXIT_CODE"
29+
fi
30+
31+
echo ""
32+
echo "=== Test Output (last 20 lines) ==="
33+
tail -20 test_output.log
34+
35+
echo ""
36+
echo "=== Checking for Jest hanging indicators ==="
37+
if grep -q "Jest did not exit one second after the test run has completed" test_output.log; then
38+
echo "❌ Found Jest hanging message"
39+
40+
echo ""
41+
echo "=== Common causes of Jest hanging ==="
42+
echo "1. Unclosed database connections"
43+
echo "2. Open timers/intervals"
44+
echo "3. Open file handles"
45+
echo "4. Unresolved promises"
46+
echo "5. WebSocket connections"
47+
echo "6. Event listeners not cleaned up"
48+
49+
echo ""
50+
echo "=== Analyzing test files for potential issues ==="
51+
52+
# Check for Redis connections
53+
echo "Checking for Redis connection issues..."
54+
grep -r "redisClient" src/ --include="*.test.ts" | head -5
55+
56+
# Check for timers
57+
echo ""
58+
echo "Checking for setTimeout/setInterval..."
59+
grep -r "setTimeout\|setInterval" src/ --include="*.test.ts" | head -5
60+
61+
# Check for event listeners
62+
echo ""
63+
echo "Checking for event listeners..."
64+
grep -r "addEventListener\|on(" src/ --include="*.test.ts" | head -5
65+
66+
echo ""
67+
echo "=== Suggested fixes ==="
68+
echo "1. Add --detectOpenHandles to Jest config"
69+
echo "2. Ensure all Redis connections are closed in afterAll/afterEach"
70+
echo "3. Clear all timers in test cleanup"
71+
echo "4. Add explicit process.exit() if needed"
72+
73+
else
74+
echo "✅ No Jest hanging message found"
75+
fi
76+
77+
echo ""
78+
echo "=== Running with --detectOpenHandles ==="
79+
echo "This will show what's keeping Node.js alive..."
80+
timeout 15s npm test -- --detectOpenHandles > detect_handles.log 2>&1 &
81+
DETECT_PID=$!
82+
wait $DETECT_PID
83+
DETECT_EXIT=$?
84+
85+
if [ $DETECT_EXIT -eq 124 ]; then
86+
echo "❌ --detectOpenHandles also timed out"
87+
else
88+
echo "✅ --detectOpenHandles completed"
89+
fi
90+
91+
echo ""
92+
echo "=== Open handles output ==="
93+
tail -30 detect_handles.log
94+
95+
echo ""
96+
echo "=== Cleanup ==="
97+
rm -f test_output.log detect_handles.log
98+
echo "Debug complete!"

0 commit comments

Comments
 (0)