// tests/api/run-all.ts import { exec } from 'child_process'; import { promisify } from 'util'; import { log } from './utils'; const execAsync = promisify(exec); const testFiles = [ '01-basic.ts', '02-flows.ts', '03-aliases.ts', '04-live.ts', '05-edge-cases.ts', ]; async function runTest(file: string): Promise<{ success: boolean; duration: number }> { const startTime = Date.now(); try { log.section(`Running ${file}`); await execAsync(`tsx ${file}`, { cwd: __dirname, env: process.env, }); const duration = Date.now() - startTime; log.success(`${file} completed (${duration}ms)`); return { success: true, duration }; } catch (error) { const duration = Date.now() - startTime; log.error(`${file} failed (${duration}ms)`); console.error(error); return { success: false, duration }; } } async function main() { console.log('\n'); log.section('🚀 BANATIE API TEST SUITE'); console.log('\n'); const results: Array<{ file: string; success: boolean; duration: number }> = []; const startTime = Date.now(); for (const file of testFiles) { const result = await runTest(file); results.push({ file, ...result }); console.log('\n'); } const totalDuration = Date.now() - startTime; // Summary log.section('📊 TEST SUMMARY'); console.log('\n'); const passed = results.filter(r => r.success).length; const failed = results.filter(r => !r.success).length; results.forEach(result => { const icon = result.success ? '✓' : '✗'; const color = result.success ? '\x1b[32m' : '\x1b[31m'; console.log(`${color}${icon}\x1b[0m ${result.file} (${result.duration}ms)`); }); console.log('\n'); log.info(`Total: ${results.length} test suites`); log.success(`Passed: ${passed}`); if (failed > 0) { log.error(`Failed: ${failed}`); } log.info(`Duration: ${(totalDuration / 1000).toFixed(2)}s`); console.log('\n'); if (failed > 0) { process.exit(1); } } main().catch(error => { console.error('Test runner failed:', error); process.exit(1); });