|
Replay hover events: synthetic mouse family + CSS :hover via debugger API
The virtual cursor now dispatches the full mouse event family as it walks the recorded path — mouseover/mouseenter on the new target, mouseout/ mouseleave (non-bubbling) on the previous one, relatedTarget wired up, and throttled mousemove — so JS hover handlers stay live during replay. CSS :hover can't be triggered by synthetic events, so when the hoverReplay setting is on (default) the background attaches chrome.debugger to the replay tab and mirrors cursor positions as trusted Input.dispatchMouseEvent mouseMoved commands (~20 Hz), which light up real :hover styles. Firefox has no debugger API and another debugger may hold the tab — both degrade gracefully to JS-level hover only. New "debugger" permission; toggle in the options page. E2E now latches both hover kinds on the test page (sticky mouseover flag + rAF-sampled :hover poll) and asserts the synthetic family; the CSS check is reported but stays non-fatal since the debugger can be legitimately absent. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| packages/extension/e2e.mjs |
|---|
| packages/extension/manifest.template.json |
|---|
| packages/extension/src/background/index.ts |
|---|
| packages/extension/src/background/settings.ts |
|---|
| packages/extension/src/content/index.ts |
|---|
| packages/extension/src/options/Options.vue |
|---|