diff --git a/playwriter/src/cli.ts b/playwriter/src/cli.ts index b05a24c..207164c 100644 --- a/playwriter/src/cli.ts +++ b/playwriter/src/cli.ts @@ -56,18 +56,19 @@ async function executeCode(options: { // Ensure relay server is running (only for local) if (!host && !process.env.PLAYWRITER_HOST) { - await ensureRelayServer({ logger: console, env: cliRelayEnv }) - // Wait for extension to reconnect after server (re)start - const connected = await waitForExtension({ logger: console, timeoutMs: 10000 }) - if (!connected) { - console.error('Warning: Extension not connected. Commands may fail.') + const restarted = await ensureRelayServer({ logger: console, env: cliRelayEnv }) + if (restarted){ + const connected = await waitForExtension({ logger: console, timeoutMs: 10000 }) + if (!connected) { + console.error('Warning: Extension not connected. Commands may fail.') + } } } // Session is required if (!sessionId) { console.error('Error: -s/--session is required.') - console.error('Run `playwriter session new` to get a session ID.') + console.error('Always run `playwriter session new` first to get a session ID to use.') process.exit(1) } @@ -154,26 +155,26 @@ cli try { const res = await fetch(`${serverUrl}/cli/sessions`) - const { sessions } = await res.json() as { - sessions: Array<{ + const { sessions } = await res.json() as { + sessions: Array<{ id: string stateKeys: string[] - }> + }> } - + if (sessions.length === 0) { console.log('No active sessions') return } - + // Calculate column widths for aligned table const idWidth = Math.max(2, ...sessions.map((s) => { return String(s.id).length })) const stateWidth = Math.max(10, ...sessions.map((s) => { return s.stateKeys.join(', ').length || 1 })) - + // Header console.log('ID'.padEnd(idWidth) + ' ' + 'State Keys') console.log('-'.repeat(idWidth + stateWidth + 2)) - + // Rows for (const session of sessions) { const stateStr = session.stateKeys.length > 0 ? session.stateKeys.join(', ') : '-' diff --git a/playwriter/src/relay-client.ts b/playwriter/src/relay-client.ts index d538374..c605edd 100644 --- a/playwriter/src/relay-client.ts +++ b/playwriter/src/relay-client.ts @@ -111,7 +111,7 @@ export interface EnsureRelayServerOptions { * Ensures the relay server is running. Starts it if not running. * Optionally restarts on version mismatch. */ -export async function ensureRelayServer(options: EnsureRelayServerOptions = {}): Promise { +export async function ensureRelayServer(options: EnsureRelayServerOptions = {}): Promise { const { logger, restartOnVersionMismatch = true, env: additionalEnv } = options const serverVersion = await getRelayServerVersion(RELAY_PORT) @@ -159,12 +159,9 @@ export async function ensureRelayServer(options: EnsureRelayServerOptions = {}): if (newVersion) { logger?.log(pc.green('CDP relay server started successfully')) await sleep(1000) - return + return true } } - - - throw new Error(`Failed to start CDP relay server after 5 seconds. Check logs at: ${LOG_FILE_PATH}`) }