Automerge backed Markdown editor for the Atmosphere
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import { createServer } from 'vite'import { chromium } from 'playwright'
if (!process.env.PLAYWRIGHT_CHROMIUM_BIN) throw new Error('Set PLAYWRIGHT_CHROMIUM_BIN')process.env.VITE_DISABLE_WEBSOCKET_SYNC = '1'const count = Number(process.env.REAMS_INDEX_LOAD_NOTES ?? 200)const server = await createServer({ server: { host: '127.0.0.1', port: 0, strictPort: false, hmr: { host: '127.0.0.1', port: 0 } } })const hmr = server.config.server.hmrif (server.config.server.port !== 0 || !hmr || typeof hmr === 'boolean' || hmr.port !== 0) throw new Error('Refusing reserved ports')let browsertry { await server.listen() const address = server.httpServer.address() browser = await chromium.launch({ executablePath: process.env.PLAYWRIGHT_CHROMIUM_BIN, headless: true }) const context = await browser.newContext() try { const page = await context.newPage() page.on('pageerror', error => console.error('App page:', error)) page.on('console', message => { if (message.text().startsWith('[index-load]')) console.log(message.text()) else if (message.type() === 'error') console.error('App console:', message.text()) }) await page.goto(`http://127.0.0.1:${address.port}/`) await page.waitForFunction(() => window.__reamsApp?.hasBackgroundIndexer(), undefined, { timeout: 30_000 }) const stats = await page.evaluate(async count => { const app = window.__reamsApp let last = performance.now() let worstGapMs = 0 const timer = setInterval(() => { const now = performance.now() worstGapMs = Math.max(worstGapMs, now - last) last = now }, 16) const started = performance.now() for (let i = 0; i < count; i++) { await app.vault.create(`Load ${i}.md`, `# Load ${i}\n\nIndexed orchard notes`) if (i % 25 === 24) console.log(`[index-load] ${i + 1}/${count} in ${Math.round(performance.now() - started)} ms`) } const createMs = performance.now() - started await new Promise(resolve => setTimeout(resolve, 20)) clearInterval(timer) return { count, createMs, worstGapMs, indexing: app.reamsBackgroundIndexer.getIndexingStatus() } }, count) console.log(JSON.stringify(stats)) } finally { await context.close() }} finally { await browser?.close(); await server.close() }