#!/usr/bin/env node /** * Emergency Stop Test - Verifies that trading can be stopped safely */ const baseUrl = 'http://localhost:9001'; async function testEmergencyStop() { console.log('🚨 Emergency Stop Test - Trading System Safety Check\n'); try { // 1. Check current status console.log('šŸ“Š Current System Status:'); const statusResponse = await fetch(`${baseUrl}/api/automation/status`); const status = await statusResponse.json(); console.log(` - Automation Active: ${status.isActive ? 'āœ… YES' : 'āŒ NO'}`); if (status.isActive) { console.log(` - Mode: ${status.mode}`); console.log(` - Symbol: ${status.symbol}`); console.log(` - Timeframes: ${status.timeframes?.join(', ') || 'None'}`); } // 2. Check active positions console.log('\nšŸ“ˆ Current Positions:'); const positionsResponse = await fetch(`${baseUrl}/api/drift/positions`); const positionsData = await positionsResponse.json(); if (positionsData.success && positionsData.positions?.length > 0) { console.log(` - Active Positions: ${positionsData.positions.length}`); positionsData.positions.forEach((pos, i) => { console.log(` - Position ${i+1}: ${pos.symbol} ${pos.side.toUpperCase()}`); console.log(` Size: ${pos.size}, Entry: $${pos.entryPrice?.toFixed(4)}`); console.log(` PnL: $${pos.unrealizedPnl?.toFixed(2)}`); }); } else { console.log(' - No active positions'); } // 3. Test regular stop function console.log('\nšŸ›‘ Testing Regular Stop Function:'); const stopResponse = await fetch(`${baseUrl}/api/automation/stop`, { method: 'POST' }); const stopResult = await stopResponse.json(); console.log(` - Stop API: ${stopResult.success ? 'āœ… Working' : 'āŒ Failed'}`); console.log(` - Message: ${stopResult.message}`); // 4. Test emergency stop function console.log('\n🚨 Testing Emergency Stop Function:'); const emergencyResponse = await fetch(`${baseUrl}/api/automation/emergency-stop`, { method: 'POST' }); const emergencyResult = await emergencyResponse.json(); console.log(` - Emergency Stop API: ${emergencyResult.success ? 'āœ… Working' : 'āŒ Failed'}`); console.log(` - Message: ${emergencyResult.message}`); if (emergencyResult.results) { console.log(` - Automation Stopped: ${emergencyResult.results.automationStopped ? 'āœ…' : 'āŒ'}`); console.log(` - Processes Killed: ${emergencyResult.results.processesKilled ? 'āœ…' : 'āŒ'}`); console.log(` - Cleanup Completed: ${emergencyResult.results.cleanupCompleted ? 'āœ…' : 'āŒ'}`); } // 5. Verify dashboard access console.log('\nšŸ–„ļø Dashboard Accessibility:'); const dashboardResponse = await fetch(`${baseUrl}/automation-v2`); console.log(` - Dashboard Page: ${dashboardResponse.ok ? 'āœ… Accessible' : 'āŒ Not accessible'}`); console.log('\nšŸŽÆ Stop Button Summary:'); console.log(' āœ… Regular Stop: Available in UI and working via API'); console.log(' āœ… Emergency Stop: Available in UI and working via API'); console.log(' āœ… Dashboard Access: Working for manual control'); console.log('\nšŸ’” To stop trading:'); console.log(' 1. Go to http://localhost:9001/automation-v2'); console.log(' 2. Click the šŸ›‘ STOP button (regular stop)'); console.log(' 3. Or click 🚨 EMERGENCY button (immediate stop + cleanup)'); console.log(' 4. Or run: curl -X POST http://localhost:9001/api/automation/stop'); console.log(' 5. Or run: curl -X POST http://localhost:9001/api/automation/emergency-stop'); } catch (error) { console.error('āŒ Emergency Stop Test Failed:', error.message); } } // Run the test testEmergencyStop().catch(console.error);