

A JavaScript event-simulation, device oriented library for UI testing.
## Device oriented ?
Effroi try to be the closest possible of the way your users use their input
devices. To achieve this goal, effroi emulate real physical devices and fires
every events a real device would fire for the same action.
By example, when a user want to click an element the following events sequence
are fired:
- several mousewheel events to scroll to the element (if needed)
- several mouseout/mousemove/mouseover events to go over the element (if needed)
- mousedown/mouseup events
- a click event if none of the 2 previous events have been prevented
That's typically what effroi emulate for your UI tests. Effroi will also check
for the feasibility of the requested action. If you try to click an element
that is nor visible nor clickable, effroi will throw an error.
How to use
Device API
The device API goal is to emulate a real device and fire every events usually
fired for each action a device permit.
Mouse
var mouse = effroi.mouse;
mouse.scroll(x, y);
mouse.scrollTo(element);
mouse.move(x, y);
mouse.moveTo(element);
mouse.click(element);
mouse.rightclick(element);
mouse.dblclick(element);
mouse.paste(inputElement, 'content');
mouse.cut(inputElement);
Keyboard
var kbd = effroi.keyboard;
kbd.tab();
kbd.focus(element);
kbd.hit('a');
kbd.hit('b','c','d');
kbd.combine(this.CTRL, 'c');
kbd.paste('content');
kbd.cut();
Tactile
var tactile = effroi.tactile;
tactile.scroll(x, y);
tactile.scrollTo(element);
tactile.touch();
Unified pointing device API (PointerEvents)
Under development.
How to contribute
- Clone this repo
- npm install
- To run the tests:
grunt test
grunt dist