Skip to content
All fingerprint checksAutomation surface

key events named the key they carried

Check id interaction-key-identity-populated

What an ordinary browser yields

Every keypress naming its character in .key. .code is empty on real keypress events and is deliberately not scored (severity: warn).

What a detector infers

A keypress the engine generates names the character it is delivering in .key. CDP's Input.dispatchKeyEvent with type "char" accepts text without a key, and a driver that supplies only the text leaves .key as the empty string while the character still reaches the field - a keypress that delivered something it cannot name. Measured on Chrome 150: SeleniumBase 4.51.3 UC mode produced keypress events with key "" and keyCode set, against a control arm of well-formed CDP input that produced key "h" for the same character. This is kept as its own row rather than folded into the sequence check above because it reads the CONTENT of the event rather than its ordering, so a driver that fixed one and not the other is still visible. One measured detail decides what is assertable: on a REAL keypress .code is the empty string as well, because code identifies a physical key and keypress describes a character - so only .key can be scored here, and a row that also demanded .code would fail every genuine keypress on the page.

How to resolve it

Populate key, code and the virtual key codes on the keydown and keyUp events you dispatch, and let the char event carry the text. A character arriving in the field from an event that names no key is not a shape the engine produces.

Nearby checks in Automation surface

See all 27 checks in Automation surface
Who builds this test

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 interaction-key-identity-populated belongs to.