- Fix BatchProcessor constructor to avoid server blocking during startup - Add comprehensive integration tests for all modular combinations - Enhance CLAUDE.md documentation with new test commands - Update SelectiveLayers configuration for better LLM allocation - Add AutoReporter system for test automation - Include production workflow validation tests 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
155 lines
4.7 KiB
JavaScript
155 lines
4.7 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* LANCEUR GLOBAL DE TOUS LES TESTS AVEC AUTO-REPORTER
|
|
* Lance tous les TI et TU avec capture automatique des résultats et LLM calls
|
|
*/
|
|
|
|
import { spawn } from 'child_process';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
import { AutoReporter } from './reporters/AutoReporter.js';
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const projectRoot = path.join(__dirname, '..');
|
|
|
|
// Configuration globale AutoReporter
|
|
const globalReporter = new AutoReporter();
|
|
|
|
console.log('🚀 === LANCEMENT GLOBAL TESTS TI/TU AVEC AUTO-REPORTER ===');
|
|
|
|
// Categories de tests à exécuter - MASSIVE COVERAGE
|
|
const testCategories = [
|
|
{
|
|
name: '🎯 MASSIVE TI - 20 Stacks Applications Partielles',
|
|
patterns: [
|
|
'tests/massive-ti-stacks-only.test.js'
|
|
],
|
|
timeout: 2400000 // 40 minutes pour les 20 tests complets
|
|
},
|
|
{
|
|
name: 'Integration Tests (Core)',
|
|
patterns: [
|
|
'tests/fast-ti-auto-report.test.js',
|
|
'tests/single-llm-test.test.js'
|
|
],
|
|
timeout: 180000 // 3 minutes
|
|
},
|
|
{
|
|
name: 'LLM Tests (Selected)',
|
|
patterns: [
|
|
'tests/llm/llmmanager.contract.test.js',
|
|
'tests/llm/pipeline-dryrun.test.js'
|
|
],
|
|
timeout: 120000 // 2 minutes
|
|
},
|
|
{
|
|
name: 'Content Tests (Key)',
|
|
patterns: [
|
|
'tests/content/selective-enhancement.test.js'
|
|
],
|
|
timeout: 180000 // 3 minutes
|
|
},
|
|
{
|
|
name: 'Smoke Tests',
|
|
patterns: [
|
|
'tests/smoke/config.test.js'
|
|
],
|
|
timeout: 30000 // 30 seconds
|
|
}
|
|
];
|
|
|
|
async function runTestCategory(category) {
|
|
console.log(`\n🧪 === ${category.name} ===`);
|
|
|
|
for (const pattern of category.patterns) {
|
|
try {
|
|
console.log(`📋 Running: ${pattern}`);
|
|
|
|
const testProcess = spawn('node', [
|
|
'--test',
|
|
pattern,
|
|
'--test-timeout',
|
|
category.timeout.toString()
|
|
], {
|
|
cwd: projectRoot,
|
|
stdio: 'inherit',
|
|
shell: true
|
|
});
|
|
|
|
await new Promise((resolve, reject) => {
|
|
testProcess.on('close', (code) => {
|
|
if (code === 0) {
|
|
console.log(`✅ ${pattern} completed successfully`);
|
|
resolve();
|
|
} else {
|
|
console.log(`⚠️ ${pattern} completed with warnings/errors (code: ${code})`);
|
|
resolve(); // Continue même en cas d'erreur
|
|
}
|
|
});
|
|
|
|
testProcess.on('error', (err) => {
|
|
console.error(`❌ Error running ${pattern}:`, err.message);
|
|
resolve(); // Continue même en cas d'erreur
|
|
});
|
|
|
|
// Timeout de sécurité
|
|
setTimeout(() => {
|
|
console.log(`⏰ Timeout for ${pattern}, killing process`);
|
|
testProcess.kill('SIGTERM');
|
|
resolve();
|
|
}, category.timeout + 10000);
|
|
});
|
|
|
|
} catch (error) {
|
|
console.error(`❌ Failed to run ${pattern}:`, error.message);
|
|
}
|
|
}
|
|
|
|
console.log(`✅ ${category.name} category completed`);
|
|
}
|
|
|
|
async function main() {
|
|
console.log('🎯 Starting comprehensive test suite with AutoReporter...');
|
|
|
|
const startTime = Date.now();
|
|
|
|
// Exécuter toutes les catégories séquentiellement
|
|
for (const category of testCategories) {
|
|
await runTestCategory(category);
|
|
}
|
|
|
|
const endTime = Date.now();
|
|
const totalDuration = Math.round((endTime - startTime) / 1000);
|
|
|
|
console.log(`\n📊 === RÉSUMÉ GLOBAL ===`);
|
|
console.log(`⏱️ Durée totale: ${totalDuration}s`);
|
|
console.log(`🧪 Categories testées: ${testCategories.length}`);
|
|
console.log(`📈 Vérifiez les rapports dans: ./reports/`);
|
|
|
|
// Afficher les derniers rapports générés
|
|
console.log('\n📋 === DERNIERS RAPPORTS GÉNÉRÉS ===');
|
|
try {
|
|
const { spawn } = await import('child_process');
|
|
const lsProcess = spawn('ls', ['-la', 'reports/'], {
|
|
cwd: projectRoot,
|
|
stdio: 'inherit'
|
|
});
|
|
} catch (error) {
|
|
console.log('⚠️ Impossible d\'afficher les rapports:', error.message);
|
|
}
|
|
}
|
|
|
|
// Gestion des signaux pour cleanup
|
|
process.on('SIGINT', () => {
|
|
console.log('\n🛑 Interruption utilisateur, nettoyage...');
|
|
process.exit(0);
|
|
});
|
|
|
|
process.on('SIGTERM', () => {
|
|
console.log('\n🛑 Terminaison demandée, nettoyage...');
|
|
process.exit(0);
|
|
});
|
|
|
|
// Lancement
|
|
main().catch(console.error); |