banatie-service/tests/api/run-all.ts

99 lines
2.3 KiB
TypeScript

// tests/api/run-all.ts
import { exec } from 'child_process';
import { promisify } from 'util';
import { log } from './utils';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const execAsync = promisify(exec);
const testFiles = [
'01-generation-basic.ts',
'02-basic.ts',
'03-flows.ts',
'04-aliases.ts',
'05-live.ts',
'06-edge-cases.ts',
'07-known-issues.ts',
'08-auto-enhance.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);
});