the button stayed pressed for the whole hold
Check id hold-button-state-coherent
What an ordinary browser yields
Every pointer move during the hold reporting the button as still down. N/A when the hold was not completed with a pointer, or when the pointer never moved during it (severity: warn).
What a detector infers
The gate's press-and-hold step asks for a button to be held for over a second, which is two orders of magnitude longer than a click's dwell and structurally different from it. During that window the button has to REMAIN pressed across many frames while the page animates a progress indicator, and every pointer move that lands inside the window carries MouseEvent.buttons, which names the buttons currently down. So the invariant is arithmetic rather than behavioural: a button that was down for the press and down for the release cannot have been up for the moves in between. Synthesising a hold as press, pause, release leaves exactly that gap, because moves dispatched during the pause carry no button state unless it is set explicitly on each one - the same omission that makes a synthesised drag report buttons 0, measured on one automation library whose drag helper omits the argument on every dispatch. The hold gives that invariant a second and much longer surface to appear on. TWO THINGS ARE DELIBERATELY NOT SCORED HERE. The hold DURATION is trivially randomised and says nothing structural. How far the pointer DRIFTED during the hold is more tempting and worse: a mouse resting on a desk genuinely produces zero drift while a finger presses it, so "held perfectly still" is an ordinary outcome for anyone not using a trackpad, and scoring it would convict them. Both are recorded as context and decide nothing. The row also declines outright when the pointer did not move during the hold at all, because then there is no move whose button state could be read - absence of evidence, reported as such.
How to resolve it
Carry the button through every event of a hold: pass the held button in the `buttons` field of each mouseMoved dispatched between press and release, not only on the press and release themselves.
Nearby checks in Automation surface
- keys were held down for a measurable moment
key-press-dwell-durationThe keyboard twin of the press-dwell row, and it is deliberately separate because the two fail independently - which SeleniumBase 4.51.5… - movement while a button was down reported the button as down
pointer-buttons-during-dragMouseEvent.buttons is a bitfield of which buttons are currently held, derived by the browser from the physical button state rather than from… - dragging the slider moved it through the values it crossed
slider-drag-value-progressionA range slider is the only common control that has to be DRAGGED to be used as intended, which makes it the only one that produces a stream… - clicks landed on different points, not the same one repeatedly
pointer-landing-dispersionAiming is imprecise. A hand lands somewhere inside a control and the spread shows up within two or three clicks; a driver resolves the… - the pointer travelled to each control it pressed
pointer-approach-per-targetThe gate asks for four separate acts in four separate places - three markers, a text field, a slider and a dropdown - and a pointer has to… - the pointer accelerated and slowed on its way to each control
pointer-approach-speed-profileA pointer moved by an arm leaves rest, accelerates, and brakes into its target, so the distance covered between consecutive samples rises… - no automation pointer-flash artifact is present
pointer-flash-keyframe-artifactThe only row on this page that works by recognising a specific string, which needs justifying because a name table is exactly what this… - pageXOffset/pageYOffset match their scrollX/scrollY aliases
scroll-alias-coherencewindow.pageXOffset is not a second scroll position, it is a legacy alias of window.scrollX — the specification defines them as the same…
Clearcote is a browser built for fingerprint coherence
It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.
This audit takes no position on how Clearcote scores on Automation surface checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.
See the other checks in Automation surface — the family hold-button-state-coherent belongs to.