Class_generator/verify-real-app.js
StillHammer fe7153d28b Fix compatibility system and improve UX
- Add intelligent content-game compatibility system with visual badges
- Fix Adventure Reader to work with Dragon's Pearl content structure
- Implement multi-column games grid for faster navigation
- Add pronunciation display for Chinese vocabulary and sentences
- Fix navigation breadcrumb to show proper hierarchy (Home > Levels > Content)
- Add back buttons to all navigation pages
- Improve JSONContentLoader to preserve story structure
- Add comprehensive debugging and diagnostic tools

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-18 19:29:21 +08:00

148 lines
5.3 KiB
JavaScript

// === SCRIPT DE VÉRIFICATION APPLICATION RÉELLE ===
// Test que tous les composants fonctionnent ensemble dans l'app réelle
async function verifyRealApplication() {
console.log('🔍 Vérification de l\'application réelle...\n');
const tests = [];
// Test 1: Vérifier que AppNavigation existe et est initialisé
tests.push({
name: 'AppNavigation disponible',
test: () => window.AppNavigation && typeof window.AppNavigation.init === 'function',
critical: true
});
// Test 2: Vérifier que le système de compatibilité est intégré
tests.push({
name: 'Système de compatibilité intégré',
test: () => window.AppNavigation && window.AppNavigation.compatibilityChecker,
critical: true
});
// Test 3: Vérifier que ContentScanner est opérationnel
tests.push({
name: 'ContentScanner opérationnel',
test: () => window.AppNavigation && window.AppNavigation.contentScanner,
critical: true
});
// Test 4: Vérifier que GameLoader existe
tests.push({
name: 'GameLoader disponible',
test: () => window.GameLoader && typeof window.GameLoader.loadGame === 'function',
critical: true
});
// Test 5: Vérifier que les modules de jeu sont chargés
tests.push({
name: 'Modules de jeu chargés',
test: () => window.GameModules && Object.keys(window.GameModules).length > 0,
critical: false
});
// Test 6: Vérifier que les modules de contenu sont chargés
tests.push({
name: 'Modules de contenu chargés',
test: () => window.ContentModules && Object.keys(window.ContentModules).length > 0,
critical: false
});
// Test 7: Vérifier que showGamesPage est async
tests.push({
name: 'showGamesPage est async',
test: () => {
const fn = window.AppNavigation.showGamesPage;
return fn && fn.constructor.name === 'AsyncFunction';
},
critical: true
});
// Test 8: Vérifier les CSS de compatibilité
tests.push({
name: 'CSS de compatibilité chargé',
test: () => {
const sheets = Array.from(document.styleSheets);
return sheets.some(sheet => {
try {
const rules = Array.from(sheet.cssRules || []);
return rules.some(rule => rule.selectorText && rule.selectorText.includes('compatibility-badge'));
} catch (e) {
return false;
}
});
},
critical: false
});
// Exécuter tous les tests
let passedTests = 0;
let criticalFailed = 0;
console.log('📋 Résultats des tests:\n');
for (const test of tests) {
try {
const result = test.test();
if (result) {
console.log(`${test.name}`);
passedTests++;
} else {
const level = test.critical ? 'CRITIQUE' : 'OPTIONNEL';
console.log(`${test.name} (${level})`);
if (test.critical) criticalFailed++;
}
} catch (error) {
const level = test.critical ? 'CRITIQUE' : 'OPTIONNEL';
console.log(`🚨 ${test.name} - ERREUR: ${error.message} (${level})`);
if (test.critical) criticalFailed++;
}
}
console.log(`\n📊 Résultat: ${passedTests}/${tests.length} tests réussis`);
if (criticalFailed === 0) {
console.log('🎉 Tous les tests critiques passent! L\'application est prête.');
// Test bonus: essayer de charger du contenu
if (window.AppNavigation && window.AppNavigation.contentScanner) {
console.log('\n🔍 Test bonus: chargement du contenu...');
try {
const results = await window.AppNavigation.contentScanner.scanAllContent();
console.log(`${results.found.length} modules de contenu détectés`);
// Test de compatibilité sur contenu réel
if (results.found.length > 0 && window.AppNavigation.compatibilityChecker) {
const testContent = results.found[0];
const compatibility = window.AppNavigation.compatibilityChecker.checkCompatibility(testContent, 'whack-a-mole');
console.log(`✅ Test compatibilité: ${compatibility.compatible ? 'COMPATIBLE' : 'INCOMPATIBLE'} (${compatibility.score}%)`);
}
} catch (error) {
console.log(`⚠️ Erreur lors du test bonus: ${error.message}`);
}
}
return true;
} else {
console.log(`${criticalFailed} tests critiques ont échoué. Vérification nécessaire.`);
return false;
}
}
// Fonction d'auto-test
function autoVerify() {
// Attendre que l'app soit complètement chargée
if (document.readyState !== 'complete') {
window.addEventListener('load', () => setTimeout(verifyRealApplication, 2000));
} else {
setTimeout(verifyRealApplication, 2000);
}
}
// Export pour utilisation manuelle
window.verifyRealApplication = verifyRealApplication;
// Auto-vérification si ce script est chargé dans l'app réelle
if (typeof window !== 'undefined' && window.location.pathname === '/') {
autoVerify();
}