From 25e6ea11759b078a282c33099f9d729c26a6c4d4 Mon Sep 17 00:00:00 2001 From: Derek Meegan Date: Sun, 29 Mar 2026 13:08:25 -0700 Subject: [PATCH 1/2] Add `browse upload` command for file uploads Adds `browse upload ` to upload files to elements. Uses Understudy's setInputFiles which handles both local (DOM.setFileInputFiles) and remote/Browserbase (base64 payload injection) paths. Supports single files, multiple files, and ref-based selectors from snapshot. Co-Authored-By: Claude Opus 4.6 (1M context) --- .changeset/add-file-upload.md | 5 +++++ packages/cli/src/index.ts | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 .changeset/add-file-upload.md diff --git a/.changeset/add-file-upload.md b/.changeset/add-file-upload.md new file mode 100644 index 000000000..0180ecbf4 --- /dev/null +++ b/.changeset/add-file-upload.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/browse-cli": minor +--- + +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") From 3ae95b569d2deed9844330983de20d4cd2a320ea Mon Sep 17 00:00:00 2001 From: Derek Meegan Date: Tue, 31 Mar 2026 13:11:49 -0700 Subject: [PATCH 2/2] Downgrade changeset to patch per review feedback Co-Authored-By: Claude Opus 4.6 (1M context) --- .changeset/add-file-upload.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/add-file-upload.md b/.changeset/add-file-upload.md index 0180ecbf4..2d066e863 100644 --- a/.changeset/add-file-upload.md +++ b/.changeset/add-file-upload.md @@ -1,5 +1,5 @@ --- -"@browserbasehq/browse-cli": minor +"@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.