import { chromium } from 'playwright'; // Use a persistent profile so data survives between runs const userDataDir = 'C:/Users/d-chrka/AppData/Local/Temp/playwright-ka-note-profile'; const context = await chromium.launchPersistentContext(userDataDir, { headless: false, }); const page = await context.newPage(); // Console relay page.on('console', msg => { const t = msg.text(); if (!t.includes('[vite]') && !t.includes('Download the React')) console.log('[PAGE]', t); }); await page.goto('http://localhost:5173', { waitUntil: 'networkidle' }); await page.waitForTimeout(4000); // List all IDB databases const dbs = await page.evaluate(() => indexedDB.databases()); console.log('IDB databases:', JSON.stringify(dbs)); // Try to open KaNoteDB and inspect const result = await page.evaluate(() => { return new Promise((resolve) => { const req = indexedDB.open('KaNoteDB'); req.onsuccess = (e) => { const db = e.target.result; const stores = Array.from(db.objectStoreNames); resolve({ version: db.version, stores }); }; req.onerror = (e) => resolve({ error: String(e.target.error) }); }); }); console.log('KaNoteDB:', JSON.stringify(result)); if (result.stores && result.stores.includes('historyEntries')) { const history = await page.evaluate(() => { return new Promise((resolve) => { const req = indexedDB.open('KaNoteDB'); req.onsuccess = (e) => { const db = e.target.result; 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 })) }); }; }; }); }); console.log('\n=== HISTORY ENTRIES with [ ==='); console.log('Total:', history.total, '| Matched:', history.matched?.length); (history.matched || []).forEach(e => console.log('ID:', e.id, '\nTEXT:', JSON.stringify(e.text), '\n')); const tasks = await page.evaluate(() => { return new Promise((resolve) => { const req = indexedDB.open('KaNoteDB'); req.onsuccess = (e) => { const db = e.target.result; const stores = Array.from(db.objectStoreNames); if (!stores.includes('tasks')) { resolve({ error: 'no tasks store', stores }); return; } const tx = db.transaction('tasks', 'readonly'); const store = tx.objectStore('tasks'); const all = store.getAll(); all.onsuccess = () => resolve({ tasks: all.result }); }; }); }); console.log('\n=== TASKS ==='); if (tasks.error) console.log('ERROR:', tasks.error, tasks.stores); else console.log(JSON.stringify(tasks.tasks, null, 2)); } await context.close();