
cypress-real-events
github.com/dmtrkovalenko/cypress-real-events- Category
- Developer Tools
- Rank
- No. 755Tools index
Previous survey · No. 750 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Software Testing & Quality
- Interfaces
- Host Plugin
- Builder
- dmtrkovalenko
- GitHub
- 839 stars
- Latest release
- v1.15.1
- Date
About
Cypress plugin that fires real native system events — solves the long-standing Cypress limitation around hover, drag, and OS-level interactions.
What it does
It extends Cypress tests with browser-debugging-protocol input dispatch. Tests can drive trusted clicks, typing, keyboard shortcuts, pointer movement, wheel scrolling, touch, swipes, focus traversal, and CSS hover states through familiar chainable commands.
Why it's ranked here
This is a focused answer to cases where Cypress’s JavaScript-generated input behaves differently from browser input. Its broad mouse, keyboard, and touch coverage makes it useful, but Chromium dependence prevents it from serving as a complete cross-browser interaction layer.
What's good
The command surface closely follows Cypress conventions and includes TypeScript declarations. Interaction options cover element-relative coordinates, named positions, scrolling behavior, mouse buttons, pointer types, modifier keys, pressure, typing delays, swipe direction, and touch radius.
Tradeoffs
Real interactions work only in Chromium-based browsers, with Firefox explicitly unsupported. Continuous integration requires an installed real browser, and the documented Cypress browser container can have unreliable protocol connections. Keyboard presses and typing are global, so tests must establish focus first.
How to use it well
Use it in Cypress suites that must verify focus traversal, hover styling, clipboard-related flows, precise pointer behavior, touch gestures, or trusted input. Keep ordinary simulated commands where they suffice. It does not provide Firefox coverage, replace Cypress, or support another test runner.
Technical notes+
src/fireCdpCommand.ts sends commands through Cypress.automation("remote:debugger:protocol", ...) and wraps protocol failures with context. src/support.ts registers ten Cypress commands, using unknown casts because the implementations return promises while Cypress command types do not permit them. src/index.d.ts maps implementation signatures into Cypress.Chainable declarations. src/getCypressElementCoordinates.ts scrolls subjects, resolves positions, and accounts for nested iframe offsets and scaling. src/commands/realType.ts tokenizes text and brace-delimited keys against src/keyCodeDefinitions.ts, then dispatches sequential presses with configurable delays.
Observed
- License
- MIT
- Primary language
- TypeScript
- Packaging
- Published as the cypress-real-events npm package; installable with npm or Yarn
- Interface
- Cypress plugin exposing chainable mouse, keyboard, touch, swipe, and wheel commands
- Browser support
- Chromium-based browsers only; Firefox is unsupported
- Cypress compatibility
- Peer dependency accepts Cypress major versions 4 through 15
- Type support
- Ships Cypress chainable TypeScript declarations
- Runtime mechanism
- Dispatches input through Cypress automation over the Chrome DevTools Protocol
Read from README.md, package.json, src/utils.ts, src/index.d.ts, src/support.ts, src/getModifiers.ts, src/fireCdpCommand.ts, src/keyCodeDefinitions.ts, src/mouseButtonNumbers.ts, src/keyToModifierBitMap.ts, src/getCypressElementCoordinates.ts, src/commands/mouseUp.ts, src/commands/realType.ts, src/commands/mouseDown.ts, src/commands/mouseMove.ts.
What it can do
Fire real mouse hover events
Target element selector → Native system hover event on element
Execute real drag and drop operations
Source and target element selectors → Native system drag and drop interaction
Trigger real keyboard events
Key combinations and target elements → Native system keyboard events
Generate real mouse clicks
Element coordinates or selectors → Native system click events
Simulate real focus events
Target element selector → Native system focus event on element
Execute real scroll interactions
Scroll coordinates or target elements → Native system scroll events
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.