442 lines
17 KiB
JavaScript
442 lines
17 KiB
JavaScript
/**
|
||
* TEST SÚBOR PRE PRELOADING SYSTÉM
|
||
*
|
||
* Tento súbor obsahuje rôzne testy pre overenie funkčnosti
|
||
* preloading systému s cache API.
|
||
*
|
||
* POUŽITIE:
|
||
* 1. Otvor worldsmenu.html v prehliadači
|
||
* 2. Otvor Developer Tools (F12)
|
||
* 3. Prejdi na Console tab
|
||
* 4. Skopíruj a spusti jednotlivé testy
|
||
*/
|
||
|
||
// ==========================================
|
||
// TEST 1: Základná funkčnosť
|
||
// ==========================================
|
||
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('TEST 1: ZÁKLADNÁ FUNKČNOSŤ');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
async function test1_BasicFunctionality() {
|
||
console.log('🧪 Spúšťam Test 1...');
|
||
console.log('');
|
||
|
||
// 1. Kontrola dostupnosti funkcií
|
||
console.log('1️⃣ Kontrolujem dostupnosť funkcií...');
|
||
const requiredFunctions = [
|
||
'startWorldsMenuPreloading',
|
||
'getPreloadedImage',
|
||
'isPreloadingDone',
|
||
'getCacheSize',
|
||
'clearAllCache'
|
||
];
|
||
|
||
let allAvailable = true;
|
||
requiredFunctions.forEach(funcName => {
|
||
const isAvailable = typeof window[funcName] === 'function';
|
||
console.log(` ${isAvailable ? '✅' : '❌'} ${funcName}`);
|
||
if (!isAvailable) allAvailable = false;
|
||
});
|
||
|
||
if (!allAvailable) {
|
||
console.error('❌ Test 1 ZLYHAL - niektoré funkcie chýbajú');
|
||
return false;
|
||
}
|
||
|
||
// 2. Kontrola globálnych premenných
|
||
console.log('');
|
||
console.log('2️⃣ Kontrolujem globálne premenné...');
|
||
const requiredVars = ['CACHE_VERSION', 'CACHE_NAME', 'preloadedImages'];
|
||
|
||
requiredVars.forEach(varName => {
|
||
const isAvailable = typeof window[varName] !== 'undefined';
|
||
console.log(` ${isAvailable ? '✅' : '❌'} ${varName}`);
|
||
if (!isAvailable) allAvailable = false;
|
||
});
|
||
|
||
if (!allAvailable) {
|
||
console.error('❌ Test 1 ZLYHAL - niektoré premenné chýbajú');
|
||
return false;
|
||
}
|
||
|
||
console.log('');
|
||
console.log('✅ Test 1 ÚSPEŠNÝ - všetky funkcie a premenné sú dostupné');
|
||
return true;
|
||
}
|
||
|
||
// Spusti test
|
||
// test1_BasicFunctionality();
|
||
|
||
// ==========================================
|
||
// TEST 2: Cache operácie
|
||
// ==========================================
|
||
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('TEST 2: CACHE OPERÁCIE');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
async function test2_CacheOperations() {
|
||
console.log('🧪 Spúšťam Test 2...');
|
||
console.log('');
|
||
|
||
try {
|
||
// 1. Test otvorenia cache
|
||
console.log('1️⃣ Testujem otvorenie cache...');
|
||
const cache = await caches.open(CACHE_NAME);
|
||
console.log(' ✅ Cache úspešne otvorená');
|
||
|
||
// 2. Test uloženia do cache
|
||
console.log('');
|
||
console.log('2️⃣ Testujem uloženie do cache...');
|
||
const testUrl = 'test-preloading-image.png';
|
||
const testData = new Response('test data for preloading', {
|
||
headers: { 'Content-Type': 'image/png' }
|
||
});
|
||
await cache.put(testUrl, testData.clone());
|
||
console.log(' ✅ Testovací súbor uložený');
|
||
|
||
// 3. Test načítania z cache
|
||
console.log('');
|
||
console.log('3️⃣ Testujem načítanie z cache...');
|
||
const retrieved = await cache.match(testUrl);
|
||
if (retrieved) {
|
||
const text = await retrieved.text();
|
||
console.log(` ✅ Testovací súbor načítaný: "${text}"`);
|
||
} else {
|
||
throw new Error('Testovací súbor sa nenašiel v cache');
|
||
}
|
||
|
||
// 4. Test veľkosti cache
|
||
console.log('');
|
||
console.log('4️⃣ Testujem získanie veľkosti cache...');
|
||
const size = await getCacheSize();
|
||
console.log(` ✅ Cache veľkosť: ${size.sizeMB} MB (${size.itemCount} súborov)`);
|
||
|
||
// 5. Test vymazania z cache
|
||
console.log('');
|
||
console.log('5️⃣ Testujem vymazanie z cache...');
|
||
const deleted = await cache.delete(testUrl);
|
||
console.log(` ${deleted ? '✅' : '❌'} Testovací súbor vymazaný`);
|
||
|
||
console.log('');
|
||
console.log('✅ Test 2 ÚSPEŠNÝ - všetky cache operácie fungujú');
|
||
return true;
|
||
|
||
} catch (error) {
|
||
console.error('❌ Test 2 ZLYHAL:', error);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// Spusti test
|
||
// test2_CacheOperations();
|
||
|
||
// ==========================================
|
||
// TEST 3: Preloading rýchlosť
|
||
// ==========================================
|
||
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('TEST 3: PRELOADING RÝCHLOSŤ');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
async function test3_PreloadingSpeed() {
|
||
console.log('🧪 Spúšťam Test 3...');
|
||
console.log('');
|
||
|
||
// Testovací obrázok
|
||
const testImage = 'images/star_active.png';
|
||
|
||
try {
|
||
// 1. Vyčisti cache
|
||
console.log('1️⃣ Čistím cache...');
|
||
const cache = await caches.open(CACHE_NAME);
|
||
await cache.delete(new URL(testImage, window.location.href).href);
|
||
console.log(' ✅ Cache vyčistená');
|
||
|
||
// 2. Test načítania zo siete
|
||
console.log('');
|
||
console.log('2️⃣ Testujem načítanie zo siete...');
|
||
const networkStart = performance.now();
|
||
const networkResponse = await fetch(testImage);
|
||
await networkResponse.blob(); // Počkaj na načítanie dát
|
||
const networkTime = performance.now() - networkStart;
|
||
console.log(` ⏱️ Čas: ${networkTime.toFixed(2)} ms`);
|
||
|
||
// 3. Ulož do cache
|
||
console.log('');
|
||
console.log('3️⃣ Ukladám do cache...');
|
||
const saveStart = performance.now();
|
||
const saveResponse = await fetch(testImage);
|
||
await cache.put(new URL(testImage, window.location.href).href, saveResponse);
|
||
const saveTime = performance.now() - saveStart;
|
||
console.log(` ⏱️ Čas uloženia: ${saveTime.toFixed(2)} ms`);
|
||
|
||
// 4. Test načítania z cache
|
||
console.log('');
|
||
console.log('4️⃣ Testujem načítanie z cache...');
|
||
const cacheStart = performance.now();
|
||
const cacheResponse = await cache.match(new URL(testImage, window.location.href).href);
|
||
await cacheResponse.blob(); // Počkaj na načítanie dát
|
||
const cacheTime = performance.now() - cacheStart;
|
||
console.log(` ⏱️ Čas: ${cacheTime.toFixed(2)} ms`);
|
||
|
||
// 5. Porovnanie
|
||
console.log('');
|
||
console.log('📊 VÝSLEDOK:');
|
||
const speedup = (networkTime / cacheTime).toFixed(2);
|
||
console.log(` Sieť: ${networkTime.toFixed(2)} ms`);
|
||
console.log(` Cache: ${cacheTime.toFixed(2)} ms`);
|
||
console.log(` Zrýchlenie: ${speedup}x`);
|
||
|
||
console.log('');
|
||
console.log('✅ Test 3 ÚSPEŠNÝ - cache je rýchlejšia ako sieť');
|
||
return true;
|
||
|
||
} catch (error) {
|
||
console.error('❌ Test 3 ZLYHAL:', error);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// Spusti test
|
||
// test3_PreloadingSpeed();
|
||
|
||
// ==========================================
|
||
// TEST 4: Preloading všetkých obrázkov
|
||
// ==========================================
|
||
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('TEST 4: PRELOADING VŠETKÝCH OBRÁZKOV');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
async function test4_FullPreloading() {
|
||
console.log('🧪 Spúšťam Test 4...');
|
||
console.log('');
|
||
|
||
try {
|
||
// 1. Vymaž všetky cache
|
||
console.log('1️⃣ Mažem všetky cache...');
|
||
await clearAllCache();
|
||
console.log(' ✅ Cache vymazaná');
|
||
|
||
// 2. Spusti full preloading
|
||
console.log('');
|
||
console.log('2️⃣ Spúšťam full preloading...');
|
||
const startTime = performance.now();
|
||
|
||
await startWorldsMenuPreloading();
|
||
|
||
const totalTime = performance.now() - startTime;
|
||
console.log(` ⏱️ Celkový čas: ${(totalTime / 1000).toFixed(2)} sekúnd`);
|
||
|
||
// 3. Skontroluj výsledky
|
||
console.log('');
|
||
console.log('3️⃣ Kontrolujem výsledky...');
|
||
|
||
const isDone = isPreloadingDone();
|
||
console.log(` ${isDone ? '✅' : '❌'} Preloading dokončený`);
|
||
|
||
const imagesCount = Object.keys(preloadedImages).length;
|
||
console.log(` ✅ Načítaných obrázkov: ${imagesCount}`);
|
||
|
||
const cacheSize = await getCacheSize();
|
||
console.log(` ✅ Cache veľkosť: ${cacheSize.sizeMB} MB (${cacheSize.itemCount} súborov)`);
|
||
|
||
console.log('');
|
||
console.log('✅ Test 4 ÚSPEŠNÝ - všetky obrázky načítané a uložené');
|
||
return true;
|
||
|
||
} catch (error) {
|
||
console.error('❌ Test 4 ZLYHAL:', error);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// Spusti test
|
||
// test4_FullPreloading();
|
||
|
||
// ==========================================
|
||
// TEST 5: Opakované načítanie (z cache)
|
||
// ==========================================
|
||
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('TEST 5: OPAKOVANÉ NAČÍTANIE (Z CACHE)');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
async function test5_ReloadFromCache() {
|
||
console.log('🧪 Spúšťam Test 5...');
|
||
console.log('');
|
||
|
||
console.log('ℹ️ Tento test vyžaduje, aby už bola cache naplnená.');
|
||
console.log(' Ak nie je, najprv spusti: await test4_FullPreloading()');
|
||
console.log('');
|
||
|
||
try {
|
||
// 1. Skontroluj cache
|
||
console.log('1️⃣ Kontrolujem cache...');
|
||
const cacheSize = await getCacheSize();
|
||
|
||
if (cacheSize.itemCount === 0) {
|
||
console.warn('⚠️ Cache je prázdna! Spúšťam preloading najprv...');
|
||
await startWorldsMenuPreloading();
|
||
console.log(' ✅ Preloading dokončený');
|
||
} else {
|
||
console.log(` ✅ Cache obsahuje ${cacheSize.itemCount} súborov`);
|
||
}
|
||
|
||
// 2. Vymaž in-memory cache
|
||
console.log('');
|
||
console.log('2️⃣ Mažem in-memory cache...');
|
||
Object.keys(preloadedImages).forEach(key => delete preloadedImages[key]);
|
||
console.log(` ✅ In-memory cache vymazaná`);
|
||
|
||
// 3. Spusti reload z cache
|
||
console.log('');
|
||
console.log('3️⃣ Spúšťam reload z cache...');
|
||
const startTime = performance.now();
|
||
|
||
await startWorldsMenuPreloading();
|
||
|
||
const totalTime = performance.now() - startTime;
|
||
console.log(` ⏱️ Čas načítania z cache: ${(totalTime / 1000).toFixed(2)} sekúnd`);
|
||
|
||
// 4. Porovnanie
|
||
console.log('');
|
||
console.log('📊 VÝSLEDOK:');
|
||
console.log(` Načítaných obrázkov: ${Object.keys(preloadedImages).length}`);
|
||
console.log(` Čas: ${(totalTime / 1000).toFixed(2)}s`);
|
||
console.log(` Rýchlosť: ${totalTime < 2000 ? '✅ RÝCHLE' : '⚠️ POMALÉ'}`);
|
||
|
||
console.log('');
|
||
console.log('✅ Test 5 ÚSPEŠNÝ - reload z cache funguje');
|
||
return true;
|
||
|
||
} catch (error) {
|
||
console.error('❌ Test 5 ZLYHAL:', error);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// Spusti test
|
||
// test5_ReloadFromCache();
|
||
|
||
// ==========================================
|
||
// MASTER TEST - Spusti všetky testy
|
||
// ==========================================
|
||
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('MASTER TEST - SPUSTI VŠETKY TESTY');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
async function runAllTests() {
|
||
console.log('🚀 SPÚŠŤAM VŠETKY TESTY');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('');
|
||
|
||
const results = [];
|
||
|
||
// Test 1
|
||
console.log('');
|
||
const result1 = await test1_BasicFunctionality();
|
||
results.push({ test: 'Test 1: Základná funkčnosť', passed: result1 });
|
||
|
||
// Test 2
|
||
console.log('');
|
||
const result2 = await test2_CacheOperations();
|
||
results.push({ test: 'Test 2: Cache operácie', passed: result2 });
|
||
|
||
// Test 3
|
||
console.log('');
|
||
const result3 = await test3_PreloadingSpeed();
|
||
results.push({ test: 'Test 3: Preloading rýchlosť', passed: result3 });
|
||
|
||
// Test 4
|
||
console.log('');
|
||
const result4 = await test4_FullPreloading();
|
||
results.push({ test: 'Test 4: Full preloading', passed: result4 });
|
||
|
||
// Test 5
|
||
console.log('');
|
||
const result5 = await test5_ReloadFromCache();
|
||
results.push({ test: 'Test 5: Reload z cache', passed: result5 });
|
||
|
||
// Výsledky
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('VÝSLEDKY TESTOV');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('');
|
||
|
||
let passedCount = 0;
|
||
results.forEach((result, index) => {
|
||
console.log(`${result.passed ? '✅' : '❌'} ${result.test}`);
|
||
if (result.passed) passedCount++;
|
||
});
|
||
|
||
console.log('');
|
||
console.log(`Úspešných: ${passedCount}/${results.length}`);
|
||
|
||
if (passedCount === results.length) {
|
||
console.log('');
|
||
console.log('🎉 VŠETKY TESTY PREŠLI! 🎉');
|
||
console.log('Preloading systém je plne funkčný.');
|
||
} else {
|
||
console.log('');
|
||
console.log('⚠️ NIEKTORÉ TESTY ZLYHALI');
|
||
console.log('Skontroluj error hlášky vyššie.');
|
||
}
|
||
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
}
|
||
|
||
// ==========================================
|
||
// POMOCNÉ PRÍKAZY
|
||
// ==========================================
|
||
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('DOSTUPNÉ PRÍKAZY');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
console.log('');
|
||
console.log('Individuálne testy:');
|
||
console.log(' await test1_BasicFunctionality()');
|
||
console.log(' await test2_CacheOperations()');
|
||
console.log(' await test3_PreloadingSpeed()');
|
||
console.log(' await test4_FullPreloading()');
|
||
console.log(' await test5_ReloadFromCache()');
|
||
console.log('');
|
||
console.log('Všetky testy naraz:');
|
||
console.log(' await runAllTests()');
|
||
console.log('');
|
||
console.log('Debug:');
|
||
console.log(' await debugCacheInfo()');
|
||
console.log(' await getCacheSize()');
|
||
console.log(' await clearAllCache()');
|
||
console.log('');
|
||
console.log('═══════════════════════════════════════════════════════════');
|
||
|
||
// Export funkcií
|
||
if (typeof window !== 'undefined') {
|
||
window.testPreloading = {
|
||
test1: test1_BasicFunctionality,
|
||
test2: test2_CacheOperations,
|
||
test3: test3_PreloadingSpeed,
|
||
test4: test4_FullPreloading,
|
||
test5: test5_ReloadFromCache,
|
||
all: runAllTests
|
||
};
|
||
|
||
console.log('');
|
||
console.log('✅ Test súbor načítaný!');
|
||
console.log('');
|
||
console.log('Rýchly štart:');
|
||
console.log(' await testPreloading.all() // Spusti všetky testy');
|
||
console.log('');
|
||
} |