testcafe
Version:
Automated browser testing for the modern web development stack.
58 lines • 9.22 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../types");
const event_descriptor_1 = __importDefault(require("./event-descriptor"));
const hammerhead_1 = __importDefault(require("./deps/hammerhead"));
const TOUCH_MODE = hammerhead_1.default.utils.featureDetection.isTouchDevice;
class NativeAutomationInput {
constructor(dispatchEventFn) {
this._dispatchEventFn = dispatchEventFn;
}
async _executeTouchEvent(touchEvent, options) {
const eventOptions = await event_descriptor_1.default.createTouchEventOptions(touchEvent, options);
return this._dispatchEventFn.single(types_1.EventType.Touch, eventOptions);
}
async _executeMouseEvent(mouseEvent, options) {
const eventOptions = await event_descriptor_1.default.createMouseEventOptions(mouseEvent, options);
return this._dispatchEventFn.single(types_1.EventType.Mouse, eventOptions);
}
async mouseDown(options) {
if (TOUCH_MODE)
return this._executeTouchEvent('touchStart', options);
return this._executeMouseEvent('mousePressed', options);
}
async mouseUp(options) {
if (TOUCH_MODE)
return this._executeTouchEvent('touchEnd', options);
return this._executeMouseEvent('mouseReleased', options);
}
keyDown(options) {
const eventOptions = event_descriptor_1.default.createKeyDownOptions(options);
return this._dispatchEventFn.single(types_1.EventType.Keyboard, eventOptions);
}
keyUp(options) {
const eventOptions = event_descriptor_1.default.createKeyUpOptions(options);
return this._dispatchEventFn.single(types_1.EventType.Keyboard, eventOptions);
}
executeEventSequence(eventSequence) {
return this._dispatchEventFn.sequence(eventSequence);
}
async executeInsertText(text) {
return this._dispatchEventFn.single(types_1.EventType.InsertText, { text });
}
async createMouseMoveEvent(currPosition, modifiers) {
const options = await event_descriptor_1.default.createMouseEventOptions('mouseMoved', {
options: Object.assign({ clientX: currPosition.x, clientY: currPosition.y, button: 'none' }, modifiers),
});
return {
type: types_1.EventType.Mouse,
options,
};
}
}
exports.default = NativeAutomationInput;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmF0aXZlLWF1dG9tYXRpb24vY2xpZW50L2lucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0NBQXFDO0FBSXJDLDBFQUFvRDtBQUVwRCxtRUFBMkM7QUFFM0MsTUFBTSxVQUFVLEdBQUcsb0JBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0FBRW5FLE1BQXFCLHFCQUFxQjtJQUV0QyxZQUFhLGVBQWdDO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDNUMsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBRSxVQUFrQixFQUFFLE9BQVk7UUFDOUQsTUFBTSxZQUFZLEdBQUcsTUFBTSwwQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFM0YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGlCQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCLENBQUUsVUFBa0IsRUFBRSxPQUFZO1FBQzlELE1BQU0sWUFBWSxHQUFHLE1BQU0sMEJBQWtCLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTNGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxpQkFBUyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBRSxPQUFZO1FBQ2hDLElBQUksVUFBVTtZQUNWLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUUsT0FBWTtRQUM5QixJQUFJLFVBQVU7WUFDVixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxPQUFPLENBQUUsT0FBeUI7UUFDckMsTUFBTSxZQUFZLEdBQUcsMEJBQWtCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGlCQUFTLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDTSxLQUFLLENBQUUsT0FBeUI7UUFDbkMsTUFBTSxZQUFZLEdBQUcsMEJBQWtCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGlCQUFTLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxvQkFBb0IsQ0FBRSxhQUFvQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBRSxJQUFZO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxpQkFBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBRSxZQUFvQyxFQUFFLFNBQW9CO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLE1BQU0sMEJBQWtCLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFO1lBQzNFLE9BQU8sa0JBQ0gsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQ3ZCLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUN2QixNQUFNLEVBQUcsTUFBTSxJQUNaLFNBQVMsQ0FDZjtTQUNKLENBQUMsQ0FBQztRQUVILE9BQU87WUFDSCxJQUFJLEVBQUUsaUJBQVMsQ0FBQyxLQUFLO1lBQ3JCLE9BQU87U0FDVixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBbEVELHdDQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEF4aXNWYWx1ZXNEYXRhIH0gZnJvbSAnLi4vLi4vY2xpZW50L2NvcmUvdXRpbHMvdmFsdWVzL2F4aXMtdmFsdWVzJztcbmltcG9ydCB7IFNpbXVsYXRlZEtleUluZm8gfSBmcm9tICcuL2tleS1wcmVzcy91dGlscyc7XG5pbXBvcnQgeyBEaXNwYXRjaEV2ZW50Rm4gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBDRFBFdmVudERlc2NyaXB0b3IgZnJvbSAnLi9ldmVudC1kZXNjcmlwdG9yJztcbmltcG9ydCB7IE1vZGlmaWVycyB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL29wdGlvbnMnO1xuaW1wb3J0IGhhbW1lcmhlYWQgZnJvbSAnLi9kZXBzL2hhbW1lcmhlYWQnO1xuXG5jb25zdCBUT1VDSF9NT0RFID0gaGFtbWVyaGVhZC51dGlscy5mZWF0dXJlRGV0ZWN0aW9uLmlzVG91Y2hEZXZpY2U7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5hdGl2ZUF1dG9tYXRpb25JbnB1dCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGF0Y2hFdmVudEZuOiBEaXNwYXRjaEV2ZW50Rm47XG4gICAgY29uc3RydWN0b3IgKGRpc3BhdGNoRXZlbnRGbjogRGlzcGF0Y2hFdmVudEZuKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnRGbiA9IGRpc3BhdGNoRXZlbnRGbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9leGVjdXRlVG91Y2hFdmVudCAodG91Y2hFdmVudDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zID0gYXdhaXQgQ0RQRXZlbnREZXNjcmlwdG9yLmNyZWF0ZVRvdWNoRXZlbnRPcHRpb25zKHRvdWNoRXZlbnQsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2luZ2xlKEV2ZW50VHlwZS5Ub3VjaCwgZXZlbnRPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9leGVjdXRlTW91c2VFdmVudCAobW91c2VFdmVudDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zID0gYXdhaXQgQ0RQRXZlbnREZXNjcmlwdG9yLmNyZWF0ZU1vdXNlRXZlbnRPcHRpb25zKG1vdXNlRXZlbnQsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2luZ2xlKEV2ZW50VHlwZS5Nb3VzZSwgZXZlbnRPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbW91c2VEb3duIChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFRPVUNIX01PREUpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0ZVRvdWNoRXZlbnQoJ3RvdWNoU3RhcnQnLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0ZU1vdXNlRXZlbnQoJ21vdXNlUHJlc3NlZCcsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBtb3VzZVVwIChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFRPVUNIX01PREUpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0ZVRvdWNoRXZlbnQoJ3RvdWNoRW5kJywgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4ZWN1dGVNb3VzZUV2ZW50KCdtb3VzZVJlbGVhc2VkJywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGtleURvd24gKG9wdGlvbnM6IFNpbXVsYXRlZEtleUluZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zID0gQ0RQRXZlbnREZXNjcmlwdG9yLmNyZWF0ZUtleURvd25PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2luZ2xlKEV2ZW50VHlwZS5LZXlib2FyZCwgZXZlbnRPcHRpb25zKTtcbiAgICB9XG4gICAgcHVibGljIGtleVVwIChvcHRpb25zOiBTaW11bGF0ZWRLZXlJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9ucyA9IENEUEV2ZW50RGVzY3JpcHRvci5jcmVhdGVLZXlVcE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoRXZlbnRGbi5zaW5nbGUoRXZlbnRUeXBlLktleWJvYXJkLCBldmVudE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRlRXZlbnRTZXF1ZW5jZSAoZXZlbnRTZXF1ZW5jZTogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoRXZlbnRGbi5zZXF1ZW5jZShldmVudFNlcXVlbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUluc2VydFRleHQgKHRleHQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2luZ2xlKEV2ZW50VHlwZS5JbnNlcnRUZXh0LCB7IHRleHQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZU1vdXNlTW92ZUV2ZW50IChjdXJyUG9zaXRpb246IEF4aXNWYWx1ZXNEYXRhPG51bWJlcj4sIG1vZGlmaWVyczogTW9kaWZpZXJzKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IENEUEV2ZW50RGVzY3JpcHRvci5jcmVhdGVNb3VzZUV2ZW50T3B0aW9ucygnbW91c2VNb3ZlZCcsIHtcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBjdXJyUG9zaXRpb24ueCxcbiAgICAgICAgICAgICAgICBjbGllbnRZOiBjdXJyUG9zaXRpb24ueSxcbiAgICAgICAgICAgICAgICBidXR0b246ICAnbm9uZScsXG4gICAgICAgICAgICAgICAgLi4ubW9kaWZpZXJzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IEV2ZW50VHlwZS5Nb3VzZSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19