Banco de pruebas · input humano vs. sintético Mide en vivo las señales que separan un cursor/teclado real de uno inyectado por CDP. Tres pasadas: mano · Playwright · SendInput.

Estado de sesión (correlación cruzada)

document.hasFocus()
visibilityState
navigator.webdriver
tiempo de pasada0.0 s
navigator.language
devicePixelRatio

Mové el cursor y hacé clic en el botón (salta a otra posición en cada clic). Cada clic mide teleport, distancia al último mousemove y duración down→up.

0 caracteres · meta 2000 insertFromPaste: 0

Ratón · movimiento

mousemove (total)0
tasa mousemove (últ. 1 s)0 /s
pointerrawupdate (total)0
getCoalescedEvents() máx0
getCoalescedEvents() prom0
wheel (total)0

Ratón · inyección y clic

screenX − clientX (últ.)
¿alguna vez ≠ 0?
clics0
teleport_click_ratio
dist. últ. move → clic (prom)
duración clic prom ± σ

Teclado · ritmo

teclas (keydown)0
dwell prom ± σ (ms)
flight prom (ms)
flight negativos (rollover)0
solapes (down con tecla viva)0
event.repeat0

Teclado · coherencia

keydown sin foco0
gap clic → 1ª tecla (ms)
insertText0
insertFromPaste0
deleteContentBackward0
code≠key coherente

Veredicto por señal (verde = humano/OS · rojo = huella de inyección)

Pasadas guardadas · comparativa lado a lado

Todavía no hay pasadas guardadas. Corré una pasada completa (mover, clicar, escribir), poné la etiqueta y pulsá «Guardar pasada».

Privacidad: nada de lo capturado se envía a ningún servidor — no hay fetch, beacon ni analítica. El corpus de tecleo es un biométrico: se trata como credencial, solo se descarga a tu disco local (R19/§10 del informe de teclado). Las pasadas guardadas viven en localStorage de este navegador.
Cómo se usa: (a) Fernando con la mano → etiqueta a-mano · (b) Playwright/CDP → b-cdp · (c) SendInput sobre Chrome real → c-sendinput. Guardá cada una y comparalo en la tabla. Preguntas que resuelve: ¿CDP emite pointerrawupdate? ¿sigue vivo el bug screenX===clientX? ¿SendInput es indistinguible en las nueve métricas?