Datasette Apps 0.2a0: An AI Agent That QA-Tests Its Own UI, Invisibly
Simon Willison's latest Datasette Apps release gives its AI agent two new tools to build, list, and — critically — silently test the apps it writes, closing a loop most agentic coding tools still leave open.
By TRAGenX Desk
Datasette is Simon Willison's open source tool for turning data into an explorable website and API. Datasette Apps extends that into a small app-building surface inside Datasette itself, and Datasette Agent is the AI layer that creates and edits those apps on request. On August 1, 2026, Willison published release notes for Datasette Apps 0.2a0, and the headline addition is a tool that lets the agent check its own work.
What actually shipped
- `app_debug()` (#33) — opens the app the agent just built inside an iframe and executes agent-supplied JavaScript against it, so the agent can smoke-test behavior without a human looking at anything.
- `app_list()` (#36) — returns the apps the current user has permission to edit, so the agent can identify and operate on the right target across multiple existing apps.
The trick worth noticing: a sandbox nobody has to see
The implementation detail is what makes this worth writing about. app_debug() renders the app in an iframe styled with opacity: 0 and pointer-events: none — fully present in the DOM, fully scriptable, but invisible and unclickable from the user's side. The agent then runs its own JavaScript inside that sandboxed frame: checking that an element rendered, that a click handler fired, that state updated as expected. Nothing flashes on screen, nothing steals focus, and the human never sees an ugly loading state or half-rendered UI while the agent iterates.
That's a narrow, unglamorous piece of engineering, but it addresses a real gap in agentic coding tools generally: most of them can generate a UI, but very few can *check* that UI without either asking the human to look at it or bolting on a full headless-browser test harness. Datasette Agent gets a lightweight version of that for free, scoped to exactly the app it just touched.
Why this matters beyond Datasette
This is a pattern, not just a feature. As AI coding agents move from "write the code" to "write the code and confirm it works," the mechanism matters — a full browser-automation stack is overkill for a quick sanity check, and asking the human to eyeball every change doesn't scale past a handful of edits. A disposable, invisible, script-only sandbox sits in between: cheap enough to run after every edit, real enough to catch a broken selector or a JS error before the agent claims success. Expect more agentic dev tools to converge on some version of this — render somewhere the agent can inspect, keep it out of the user's way, discard it when done.
For teams building or evaluating AI-assisted dev workflows, the specific takeaway is less "use Datasette" and more "give your agents a cheap way to grade their own homework." An agent that can silently verify its own output before reporting success is a meaningfully more trustworthy collaborator than one that ships and waits to be corrected.
FAQ
Frequently asked questions
- What is Datasette Apps?
- Datasette Apps is a feature of Simon Willison's Datasette project that lets small applications live inside a Datasette instance. Datasette Agent is the AI system that creates and edits those apps on the user's behalf.
- How does `app_debug()` test an app without the user seeing it?
- It loads the app in an iframe styled with `opacity: 0` and `pointer-events: none`, then runs agent-supplied JavaScript inside that frame. The app is fully rendered and scriptable in the DOM but invisible and non-interactive on screen.
- Is this the same as automated browser testing?
- It's a lighter-weight cousin of it. Rather than a full headless-browser test suite, it's a same-page sandboxed iframe the agent can script directly — enough for a quick smoke test, not a replacement for a real test harness.
Sources
- datasette-apps 0.2a0 — Simon Willison's Weblog
- simonw/datasette — An open source multi-tool for exploring and publishing data — GitHub