import { chromium } from 'playwright'; import log from 'electron-log'; import { launchLocalChrome } from '@electron/utils/chrome/launchLocalChrome'; let recorderBrowser: any = null; let recorderContext: any = null; export async function startRecording(url?: string): Promise<{ success: boolean; code?: string; error?: string }> { try { await launchLocalChrome(); if (recorderBrowser) { await stopRecording(); } recorderBrowser = await chromium.connectOverCDP('http://127.0.0.1:9222'); recorderContext = recorderBrowser.contexts()[0] || (await recorderBrowser.newContext()); const page = await recorderContext.newPage(); const targetUrl = url || 'about:blank'; await page.goto(targetUrl, { waitUntil: 'domcontentloaded' }); // 唤起 Playwright Inspector,让用户手动录制并生成代码 await page.pause(); return { success: true, code: '', }; } catch (error: any) { log.error('[script-recorder-service] Failed to start recording:', error); return { success: false, error: error?.message || 'Failed to start recording', }; } } export async function stopRecording(): Promise<{ success: boolean; code?: string; error?: string }> { try { if (recorderContext) { await recorderContext.close().catch(() => {}); recorderContext = null; } if (recorderBrowser) { await recorderBrowser.close().catch(() => {}); recorderBrowser = null; } return { success: true, code: '' }; } catch (error: any) { log.error('[script-recorder-service] Failed to stop recording:', error); return { success: false, error: error?.message || 'Failed to stop recording', }; } }