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 seeing | Go to |
|---|---|
| The click reports success and nothing moved | Element that will not click |
| The form submits and the page does not change | Form that never submits |
| Navigation times out on a page that keeps loading | Page that never settles |
| You are back on the login screen between two calls | Session lost between calls |
| The element is visible but no selector reaches it | Element inside an iframe |
| A selector that worked yesterday now hits the wrong row | Clicked the wrong element |
| Login works, then the target asks for a six-digit code | The target asks for a second factor |
| You trigger something slow and hear nothing until it ends | Long 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.