- Complete KidsAI Explorer application - Multi-language support (English/German) - AI-powered educational guidance using OpenAI - Interactive chat interface for children - Proper placeholder translation fixes - Mobile-responsive design - Educational framework for critical thinking
150 lines
6.0 KiB
JavaScript
150 lines
6.0 KiB
JavaScript
// Comprehensive test script to verify all KidsAI improvements
|
||
const fetch = require('node-fetch');
|
||
|
||
const BASE_URL = 'http://localhost:3002';
|
||
|
||
async function runAllTests() {
|
||
console.log('🧪 Running comprehensive KidsAI tests...\n');
|
||
|
||
let passedTests = 0;
|
||
let totalTests = 0;
|
||
|
||
// Test 1: Original "nein" bug fix
|
||
console.log('🔍 TEST 1: "Nein" response handling');
|
||
totalTests++;
|
||
try {
|
||
const response = await fetch(`${BASE_URL}/api/respond-to-answer`, {
|
||
method: 'POST',
|
||
headers: { 'Content-Type': 'application/json' },
|
||
body: JSON.stringify({
|
||
answer: "nein",
|
||
question: "Weißt du, wie das Magnetfeld der Erde entsteht?",
|
||
originalTopic: "Wie entstehen Polarlichter?",
|
||
language: "de",
|
||
sessionId: "test-nein-" + Date.now()
|
||
})
|
||
});
|
||
|
||
const data = await response.json();
|
||
const aiResponse = data.response || '';
|
||
const isAppropriate = !aiResponse.includes('interessante Frage') &&
|
||
(aiResponse.includes('in Ordnung') ||
|
||
aiResponse.includes('ehrlich') ||
|
||
aiResponse.includes('verstehen'));
|
||
|
||
if (isAppropriate) {
|
||
console.log('✅ PASS: AI responds appropriately to "nein"');
|
||
passedTests++;
|
||
} else {
|
||
console.log('❌ FAIL: AI still gives inappropriate response to "nein"');
|
||
console.log(' Response:', aiResponse);
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ FAIL: Error testing "nein" response:', error.message);
|
||
}
|
||
|
||
// Test 2: Humor acknowledgment
|
||
console.log('\n🔍 TEST 2: Humor acknowledgment');
|
||
totalTests++;
|
||
try {
|
||
const response = await fetch(`${BASE_URL}/api/respond-to-answer`, {
|
||
method: 'POST',
|
||
headers: { 'Content-Type': 'application/json' },
|
||
body: JSON.stringify({
|
||
answer: "per fax",
|
||
question: "Wie kommunizieren Hormone im Körper?",
|
||
originalTopic: "Warum wächst Männern ein Bart?",
|
||
language: "de",
|
||
sessionId: "test-humor-" + Date.now()
|
||
})
|
||
});
|
||
|
||
const data = await response.json();
|
||
const aiResponse = data.response || '';
|
||
const acknowledgesHumor = aiResponse.includes('witzig') ||
|
||
aiResponse.includes('lustig') ||
|
||
aiResponse.includes('Humor') ||
|
||
aiResponse.includes('Schmunzeln') ||
|
||
aiResponse.includes('lächeln');
|
||
|
||
if (acknowledgesHumor) {
|
||
console.log('✅ PASS: AI acknowledges humor appropriately');
|
||
passedTests++;
|
||
} else {
|
||
console.log('❌ FAIL: AI doesn\'t acknowledge humor');
|
||
console.log(' Response:', aiResponse);
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ FAIL: Error testing humor response:', error.message);
|
||
}
|
||
|
||
// Test 3: Next fundamental functionality
|
||
console.log('\n🔍 TEST 3: Next fundamental endpoint');
|
||
totalTests++;
|
||
try {
|
||
const response = await fetch(`${BASE_URL}/api/next-fundamental`, {
|
||
method: 'POST',
|
||
headers: { 'Content-Type': 'application/json' },
|
||
body: JSON.stringify({
|
||
context: 'next_fundamental',
|
||
language: 'de',
|
||
sessionId: 'test-fundamental-' + Date.now()
|
||
})
|
||
});
|
||
|
||
const data = await response.json();
|
||
const hasValidResponse = data.nextFundamental &&
|
||
data.nextFundamental.summary &&
|
||
data.nextFundamental.question;
|
||
|
||
if (hasValidResponse) {
|
||
console.log('✅ PASS: Next fundamental endpoint works correctly');
|
||
passedTests++;
|
||
} else {
|
||
console.log('❌ FAIL: Next fundamental endpoint doesn\'t return valid response');
|
||
console.log(' Response:', JSON.stringify(data, null, 2));
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ FAIL: Error testing next fundamental:', error.message);
|
||
}
|
||
|
||
// Test 4: Button text update (client-side)
|
||
console.log('\n🔍 TEST 4: Button text updated to "Nächste Grundlage"');
|
||
totalTests++;
|
||
try {
|
||
// This would require checking the actual HTML/JS files
|
||
// For now, we'll just verify the file exists and contains the updated text
|
||
const fs = require('fs');
|
||
const scriptContent = fs.readFileSync('/var/www/html/kidsai/script-new.js', 'utf8');
|
||
|
||
if (scriptContent.includes('Nächste Grundlage') &&
|
||
scriptContent.includes('continueToNextFundamental')) {
|
||
console.log('✅ PASS: Button text updated to "Nächste Grundlage"');
|
||
passedTests++;
|
||
} else {
|
||
console.log('❌ FAIL: Button text not properly updated');
|
||
}
|
||
} catch (error) {
|
||
console.log('❌ FAIL: Error checking button text:', error.message);
|
||
}
|
||
|
||
// Summary
|
||
console.log(`\n📊 TEST SUMMARY:`);
|
||
console.log(`✅ Passed: ${passedTests}/${totalTests} tests`);
|
||
console.log(`❌ Failed: ${totalTests - passedTests}/${totalTests} tests`);
|
||
|
||
if (passedTests === totalTests) {
|
||
console.log('\n🎉 ALL TESTS PASSED! KidsAI improvements are working correctly!');
|
||
console.log('\n✨ Key improvements implemented:');
|
||
console.log(' • Fixed "nein" response bug - AI now responds encouragingly');
|
||
console.log(' • Added humor acknowledgment - AI recognizes creative answers');
|
||
console.log(' • Added next fundamental functionality - moves to new concepts');
|
||
console.log(' • Updated UI text from "Nächste Frage" to "Nächste Grundlage"');
|
||
} else {
|
||
console.log('\n⚠️ Some tests failed. Review the issues above.');
|
||
}
|
||
}
|
||
|
||
// Run all tests
|
||
runAllTests();
|