feat(cli): expand browser commands

This commit is contained in:
Peter Steinberger
2026-01-12 17:31:59 +00:00
parent cf78d28d74
commit 35bbc2ba87
6 changed files with 851 additions and 3 deletions

View File

@@ -454,16 +454,32 @@ export function registerBrowserActionInputCommands(
browser
.command("wait")
.description("Wait for time or text conditions")
.description("Wait for time, selector, URL, load state, or JS conditions")
.argument("[selector]", "CSS selector to wait for (visible)")
.option("--time <ms>", "Wait for N milliseconds", (v: string) => Number(v))
.option("--text <value>", "Wait for text to appear")
.option("--text-gone <value>", "Wait for text to disappear")
.option("--url <pattern>", "Wait for URL (supports globs like **/dash)")
.option("--load <load|domcontentloaded|networkidle>", "Wait for load state")
.option("--fn <js>", "Wait for JS condition (passed to waitForFunction)")
.option(
"--timeout-ms <ms>",
"How long to wait for each condition (default: 20000)",
(v: string) => Number(v),
)
.option("--target-id <id>", "CDP target id (or unique prefix)")
.action(async (opts, cmd) => {
.action(async (selector: string | undefined, opts, cmd) => {
const parent = parentOpts(cmd);
const baseUrl = resolveBrowserControlUrl(parent?.url);
const profile = parent?.browserProfile;
try {
const sel = selector?.trim() || undefined;
const load =
opts.load === "load" ||
opts.load === "domcontentloaded" ||
opts.load === "networkidle"
? (opts.load as "load" | "domcontentloaded" | "networkidle")
: undefined;
const result = await browserAct(
baseUrl,
{
@@ -471,7 +487,14 @@ export function registerBrowserActionInputCommands(
timeMs: Number.isFinite(opts.time) ? opts.time : undefined,
text: opts.text?.trim() || undefined,
textGone: opts.textGone?.trim() || undefined,
selector: sel,
url: opts.url?.trim() || undefined,
loadState: load,
fn: opts.fn?.trim() || undefined,
targetId: opts.targetId?.trim() || undefined,
timeoutMs: Number.isFinite(opts.timeoutMs)
? opts.timeoutMs
: undefined,
},
{ profile },
);