Class_generator/tests/ai-validation/test-no-cache-consistency.js
StillHammer f5cef0c913 Add comprehensive testing suite with UI/UX and E2E integration tests
- Create complete integration test system (test-integration.js)
- Add UI/UX interaction testing with real event simulation (test-uiux-integration.js)
- Implement end-to-end scenario testing for user journeys (test-e2e-scenarios.js)
- Add console testing commands for rapid development testing (test-console-commands.js)
- Create comprehensive test guide documentation (TEST-GUIDE.md)
- Integrate test buttons in debug panel (F12 → 3 test types)
- Add vocabulary modal two-progress-bar system integration
- Fix flashcard retry system for "don't know" cards
- Update IntelligentSequencer for task distribution validation

🧪 Testing Coverage:
- 35+ integration tests (architecture/modules)
- 20+ UI/UX tests (real user interactions)
- 5 E2E scenarios (complete user journeys)
- Console commands for rapid testing
- Debug panel integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 23:04:38 +08:00

145 lines
5.7 KiB
JavaScript

// Test de cohérence SANS cache - Prompts complètement différents
import { default as IAEngine } from './src/DRS/services/IAEngine.js';
async function testNoCacheConsistency() {
console.log('🔄 TEST DE COHÉRENCE SANS CACHE - Prompts uniques\n');
console.log('================================================\n');
// Test cas spécifiques avec délais pour éviter cache
const testRounds = [
{
name: 'Round 1 - Mauvaise réponse',
content: 'The Eiffel Tower is located in Paris, France.',
answer: 'Cats are purple and live on the moon',
expectedRange: [0, 30]
},
{
name: 'Round 2 - Bonne réponse',
content: 'Tokyo is the capital city of Japan with over 13 million people.',
answer: 'Tokyo is Japan\'s capital and has more than 13 million inhabitants',
expectedRange: [70, 100]
},
{
name: 'Round 3 - Mauvaise traduction',
original: 'I love books',
translation: 'Monkey banana computer',
expectedRange: [0, 30]
},
{
name: 'Round 4 - Bonne traduction',
original: 'The weather is nice today',
translation: 'Le temps est beau aujourd\'hui',
expectedRange: [70, 100]
},
{
name: 'Round 5 - Autre mauvaise réponse',
content: 'New York City has five boroughs: Manhattan, Brooklyn, Queens, Bronx, and Staten Island.',
answer: 'Fish swim in chocolate rivers',
expectedRange: [0, 30]
}
];
const results = [];
for (let i = 0; i < testRounds.length; i++) {
const round = testRounds[i];
console.log(`🧪 ${round.name}`);
// Créer une nouvelle instance pour éviter le cache
const engine = new IAEngine({
defaultProvider: 'openai',
fallbackProviders: ['deepseek']
});
try {
let result;
if (round.content) {
// Test de compréhension
console.log(` Texte: "${round.content}"`);
console.log(` Réponse: "${round.answer}"`);
result = await engine.validateComprehension(round.content, round.answer, {
exerciseType: `comprehension-test-${Date.now()}-${i}`
});
} else {
// Test de traduction
console.log(` Original: "${round.original}"`);
console.log(` Traduction: "${round.translation}"`);
result = await engine.validateTranslation(round.original, round.translation, {
fromLang: 'en',
toLang: 'fr',
testId: `translation-test-${Date.now()}-${i}`
});
}
const [min, max] = round.expectedRange;
const inRange = result.score >= min && result.score <= max;
console.log(` 📊 Score: ${result.score} (attendu: ${min}-${max})`);
console.log(` ✅ Dans la plage: ${inRange ? 'OUI' : 'NON'}`);
console.log(` 🤖 Provider: ${result.provider}`);
console.log(` 💬 Feedback: ${result.feedback?.substring(0, 80)}...\n`);
results.push({
name: round.name,
score: result.score,
expected: round.expectedRange,
inRange: inRange,
provider: result.provider
});
} catch (error) {
console.log(` ❌ Erreur: ${error.message}\n`);
results.push({
name: round.name,
score: 'ERROR',
expected: round.expectedRange,
inRange: false,
error: error.message
});
}
// Délai important pour éviter rate limiting et cache
await new Promise(resolve => setTimeout(resolve, 5000));
}
// Analyse finale
console.log('📊 ANALYSE FINALE SANS CACHE:');
console.log('============================\n');
const validResults = results.filter(r => typeof r.score === 'number');
const badAnswerResults = validResults.filter(r => r.expected[1] <= 30); // Mauvaises réponses
const goodAnswerResults = validResults.filter(r => r.expected[0] >= 70); // Bonnes réponses
console.log('🔴 Mauvaises réponses (devraient avoir <30 points):');
badAnswerResults.forEach(r => {
console.log(` ${r.inRange ? '✅' : '❌'} ${r.name}: ${r.score} points`);
});
console.log('\n🟢 Bonnes réponses (devraient avoir >70 points):');
goodAnswerResults.forEach(r => {
console.log(` ${r.inRange ? '✅' : '❌'} ${r.name}: ${r.score} points`);
});
const passedTests = validResults.filter(r => r.inRange).length;
const totalTests = validResults.length;
console.log(`\n🎯 RÉSULTAT FINAL:`);
console.log(` Tests réussis: ${passedTests}/${totalTests} (${Math.round((passedTests/totalTests)*100)}%)`);
if (passedTests === totalTests) {
console.log('\n🎉 SYSTÈME PARFAIT!');
console.log('✅ Toutes les mauvaises réponses reçoivent des scores bas');
console.log('✅ Toutes les bonnes réponses reçoivent des scores élevés');
console.log('✅ Le scoring IA fonctionne correctement');
} else if (passedTests >= totalTests * 0.8) {
console.log('\n✅ SYSTÈME ACCEPTABLE');
console.log('La plupart des tests passent, système utilisable');
} else {
console.log('\n❌ SYSTÈME PROBLÉMATIQUE');
console.log('Trop de scores inappropriés, besoin d\'ajustements');
}
return results;
}
testNoCacheConsistency().catch(console.error);