fix(cli): Output screenshot as base64 string when no path provided (#83)
* fix(cli): print screenshot base64 when no path * chore(docs): update docs and SKILL.md * add test for screenshot with path arg * more minimal readme + skill change
This commit is contained in:
@@ -74,7 +74,7 @@ agent-browser scroll <dir> [px] # Scroll (up/down/left/right)
|
|||||||
agent-browser scrollintoview <sel> # Scroll element into view (alias: scrollinto)
|
agent-browser scrollintoview <sel> # Scroll element into view (alias: scrollinto)
|
||||||
agent-browser drag <src> <tgt> # Drag and drop
|
agent-browser drag <src> <tgt> # Drag and drop
|
||||||
agent-browser upload <sel> <files> # Upload files
|
agent-browser upload <sel> <files> # Upload files
|
||||||
agent-browser screenshot [path] # Take screenshot (--full for full page)
|
agent-browser screenshot [path] # Take screenshot (--full for full page, base64 png to stdout if no path)
|
||||||
agent-browser pdf <path> # Save as PDF
|
agent-browser pdf <path> # Save as PDF
|
||||||
agent-browser snapshot # Accessibility tree with refs (best for AI)
|
agent-browser snapshot # Accessibility tree with refs (best for AI)
|
||||||
agent-browser eval <js> # Run JavaScript
|
agent-browser eval <js> # Run JavaScript
|
||||||
|
|||||||
+13
-1
@@ -273,7 +273,11 @@ pub fn parse_command(args: &[String], flags: &Flags) -> Result<Value, ParseError
|
|||||||
|
|
||||||
// === Screenshot/PDF ===
|
// === Screenshot/PDF ===
|
||||||
"screenshot" => {
|
"screenshot" => {
|
||||||
Ok(json!({ "id": id, "action": "screenshot", "path": rest.get(0), "fullPage": flags.full }))
|
let mut cmd = json!({ "id": id, "action": "screenshot", "fullPage": flags.full });
|
||||||
|
if let Some(path) = rest.get(0) {
|
||||||
|
cmd["path"] = json!(path);
|
||||||
|
}
|
||||||
|
Ok(cmd)
|
||||||
}
|
}
|
||||||
"pdf" => {
|
"pdf" => {
|
||||||
let path = rest.get(0).ok_or_else(|| ParseError::MissingArguments {
|
let path = rest.get(0).ok_or_else(|| ParseError::MissingArguments {
|
||||||
@@ -1286,6 +1290,14 @@ mod tests {
|
|||||||
fn test_screenshot() {
|
fn test_screenshot() {
|
||||||
let cmd = parse_command(&args("screenshot"), &default_flags()).unwrap();
|
let cmd = parse_command(&args("screenshot"), &default_flags()).unwrap();
|
||||||
assert_eq!(cmd["action"], "screenshot");
|
assert_eq!(cmd["action"], "screenshot");
|
||||||
|
assert!(cmd.get("path").is_none());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_screenshot_path() {
|
||||||
|
let cmd = parse_command(&args("screenshot out.png"), &default_flags()).unwrap();
|
||||||
|
assert_eq!(cmd["action"], "screenshot");
|
||||||
|
assert_eq!(cmd["path"], "out.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -208,6 +208,11 @@ pub fn print_response(resp: &Response, json_mode: bool) {
|
|||||||
println!("\x1b[32m✓\x1b[0m Screenshot saved to {}", path);
|
println!("\x1b[32m✓\x1b[0m Screenshot saved to {}", path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Screenshot base64
|
||||||
|
if let Some(base64) = data.get("base64").and_then(|v| v.as_str()) {
|
||||||
|
println!("{}", base64);
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Default success
|
// Default success
|
||||||
println!("\x1b[32m✓\x1b[0m Done");
|
println!("\x1b[32m✓\x1b[0m Done");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ agent-browser snapshot # Get accessibility tree with refs
|
|||||||
agent-browser click @e2 # Click by ref from snapshot
|
agent-browser click @e2 # Click by ref from snapshot
|
||||||
agent-browser fill @e3 "test@example.com" # Fill by ref
|
agent-browser fill @e3 "test@example.com" # Fill by ref
|
||||||
agent-browser get text @e1 # Get text by ref
|
agent-browser get text @e1 # Get text by ref
|
||||||
agent-browser screenshot page.png
|
agent-browser screenshot # Base64 png to stdout
|
||||||
|
agent-browser screenshot page.png # Save to file
|
||||||
agent-browser close`} />
|
agent-browser close`} />
|
||||||
|
|
||||||
<h2>Traditional selectors</h2>
|
<h2>Traditional selectors</h2>
|
||||||
|
|||||||
Reference in New Issue
Block a user