From 394e69a2f8b49ea06337d8923f781d79266ac1fb Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 18:25:47 +0000 Subject: [PATCH] refactor(cli): share browser resize output helper --- .../register.navigation.ts | 34 +++++------------ src/cli/browser-cli-resize.ts | 37 +++++++++++++++++++ src/cli/browser-cli-state.ts | 34 +++++------------ 3 files changed, 57 insertions(+), 48 deletions(-) create mode 100644 src/cli/browser-cli-resize.ts diff --git a/src/cli/browser-cli-actions-input/register.navigation.ts b/src/cli/browser-cli-actions-input/register.navigation.ts index ca632dbd52..393ffb7e56 100644 --- a/src/cli/browser-cli-actions-input/register.navigation.ts +++ b/src/cli/browser-cli-actions-input/register.navigation.ts @@ -1,11 +1,8 @@ import type { Command } from "commander"; import { danger } from "../../globals.js"; import { defaultRuntime } from "../../runtime.js"; -import { - callBrowserRequest, - callBrowserResize, - type BrowserParentOpts, -} from "../browser-cli-shared.js"; +import { runBrowserResizeWithOutput } from "../browser-cli-resize.js"; +import { callBrowserRequest, type BrowserParentOpts } from "../browser-cli-shared.js"; import { requireRef, resolveBrowserActionContext } from "./shared.js"; export function registerBrowserNavigationCommands( @@ -52,27 +49,16 @@ export function registerBrowserNavigationCommands( .option("--target-id ", "CDP target id (or unique prefix)") .action(async (width: number, height: number, opts, cmd) => { const { parent, profile } = resolveBrowserActionContext(cmd, parentOpts); - if (!Number.isFinite(width) || !Number.isFinite(height)) { - defaultRuntime.error(danger("width and height must be numbers")); - defaultRuntime.exit(1); - return; - } try { - const result = await callBrowserResize( + await runBrowserResizeWithOutput({ parent, - { - profile, - width, - height, - targetId: opts.targetId, - }, - { timeoutMs: 20000 }, - ); - if (parent?.json) { - defaultRuntime.log(JSON.stringify(result, null, 2)); - return; - } - defaultRuntime.log(`resized to ${width}x${height}`); + profile, + width, + height, + targetId: opts.targetId, + timeoutMs: 20000, + successMessage: `resized to ${width}x${height}`, + }); } catch (err) { defaultRuntime.error(danger(String(err))); defaultRuntime.exit(1); diff --git a/src/cli/browser-cli-resize.ts b/src/cli/browser-cli-resize.ts new file mode 100644 index 0000000000..1ba31cb29f --- /dev/null +++ b/src/cli/browser-cli-resize.ts @@ -0,0 +1,37 @@ +import { danger } from "../globals.js"; +import { defaultRuntime } from "../runtime.js"; +import { callBrowserResize, type BrowserParentOpts } from "./browser-cli-shared.js"; + +export async function runBrowserResizeWithOutput(params: { + parent: BrowserParentOpts; + profile?: string; + width: number; + height: number; + targetId?: string; + timeoutMs?: number; + successMessage: string; +}): Promise { + const { width, height } = params; + if (!Number.isFinite(width) || !Number.isFinite(height)) { + defaultRuntime.error(danger("width and height must be numbers")); + defaultRuntime.exit(1); + return; + } + + const result = await callBrowserResize( + params.parent, + { + profile: params.profile, + width, + height, + targetId: params.targetId, + }, + { timeoutMs: params.timeoutMs ?? 20000 }, + ); + + if (params.parent?.json) { + defaultRuntime.log(JSON.stringify(result, null, 2)); + return; + } + defaultRuntime.log(params.successMessage); +} diff --git a/src/cli/browser-cli-state.ts b/src/cli/browser-cli-state.ts index e2e19503ac..ace701bd23 100644 --- a/src/cli/browser-cli-state.ts +++ b/src/cli/browser-cli-state.ts @@ -2,11 +2,8 @@ import type { Command } from "commander"; import { danger } from "../globals.js"; import { defaultRuntime } from "../runtime.js"; import { parseBooleanValue } from "../utils/boolean.js"; -import { - callBrowserRequest, - callBrowserResize, - type BrowserParentOpts, -} from "./browser-cli-shared.js"; +import { runBrowserResizeWithOutput } from "./browser-cli-resize.js"; +import { callBrowserRequest, type BrowserParentOpts } from "./browser-cli-shared.js"; import { registerBrowserCookiesAndStorageCommands } from "./browser-cli-state.cookies-storage.js"; import { runCommandWithRuntime } from "./cli-utils.js"; @@ -39,27 +36,16 @@ export function registerBrowserStateCommands( .action(async (width: number, height: number, opts, cmd) => { const parent = parentOpts(cmd); const profile = parent?.browserProfile; - if (!Number.isFinite(width) || !Number.isFinite(height)) { - defaultRuntime.error(danger("width and height must be numbers")); - defaultRuntime.exit(1); - return; - } await runBrowserCommand(async () => { - const result = await callBrowserResize( + await runBrowserResizeWithOutput({ parent, - { - profile, - width, - height, - targetId: opts.targetId, - }, - { timeoutMs: 20000 }, - ); - if (parent?.json) { - defaultRuntime.log(JSON.stringify(result, null, 2)); - return; - } - defaultRuntime.log(`viewport set: ${width}x${height}`); + profile, + width, + height, + targetId: opts.targetId, + timeoutMs: 20000, + successMessage: `viewport set: ${width}x${height}`, + }); }); });