const fs = require('fs'); const path = require('path'); const e2eDir = 'tests/e2e'; const files = fs.readdirSync(e2eDir).filter(f => f.endsWith('.spec.ts')); files.forEach(file => { if (file === 'onboarding.spec.ts') return; const p = path.join(e2eDir, file); let content = fs.readFileSync(p, 'utf8'); // Find the string `--user-data-dir=` to extract the directory path const match = content.match(/--user-data-dir=([^']+)'/); if (!match) return; const userDataDir = match[1]; // Remove the old buggy blocks content = content.replace(/\/\/ Pre-fill config\.json to bypass onboarding[\s\S]*?(?=electronApp = await electron\.launch)/g, ''); content = content.replace(/\/\/ Pre-fill d3ro-voice-config\.json to bypass onboarding[\s\S]*?(?=electronApp = await electron\.launch)/g, ''); // Clean up duplicate empty lines before electronApp content = content.replace(/\n\s*\n\s*electronApp = await electron\.launch/g, '\n electronApp = await electron.launch'); const injectStr = ` // Pre-fill d3ro-voice-config.json to bypass onboarding const userDataDir = '${userDataDir}'; fs.mkdirSync(userDataDir, { recursive: true }); fs.writeFileSync(path.join(userDataDir, 'd3ro-voice-config.json'), JSON.stringify({ onboardingCompleted: true, appUsageMode: 'online', llmBackend: 'online' })); electronApp = await electron.launch`; content = content.replace(/electronApp = await electron\.launch/, injectStr); fs.writeFileSync(p, content); });