import { chromium } from 'playwright'; const edgePath = 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'; const userDataDir = 'C:/Users/d-chrka/AppData/Local/Microsoft/Edge/User Data'; const context = await chromium.launchPersistentContext(userDataDir, { headless: false, executablePath: edgePath, args: ['--profile-directory=Default'] }); const page = await context.newPage(); await page.goto('http://localhost:5173'); await page.waitForTimeout(5000); const dbs = await page.evaluate(() => indexedDB.databases()); console.log('Databases:', JSON.stringify(dbs)); const historyResult = await page.evaluate(() => { return new Promise((resolve) => { const request = indexedDB.open('KaNoteDB'); request.onsuccess = (e) => { const db = e.target.result; const storeNames = Array.from(db.objectStoreNames); if (!storeNames.includes('historyEntries')) { resolve({ error: 'no historyEntries', stores: storeNames, version: db.version }); return; } const tx = db.transaction('historyEntries', 'readonly'); const store = tx.objectStore('historyEntries'); const all = store.getAll(); all.onsuccess = () => { const matched = all.result.filter(e => e.text && e.text.includes('[')); resolve({ total: all.result.length, matched: matched.map(e => ({ id: e.id, text: e.text })) }); }; }; request.onerror = (e) => resolve({ error: String(e.target.error) }); }); }); console.log('\n=== HISTORY ENTRIES ==='); console.log('Total:', historyResult.total, '| Matched:', historyResult.matched?.length); if (historyResult.error) console.log('ERROR:', historyResult.error, historyResult.stores, 'v' + historyResult.version); (historyResult.matched || []).forEach(e => console.log('ID:', e.id, '\nTEXT:', JSON.stringify(e.text), '\n')); const tasksResult = await page.evaluate(() => { return new Promise((resolve) => { const request = indexedDB.open('KaNoteDB'); request.onsuccess = (e) => { const db = e.target.result; const storeNames = Array.from(db.objectStoreNames); if (!storeNames.includes('tasks')) { resolve({ error: 'no tasks store', stores: storeNames }); return; } const tx = db.transaction('tasks', 'readonly'); const store = tx.objectStore('tasks'); const all = store.getAll(); all.onsuccess = () => resolve({ tasks: all.result }); }; request.onerror = (e) => resolve({ error: String(e.target.error) }); }); }); console.log('\n=== TASKS ==='); if (tasksResult.error) console.log('ERROR:', tasksResult.error, '| Stores:', tasksResult.stores); else console.log(JSON.stringify(tasksResult.tasks, null, 2)); await context.close();