Dinoer

Recipes

Real frictions from the retained browser core, sorted by the situation you are in. Written after being stuck, not before.

Every page in this section started as something that did not work, on the browser core Dinoer forked and kept unchanged in its execution mechanics — only its perception layer is gone. None of these was written in advance: a recipe that anticipates a problem describes the problem its author imagined; one written after being stuck describes the one that actually happens.

Find yours by symptom

What you are seeingGo to
The click reports success and nothing movedElement that will not click
The form submits and the page does not changeForm that never submits
Navigation times out on a page that keeps loadingPage that never settles
You are back on the login screen between two callsSession lost between calls
The element is visible but no selector reaches itElement inside an iframe
A selector that worked yesterday now hits the wrong rowClicked the wrong element
Login works, then the target asks for a six-digit codeThe target asks for a second factor
You trigger something slow and hear nothing until it endsLong operation, no feedback

The one that costs the most to learn the hard way

A timeout on a click does not mean the action failed.

A real case: a clone was launched by a form submission that kept the HTTP request open for the whole server-side operation. Playwright gave up after the default timeout and reported an error. The operation had already started. Re-run “properly” with a longer timeout, it produced a second identical clone — which is how anyone found out the first had succeeded.

Check the target before retrying. That sentence is worth more than the rest of this page.

Why they are published

A failure mode that stays private gets rediscovered by everyone, one at a time. These pages exist so that the second person to hit the problem spends five minutes on it rather than an evening.

In detail