Show HN: Qpilot – AI agent runs plain-text manual test cases in a real browser Qpilot, an open-source AI agent that executes plain-text manual test cases in a real browser, was released on Hacker News. The tool uses Anthropic's Claude or any OpenAI-compatible model to interpret step-by-step instructions and perform actions like clicking and typing, pausing for CAPTCHAs or OTPs. It eliminates the need for coding or Selenium, allowing anyone to write and run browser tests. AI agent that runs your manual test cases in a real browser If qpilot saved you time → . It helps more than you'd think. ⭐ Star it on GitHub - You paste a plain-text test case - The agent opens Chrome and executes each step - You watch results appear live — pass , fail , or warn per step - If it hits a captcha or OTP, it pauses and asks you directly No code. No Selenium. No config files. | Manual testing | Selenium / Playwright scripts | qpilot | | |---|---|---|---| | Setup | none | write + maintain a test suite | paste plain text | | Survives UI changes | n/a a human adapts | breaks on selector/layout changes | reads the page like a human, via ARIA semantics | | Who can write a test | anyone | someone who codes | anyone who can write a step-by-step description | | OTP / captcha | human handles it | usually blocks the run | pauses and asks you, then continues | | Result | you watched it yourself | pass/fail, no narrative | pass/fail/warn per step, with evidence | Requirements: Node.js 20.12+, Google Chrome, an Anthropic API key https://console.anthropic.com — or any OpenAI-compatible model endpoint Qwen, vLLM, Ollama, corporate gateway npx qpilot That's it. On first run qpilot walks you through a quick provider setup arrow-key menu , then every launch shows your config and a Start menu. Browser opens automatically at http://localhost:3847 . On first run qpilot asks which model to use. You can re-run setup anytime: npx qpilot config Two options: - Anthropic Claude — enter your sk-ant-… key. Default model is claude-haiku-4-5 . Base URL is optional — set it if you reach Claude through a corporate proxy/gateway. - Custom — any OpenAI-compatible endpoint: Qwen, vLLM, Ollama, a corporate gateway, OpenRouter, or OpenAI itself. You provide a base URL , API token and model id , e.g.: Base URL: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 Model id: qwen2.5-72b-instruct Your choice is saved to ~/.qpilot/config.json mode 600 and reused on every run. The custom path speaks the OpenAI /chat/completions protocol with tool calling — so the model must support function/tool calling for the agent to drive the browser. For the Anthropic provider you can skip setup by supplying the key via env: ANTHROPIC API KEY environment variable .env.local file in the current directory echo "ANTHROPIC API KEY=sk-ant-..." .env.local The key is never stored except in ~/.qpilot/config.json when you run setup. | Command | Description | |---|---| qpilot config | Re-run provider setup Anthropic or custom model | npx qpilot config Browser visibility is a per-run choice in the UI, not a CLI flag: hit Run to stay headless, or Run with preview to watch Chrome click through the page. TC-001 — Login and add item to cart URL: https://www.saucedemo.com/ Credentials: standard user / secret sauce Steps: 1. Open the home page. Expected: login form with Username and Password fields is visible. 2. Enter credentials and click Login. Expected: Products page opens with 6 items. 3. Click "Add to cart" on "Sauce Labs Backpack". Expected: cart counter shows 1. 4. Click the cart icon. Expected: cart contains Sauce Labs Backpack at $29.99. You can paste multiple test cases at once — the agent runs them in order. Click Choose folder to point qpilot at a directory of .md files or Upload .md for a single file . Check the ones you want, then Run the batch — each file runs one after another with live status and timing, and you can Stop mid-batch. Finished runs including past batches show up under Recent runs on the home page. - API key is stored only in ~/.qpilot/config.json file mode 600 — never sent anywhere except your chosen model provider - Runs are in-memory and capped at the last 50 — restarting the server clears all of them - Powered by Claude https://anthropic.com + Playwright https://playwright.dev