Files
aitbc/tests/archived/test_runner_updated.py
aitbc b71ada9822 feat: reorganize test directory for 100% completion status
 Test Directory Reorganization:
- Created production/ directory for current test suites
- Created archived/ directory for legacy test files
- Created integration/ directory for integration tests
- Updated README.md to reflect 100% completion status
- Added run_production_tests.py for easy test execution

📊 Test Structure Updates:
- production/: 6 core test suites (100% complete)
- archived/: 6 legacy test files (pre-100% completion)
- integration/: 2 integration test files
- Updated documentation and directory structure

🎯 Test Status Reflection:
- JWT Authentication:  Individual tests passing
- Production Monitoring:  Core functionality working
- Type Safety:  Individual tests passing
- Advanced Features:  Individual tests passing
- Complete Integration: ⚠️ Some API compatibility issues

📁 Files Moved:
- 6 production test files → production/
- 6 legacy test files → archived/
- 2 integration test files → integration/

🚀 Test Directory: Organized for 100% project completion
2026-04-02 16:06:46 +02:00

200 lines
6.8 KiB
Python

#!/usr/bin/env python3
"""
Updated Test Runner for AITBC Agent Systems
Includes all test phases and API integration tests
"""
import subprocess
import sys
import os
from pathlib import Path
import time
def run_test_suite():
"""Run complete test suite"""
base_dir = Path(__file__).parent
print("=" * 80)
print("AITBC AGENT SYSTEMS - COMPLETE TEST SUITE")
print("=" * 80)
test_suites = [
{
"name": "Agent Coordinator Communication Tests",
"path": base_dir / "../apps/agent-coordinator/tests/test_communication_fixed.py",
"type": "unit"
},
{
"name": "Agent Coordinator API Tests",
"path": base_dir / "test_agent_coordinator_api.py",
"type": "integration"
},
{
"name": "Phase 1: Consensus Tests",
"path": base_dir / "phase1/consensus/test_consensus.py",
"type": "phase"
},
{
"name": "Phase 3: Decision Framework Tests",
"path": base_dir / "phase3/test_decision_framework.py",
"type": "phase"
},
{
"name": "Phase 4: Autonomous Decision Making Tests",
"path": base_dir / "phase4/test_autonomous_decision_making.py",
"type": "phase"
},
{
"name": "Phase 5: Vision Integration Tests",
"path": base_dir / "phase5/test_vision_integration.py",
"type": "phase"
}
]
results = {}
total_tests = 0
total_passed = 0
total_failed = 0
total_skipped = 0
for suite in test_suites:
print(f"\n{'-' * 60}")
print(f"Running: {suite['name']}")
print(f"Type: {suite['type']}")
print(f"{'-' * 60}")
if not suite['path'].exists():
print(f"❌ Test file not found: {suite['path']}")
results[suite['name']] = {
'status': 'skipped',
'reason': 'file_not_found'
}
continue
try:
# Run the test suite
start_time = time.time()
result = subprocess.run([
sys.executable, '-m', 'pytest',
str(suite['path']),
'-v',
'--tb=short',
'--no-header'
], capture_output=True, text=True, cwd=base_dir)
end_time = time.time()
execution_time = end_time - start_time
# Parse results
output_lines = result.stdout.split('\n')
passed = 0
failed = 0
skipped = 0
errors = 0
for line in output_lines:
if ' passed' in line and ' failed' in line:
# Parse pytest summary line
parts = line.split()
for i, part in enumerate(parts):
if part.isdigit() and i > 0:
if 'passed' in parts[i+1]:
passed = int(part)
elif 'failed' in parts[i+1]:
failed = int(part)
elif 'skipped' in parts[i+1]:
skipped = int(part)
elif 'error' in parts[i+1]:
errors = int(part)
elif ' passed in ' in line:
# Single test passed
passed = 1
elif ' failed in ' in line:
# Single test failed
failed = 1
elif ' skipped in ' in line:
# Single test skipped
skipped = 1
suite_total = passed + failed + errors
suite_passed = passed
suite_failed = failed + errors
suite_skipped = skipped
# Update totals
total_tests += suite_total
total_passed += suite_passed
total_failed += suite_failed
total_skipped += suite_skipped
# Store results
results[suite['name']] = {
'status': 'completed',
'total': suite_total,
'passed': suite_passed,
'failed': suite_failed,
'skipped': suite_skipped,
'execution_time': execution_time,
'returncode': result.returncode
}
# Print summary
print(f"✅ Completed in {execution_time:.2f}s")
print(f"📊 Results: {suite_passed} passed, {suite_failed} failed, {suite_skipped} skipped")
if result.returncode != 0:
print(f"❌ Some tests failed")
if result.stderr:
print(f"Errors: {result.stderr[:200]}...")
except Exception as e:
print(f"❌ Error running test suite: {e}")
results[suite['name']] = {
'status': 'error',
'error': str(e)
}
# Print final summary
print("\n" + "=" * 80)
print("FINAL TEST SUMMARY")
print("=" * 80)
print(f"Total Test Suites: {len(test_suites)}")
print(f"Total Tests: {total_tests}")
print(f"Passed: {total_passed} ({total_passed/total_tests*100:.1f}%)" if total_tests > 0 else "Passed: 0")
print(f"Failed: {total_failed} ({total_failed/total_tests*100:.1f}%)" if total_tests > 0 else "Failed: 0")
print(f"Skipped: {total_skipped} ({total_skipped/total_tests*100:.1f}%)" if total_tests > 0 else "Skipped: 0")
print(f"\nSuite Details:")
for name, result in results.items():
print(f"\n{name}:")
if result['status'] == 'completed':
print(f" Status: ✅ Completed")
print(f" Tests: {result['total']} (✅ {result['passed']}, ❌ {result['failed']}, ⏭️ {result['skipped']})")
print(f" Time: {result['execution_time']:.2f}s")
elif result['status'] == 'skipped':
print(f" Status: ⏭️ Skipped ({result.get('reason', 'unknown')})")
else:
print(f" Status: ❌ Error ({result.get('error', 'unknown')})")
# Overall status
success_rate = (total_passed / total_tests * 100) if total_tests > 0 else 0
print(f"\n{'=' * 80}")
if success_rate >= 90:
print("🎉 EXCELLENT: Test suite passed with high success rate!")
elif success_rate >= 75:
print("✅ GOOD: Test suite passed with acceptable success rate!")
elif success_rate >= 50:
print("⚠️ WARNING: Test suite has significant failures!")
else:
print("❌ CRITICAL: Test suite has major issues!")
print(f"Overall Success Rate: {success_rate:.1f}%")
print("=" * 80)
return results
if __name__ == '__main__':
run_test_suite()