Skip to content

v0.9.0

Choose a tag to compare

@szymdzum szymdzum released this 05 Oct 16:16
· 1369 commits to main since this release
af05c15

bdg 0.9.0 is about AI agents using the browser. Four agents that had never seen bdg worked through real sites (TodoMVC, saucedemo, the Guardian, react.dev, the-internet) in three rounds. After each round we fixed what slowed them down. Between the first and the third round:

  • hand-written dom eval on the forms task went from 5 to 0, and on the visual questions from 7 to 1;
  • screenshots went from 6 to 2 in total;
  • blind sleep loops disappeared.

Highlights

  • Actions report what changed. dom click, submit and fill say whether the page navigated (Page: navigated to …/secure (200)), which new messages appeared (New text: "Your password is invalid!"), and when nothing happened (no visible effect observed). A fill whose value the page moved says where it went.

  • bdg dom wait waits for an element to appear, become visible, contain a text or disappear, or for the page to load. bdg also warns when a page is still loading and names the request it is waiting on.

  • bdg dom layout shows where elements are and whether a user can see them, without a screenshot:

    • viewport position;
    • covered by what;
    • clipped by what;
    • hidden and why;
    • how far to scroll.

    It also knows about scroll-locked pages behind consent dialogs.

  • dom listeners shows the React onClick (and other on… props) that actually handle an element, plus jQuery handlers.

  • Selectors for agents:

    • li:has-text("Write report") .toggle;
    • labels act as their control;
    • a11y names with spaces and colons;
    • a11y result indices work in click and fill, including inside cross-origin consent frames;
    • "did you mean #remove-…" for typos.
  • Named sessions: --session <name> runs several independent sessions side by side. bdg sessions lists them, including crashed ones.

  • New start options: --viewport 1280x800 and --color-scheme light|dark.

  • Honest results:

    • dom form readiness counts radio groups once and only says READY when required fields are filled;
    • status lines show ⚠ … (with warnings);
    • viewport screenshots of scrolled pages are no longer blank;
    • page navigate reports the document's real status.
  • Shorter output: the session start prints 4 lines instead of about 60. Static assets collapse to one line after actions, and bdg page info prints just the URL and title.

Breaking changes

The JSON envelope is unchanged. Some output that scripts may parse changed:

  • Session start: it prints 4–7 lines instead of the long command list.
  • dom eval: it prints strings raw in human output. --json is unchanged.
  • dom form JSON:
    • readyToSubmit is false for an untouched form;
    • choice groups count once;
    • hidden fields are listed with hidden: true;
    • forms are ordered dialog-first, and indices follow that order.
  • dom submit JSON:
    • networkRequests counts the reportable requests;
    • the human Navigation: yes row became a Page: line.
  • dom layout JSON: scrollBy is the minimal scroll for a partly visible element.
  • dom get: --index replaces --nth (kept as an alias). With no argument it reads body.
  • Session names: they are lower-cased and must start with a letter or digit.

The full list is in the CHANGELOG.

Install

npm install -g browser-debugger-cli

Full diff: v0.8.0...v0.9.0