- 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>
148 lines
5.3 KiB
JavaScript
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();
|
|
} |