Plan 0022
Property-based UI testing with Bombadil
Try Bombadil (Antithesis property-based UI testing, browser and terminal drivers) across the repo: autonomous exploration asserting layout and correctness properties on the site and the TUI. First property: text never overflows its SVG container, with an explicit exception list.
- Status
- Input wanted RFC
- Ambition
- 5 adopts an existing tool across every UI surface rather than inventing one
- Impact
- 6 UI regressions currently ship silently; nothing exercises rendered output
- Effort
- 5 property specs per surface plus CI wiring; the explorer is Bombadil
- Risk
- 3 experimental 0.x API; worst case the specs age with it
- Maturity
- 1 idea stage, tool unevaluated in this repo
- Leverage
- 7 one property catalog covers every page and TUI screen, present and future
- Taste
- 5 choosing properties worth asserting is the judgment; wiring is mechanical
- Authors
- Created
- Updated
- Tracking issue
- -
- Supersedes
- -
- Superseded by
- -
Summary
Nothing in CI looks at rendered output. A diagram shipped with its caption overflowing the box it labels, and no check could have objected, because every gate reads source, not pixels. Bombadil is property-based testing for web and terminal UIs: it autonomously explores the surface and asserts correctness properties, locally, in CI, and inside Antithesis. This plan is perhaps the way to get real UI testing: try it everywhere the repo renders anything, the site first, the TUI after.
First properties
- Text never overflows its SVG container (the shipped bug: a story diagram’s subtitle ran past its box). Exceptions are declared, not silent.
- No horizontal page scroll at any viewport.
- Every internal link on the built site resolves.
Bombadil likely earns more on interactive surfaces (the TUI, the chart axis pickers) than on static layout; the trial should measure both.
Eval gate
Adopt if the trial catches real regressions the existing gates miss, at CI cost that does not dominate the site build.
Drafted by Claude Code (Fable); comments wanted, hence the RFC flag.
andrewgazelka