Perception
What a language model actually perceives of a web page, and why a screenshot alone is not enough. General knowledge — useful even if you never install anything.
A language model does not see a web page. It receives a description of one, and the shape of that description decides what it can do next.
Give it a screenshot and it gets pixels: it can tell you the page looks wrong, but it cannot act on anything, because nothing in an image is addressable. Give it the raw HTML and it gets everything at once — including the hundreds of lines of markup no human eye would ever have registered.
Neither is what it needs.
Three views, and where they disagree
Diwall renders the same page three ways. The capture shows what a person
sees. The Set-of-Mark outlines every interactive element and numbers it, so
that clicking becomes {"type": "cliquer_som", "id": 3} rather than a CSS
selector guessed from a description. The accessibility tree is the structure
the browser builds for screen readers — titles, roles, links, as text, at a
fraction of the token cost of an image.
The places where the three disagree are where the interesting bugs live.
The measurement that made this section necessary
The pivot page of this section proved its own point against its author. The
language menu is a native <details> element, and it was closed. A person sees
one button. The accessibility tree reports a group.
Diwall numbered four interactive elements carrying no text at all — four
entries reading {"id": 10, "texte": ""} — because the items inside the closed
menu were still in the DOM, and still measurable. Useless to an agent,
invisible to a human, and found only because the tool was pointed at our own
page.
One line of CSS fixed the page. The lesson needed no fixing: what a model perceives is the honest answer to the question the page asks, not the answer the page meant to give.
Reproduce it
The figures in this section come from this command, run against pages you can open yourself. Nothing is staged.
diwall-shot --url https://diwall.davalan.fr/ --som --a11y --guide-version 1.3