diff --git a/.changeset/add-file-upload.md b/.changeset/add-file-upload.md new file mode 100644 index 000000000..2d066e863 --- /dev/null +++ b/.changeset/add-file-upload.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/browse-cli": patch +--- + +Add `browse upload ` command for uploading files to `` elements. Supports single and multiple file uploads, works with both local and remote Browserbase sessions. diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index be6081fb0..f26ef3677 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1180,6 +1180,13 @@ async function executeCommand( await stagehand.act(action); return { selected: values }; } + case "upload": { + const [selector, filePaths] = args as [string, string[]]; + const resolved = resolveSelector(selector); + const files = filePaths.length === 1 ? filePaths[0] : filePaths; + await page!.deepLocator(resolved).setInputFiles(files); + return { uploaded: true, files: filePaths }; + } case "highlight": { const [selector, duration] = args as [string, number?]; await page! @@ -2442,6 +2449,20 @@ program } }); +program + .command("upload ") + .description('Upload file(s) to an element') + .action(async (selector: string, files: string[]) => { + const opts = program.opts(); + try { + const result = await runCommand("upload", [selector, files]); + output(result, opts.json ?? false); + } catch (e) { + console.error("Error:", e instanceof Error ? e.message : e); + process.exit(1); + } + }); + program .command("highlight ") .description("Highlight element")