tinyhumansai/openhuman · error
Playwright backend failed
Error message
Playwright backend failed
What it means
Generic failure sentinel from the Playwright backend: the daemon answered the request but with success=false, so the response's error text is surfaced as the action's failure. The daemon connection itself is kept; only the requested browser action failed.
Source
Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:194
self.daemon = None;
anyhow::bail!("Playwright daemon response id mismatch");
}
if response.success {
tracing::debug!(
request_id = id,
action = %action,
"[browser::playwright] action completed"
);
Ok(response.data.unwrap_or_else(|| json!({ "ok": true })))
} else {
tracing::debug!(
request_id = id,
action = %action,
error = ?response.error,
"[browser::playwright] action failed"
);
anyhow::bail!(
"{}",
response
.error
.unwrap_or_else(|| "Playwright backend failed".to_string())
)
}
}
}
async fn write_request(daemon: &mut PlaywrightDaemon, line: &[u8]) -> Result<()> {
tracing::trace!("[browser::playwright] writing request to daemon");
daemon
.stdin
.write_all(line)
.await
.context("Failed to write Playwright request")?;
daemon
.stdinView on GitHub (pinned to 7491200858)
Solutions
- Inspect the response error in the debug log to see which step of the action failed
- Fix the page-level cause: invalid selector, element not found, navigation interrupted, or page closed
- Retry after correcting the selector or waiting for the page to settle
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:194 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/319340be453b4b28.
Report an issue: GitHub.