Blastproof – E2E tests in plain English, no CSS selectors anywhere Blastproof, an open-source AI testing agent for pull requests, lets developers write end-to-end tests in plain English and uses an AI agent to drive a real browser, select tests affected by a diff, and score results before merge. The tool is 100% local, MIT-licensed, and requires users to bring their own LLM key, supporting Node.js >= 20.19 and browsers via Playwright. It finds elements by accessibility attributes rather than CSS selectors, which removes selector fragility but means elements not describable by the accessibility tree cannot be driven. Open-source AI testing agent for pull requests. Write end-to-end tests as plain English. An agent drives a real browser to run them, selects only the ones your diff can affect, and scores the result before merge. git diff → impact mapping → test generation → agentic execution → report + score 100% local. MIT. Bring your own LLM key. ▶ Watch the introduction — what it does, in a minute. Documentation: Configuration /hamc/blastproof/blob/main/docs/configuration.md · Testing behind a login /hamc/blastproof/blob/main/docs/auth.md · Running in CI /hamc/blastproof/blob/main/docs/ci.md · Contributing /hamc/blastproof/blob/main/CONTRIBUTING.md · Architecture /hamc/blastproof/blob/main/AGENTS.md npm install -g blastproof Node.js = 20.19 cd your-project blastproof init scaffolds .blastproof/ Point base url at your running app in .blastproof/config.yaml , then check the setup — this needs no API key and no browser : blastproof run --dry-run To actually execute tests you need a browser and a model: npx playwright install --with-deps chromium NEEDS SUDO — see below export ANTHROPIC API KEY=... or OPENAI API KEY, or local Ollama blastproof run No sudo? --with-deps installs system libraries as root. Without it, run npx playwright install chromium and obtain libnspr4 , libnss3 , libnssutil3 and libasound2 however you can. Note that a useful half of blastproof needs neither browser nor key — see Without a browser or a key without-a-browser-or-a-key . Before run , plan or test do anything, they check what they are about to spend — the browser can launch, the model provider is reachable, base url responds — and report every unmet one together, so a stopped app or a missing browser is never a wall you hit one crash at a time. A missing system library names the exact install command and says it needs root; nothing is installed on your behalf. Silent when everything is fine, and skipped entirely by --dry-run , which needs none of it. Provider options, budgets and browser tuning: Configuration /hamc/blastproof/blob/main/docs/configuration.md . Three questions. The first one decides most cases. A hard requirement, not a preference. blastproof finds elements the way a screen reader does — by role, by label, by visible text. That is what removes selectors and survives redesigns. The cost is that there is deliberately no CSS or XPath fallback, so anything the accessibility tree cannot describe cannot be driven at all. | works | cannot be driven | |---|---|