{"record":{"id":"8f107bb1c322056a","repo":"tinyhumansai/openhuman","slug":"browser-backend-playwright-but-playwright-is-una","errorCode":null,"errorMessage":"browser.backend='playwright' but Playwright is unavailable. Ensure app/node_modules is installed, run `pnpm --filter openhuman-app exec playwright install chromium-headless-shell`, or set OPENHUMAN_PLAYWRIGHT_CWD.","messagePattern":"browser\\.backend='playwright' but Playwright is unavailable\\. Ensure app/node_modules is installed, run `pnpm --filter openhuman-app exec playwright install chromium-headless-shell`, or set OPENHUMAN_PLAYWRIGHT_CWD\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/browser.rs","lineNumber":215,"sourceCode":"    async fn resolve_backend(&self) -> anyhow::Result<ResolvedBackend> {\n        let configured = self.configured_backend()?;\n\n        match configured {\n            BrowserBackendKind::AgentBrowser => {\n                if Self::is_agent_browser_available().await {\n                    Ok(ResolvedBackend::AgentBrowser)\n                } else {\n                    anyhow::bail!(\n                        \"browser.backend='{}' but agent-browser is unavailable. Install it in your environment.\",\n                        configured.as_str()\n                    )\n                }\n            }\n            BrowserBackendKind::Playwright => {\n                if Self::is_playwright_available().await {\n                    Ok(ResolvedBackend::Playwright)\n                } else {\n                    anyhow::bail!(\n                        \"browser.backend='playwright' but Playwright is unavailable. Ensure app/node_modules is installed, run `pnpm --filter openhuman-app exec playwright install chromium-headless-shell`, or set OPENHUMAN_PLAYWRIGHT_CWD.\"\n                    )\n                }\n            }\n            BrowserBackendKind::RustNative => {\n                if !Self::rust_native_compiled() {\n                    anyhow::bail!(\n                        \"browser.backend='rust_native' requires build feature 'browser-native'\"\n                    );\n                }\n                if !self.rust_native_available() {\n                    anyhow::bail!(\n                        \"Rust-native browser backend is enabled but WebDriver endpoint is unreachable. Set browser.native_webdriver_url and start a compatible driver\"\n                    );\n                }\n                Ok(ResolvedBackend::RustNative)\n            }\n            BrowserBackendKind::ComputerUse => {","sourceCodeStart":197,"sourceCodeEnd":233,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/browser.rs#L197-L233","documentation":"Error \"browser.backend='playwright' but Playwright is unavailable. Ensure app/node_modules is installed, run `pnpm --filter openhuman-app exec playwright install chromium-headless-shell`, or set OPENHUMAN_PLAYWRIGHT_CWD.\" thrown in tinyhumansai/openhuman.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/browser.rs:215 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install frontend dependencies: ensure app/node_modules exists.","Run `pnpm --filter openhuman-app exec playwright install chromium-headless-shell`.","Set OPENHUMAN_PLAYWRIGHT_CWD to the directory containing the Playwright install.","Switch browser.backend to 'auto' or another available backend."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}