116 lines
15 KiB
JavaScript
116 lines
15 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const type_1 = __importDefault(require("./type"));
|
||
|
const actions_1 = require("./actions");
|
||
|
const assertion_1 = require("./assertion");
|
||
|
const browser_manipulation_1 = require("./browser-manipulation");
|
||
|
const observation_1 = require("./observation");
|
||
|
const lodash_1 = require("lodash");
|
||
|
function getCmdCtor(type) {
|
||
|
switch (type) {
|
||
|
case type_1.default.click:
|
||
|
return actions_1.ClickCommand;
|
||
|
case type_1.default.rightClick:
|
||
|
return actions_1.RightClickCommand;
|
||
|
case type_1.default.doubleClick:
|
||
|
return actions_1.DoubleClickCommand;
|
||
|
case type_1.default.hover:
|
||
|
return actions_1.HoverCommand;
|
||
|
case type_1.default.drag:
|
||
|
return actions_1.DragCommand;
|
||
|
case type_1.default.dragToElement:
|
||
|
return actions_1.DragToElementCommand;
|
||
|
case type_1.default.typeText:
|
||
|
return actions_1.TypeTextCommand;
|
||
|
case type_1.default.selectText:
|
||
|
return actions_1.SelectTextCommand;
|
||
|
case type_1.default.selectTextAreaContent:
|
||
|
return actions_1.SelectTextAreaContentCommand;
|
||
|
case type_1.default.selectEditableContent:
|
||
|
return actions_1.SelectEditableContentCommand;
|
||
|
case type_1.default.pressKey:
|
||
|
return actions_1.PressKeyCommand;
|
||
|
case type_1.default.wait:
|
||
|
return observation_1.WaitCommand;
|
||
|
case type_1.default.navigateTo:
|
||
|
return actions_1.NavigateToCommand;
|
||
|
case type_1.default.setFilesToUpload:
|
||
|
return actions_1.SetFilesToUploadCommand;
|
||
|
case type_1.default.clearUpload:
|
||
|
return actions_1.ClearUploadCommand;
|
||
|
case type_1.default.takeScreenshot:
|
||
|
return browser_manipulation_1.TakeScreenshotCommand;
|
||
|
case type_1.default.takeElementScreenshot:
|
||
|
return browser_manipulation_1.TakeElementScreenshotCommand;
|
||
|
case type_1.default.resizeWindow:
|
||
|
return browser_manipulation_1.ResizeWindowCommand;
|
||
|
case type_1.default.resizeWindowToFitDevice:
|
||
|
return browser_manipulation_1.ResizeWindowToFitDeviceCommand;
|
||
|
case type_1.default.maximizeWindow:
|
||
|
return browser_manipulation_1.MaximizeWindowCommand;
|
||
|
case type_1.default.switchToIframe:
|
||
|
return actions_1.SwitchToIframeCommand;
|
||
|
case type_1.default.switchToMainWindow:
|
||
|
return actions_1.SwitchToMainWindowCommand;
|
||
|
case type_1.default.setNativeDialogHandler:
|
||
|
return actions_1.SetNativeDialogHandlerCommand;
|
||
|
case type_1.default.setTestSpeed:
|
||
|
return actions_1.SetTestSpeedCommand;
|
||
|
case type_1.default.setPageLoadTimeout:
|
||
|
return actions_1.SetPageLoadTimeoutCommand;
|
||
|
case type_1.default.assertion:
|
||
|
return assertion_1.AssertionCommand;
|
||
|
case type_1.default.debug:
|
||
|
return observation_1.DebugCommand;
|
||
|
case type_1.default.executeExpression:
|
||
|
return actions_1.ExecuteExpressionCommand;
|
||
|
case type_1.default.executeAsyncExpression:
|
||
|
return actions_1.ExecuteAsyncExpressionCommand;
|
||
|
case type_1.default.recorder:
|
||
|
return actions_1.RecorderCommand;
|
||
|
case type_1.default.getCookies:
|
||
|
return actions_1.GetCookiesCommand;
|
||
|
case type_1.default.setCookies:
|
||
|
return actions_1.SetCookiesCommand;
|
||
|
case type_1.default.deleteCookies:
|
||
|
return actions_1.DeleteCookiesCommand;
|
||
|
case type_1.default.scroll:
|
||
|
return actions_1.ScrollCommand;
|
||
|
case type_1.default.request:
|
||
|
return actions_1.RequestCommand;
|
||
|
case type_1.default.getProxyUrl:
|
||
|
return actions_1.GetProxyUrlCommand;
|
||
|
default:
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
const STUDIO_PROPERTY_NAMES = {
|
||
|
studio: 'studio',
|
||
|
selector: 'selector',
|
||
|
note: 'note',
|
||
|
callsite: 'callsite',
|
||
|
};
|
||
|
function removeStudioRelatedProperties(commandObj) {
|
||
|
delete commandObj[STUDIO_PROPERTY_NAMES.studio];
|
||
|
delete commandObj[STUDIO_PROPERTY_NAMES.note];
|
||
|
delete commandObj[STUDIO_PROPERTY_NAMES.callsite];
|
||
|
const selectorValue = commandObj[STUDIO_PROPERTY_NAMES.selector];
|
||
|
if (!(0, lodash_1.isNil)(selectorValue))
|
||
|
return;
|
||
|
delete commandObj['selector'];
|
||
|
}
|
||
|
// Create command from object
|
||
|
function createCommandFromObject(obj, testRun) {
|
||
|
const CmdCtor = getCmdCtor(obj.type);
|
||
|
// NOTE: TestCafe Studio adds additional fields to the command object in RAW tests.
|
||
|
// They do not affect the execution of the command. Therefore, we should remove them before validation.
|
||
|
// We should change this mechanism in TestCafe Studio in the future to not add these properties to RAW tests.
|
||
|
removeStudioRelatedProperties(obj);
|
||
|
return CmdCtor && new CmdCtor(obj, testRun);
|
||
|
}
|
||
|
exports.default = createCommandFromObject;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbS1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvZnJvbS1vYmplY3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFFMUIsdUNBNkJtQjtBQUVuQiwyQ0FBK0M7QUFFL0MsaUVBTWdDO0FBRWhDLCtDQUEwRDtBQUMxRCxtQ0FBb0Q7QUFFcEQsU0FBUyxVQUFVLENBQUUsSUFBSTtJQUNyQixRQUFRLElBQUksRUFBRTtRQUNWLEtBQUssY0FBSSxDQUFDLEtBQUs7WUFDWCxPQUFPLHNCQUFZLENBQUM7UUFFeEIsS0FBSyxjQUFJLENBQUMsVUFBVTtZQUNoQixPQUFPLDJCQUFpQixDQUFDO1FBRTdCLEtBQUssY0FBSSxDQUFDLFdBQVc7WUFDakIsT0FBTyw0QkFBa0IsQ0FBQztRQUU5QixLQUFLLGNBQUksQ0FBQyxLQUFLO1lBQ1gsT0FBTyxzQkFBWSxDQUFDO1FBRXhCLEtBQUssY0FBSSxDQUFDLElBQUk7WUFDVixPQUFPLHFCQUFXLENBQUM7UUFFdkIsS0FBSyxjQUFJLENBQUMsYUFBYTtZQUNuQixPQUFPLDhCQUFvQixDQUFDO1FBRWhDLEtBQUssY0FBSSxDQUFDLFFBQVE7WUFDZCxPQUFPLHlCQUFlLENBQUM7UUFFM0IsS0FBSyxjQUFJLENBQUMsVUFBVTtZQUNoQixPQUFPLDJCQUFpQixDQUFDO1FBRTdCLEtBQUssY0FBSSxDQUFDLHFCQUFxQjtZQUMzQixPQUFPLHNDQUE0QixDQUFDO1FBRXhDLEtBQUssY0FBSSxDQUFDLHFCQUFxQjtZQUMzQixPQUFPLHNDQUE0QixDQUFDO1FBRXhDLEtBQUssY0FBSSxDQUFDLFFBQVE7WUFDZCxPQUFPLHlCQUFlLENBQUM7UUFFM0IsS0FBSyxjQUFJLENBQUMsSUFBSTtZQUNWLE9BQU8seUJBQVcsQ0FBQztRQUV2QixLQUFLLGNBQUksQ0FBQyxVQUFVO1lBQ2hCLE9BQU8sMkJBQWlCLENBQUM7UUFFN0IsS0FBSyxjQUFJLENBQUMsZ0JBQWdCO1lBQ3RCLE9BQU8saUNBQXVCLENBQUM7UUFFbkMsS0FBSyxjQUFJLENBQUMsV0FBVztZQUNqQixPQUFPLDRCQUFrQixDQUFDO1FBRTlCLEtBQUssY0FBSSxDQUFDLGNBQWM7WUFDcEIsT0FBTyw0Q0FBcUIsQ0FBQztRQUVqQyxLQUFLLGNBQUksQ0FBQyxxQkFBcUI7WUFDM0IsT0FBTyxtREFBNEIsQ0FBQztRQUV4QyxLQUFLLGNBQUksQ0FBQyxZQUFZO1lBQ2xCLE9BQU8sMENBQW1CLENBQUM7UUFFL0IsS0FBSyxjQUFJLENBQUMsdUJBQXVCO1lBQzdCLE9BQU8scURBQThCLENBQUM7UUFFMUMsS0FBSyxjQUFJLENBQUMsY0FBYztZQUNwQixPQUFPLDRDQUFxQixDQUFDO1FBRWpDLEtBQUssY0FBSSxDQUFDLGNBQWM7WUFDcEIsT0FBTywrQkFBcUIsQ0FBQztRQUVqQyxLQUFLLGNBQUksQ0FBQyxrQkFBa0I7WUFDeEIsT0FBTyxtQ0FBeUIsQ0FBQztRQUVyQyxLQUFLLGNBQUksQ0FBQyxzQkFBc0I7WUFDNUIsT0FBTyx1Q0FBNkIsQ0FBQztRQUV6QyxLQUFLLGNBQUksQ0FBQyxZQUFZO1lBQ2xCLE9BQU8sNkJBQW1CLENBQUM7UUFFL0IsS0FBSyxjQUFJLENBQUMsa0JBQWtCO1lBQ3hCLE9BQU8sbUNBQXlCLENBQUM7UUFFckMsS0FBSyxjQUFJLENBQUMsU0FBUztZQUNmLE9BQU8sNEJBQWdCLENBQUM7UUFFNUIsS0FBSyxjQUFJLENBQUMsS0FBSztZQUNYLE9BQU8sMEJBQVksQ0FBQztRQUV4QixLQUFLLGNBQUksQ0FBQyxpQkFBaUI7WUFDdkIsT0FBTyxrQ0FBd0IsQ0FBQztRQUVwQyxLQUFLLGNBQUksQ0FBQyxzQkFBc0I7WUFDNUIsT0FBTyx1Q0FBNkIsQ0FBQztRQUV6QyxLQUFLLGNBQUksQ0FBQyxRQUFRO1lBQ2QsT0FBTyx5QkFBZSxDQUFDO1FBRTNCLEtBQUssY0FBSSxDQUFDLFVBQVU7WUFDaEIsT0FBTywyQkFBaUIsQ0FBQztRQUU3QixLQUFLLGNBQUksQ0FBQyxVQUFVO1lBQ2hCLE9BQU8sMkJBQWlCLENBQUM7UUFFN0IsS0FBSyxjQUFJLENBQUMsYUFBYTtZQUNuQixPQUFPLDhCQUFvQixDQUFDO1FBRWhDLEtBQUssY0FBSSxDQUFDLE1BQU07WUFDWixPQUFPLHVCQUFhLENBQUM7UUFFekIsS0FBSyxjQUFJLENBQUMsT0FBTztZQUNiLE9BQU8sd0JBQWMsQ0FBQztRQUUxQixLQUFLLGNBQUksQ0FBQyxXQUFXO1lBQ2pCLE9BQU8sNEJBQWtCLENBQUM7UUFFOUI7WUFDSSxPQUFPLElBQUksQ0FBQztLQUNuQjtBQUNMLENBQUM7QUFFRCxNQUFNLHFCQUFxQixHQUFHO0lBQzFCLE1BQU0sRUFBSSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBTSxNQUFNO0lBQ2hCLFFBQVEsRUFBRSxVQUFVO0NBQ3ZCLENBQUM7QUFFRixTQUFTLDZCQUE2QixDQUFFLFVBQVU7SUFDOUMsT0FBTyxVQUFVLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsT0FBTyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsT0FBTyxVQUFVLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWpFLElBQUksQ0FBQyxJQUFBLGNBQWlCLEVBQUMsYUFBYSxDQUFDO1FBQ2pDLE9BQU87SUFFWCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsNkJBQTZCO0FBQzdCLFNBQXdCLHVCQUF1QixDQUFFLEdBQUcsRUFBRSxPQUFPO0lBQ3pELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMsbUZBQW1GO0lBQ25GLHVHQUF1RztJQUN2Ryw2R0FBNkc7SUFDN0csNkJBQTZCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkMsT0FBTyxPQUFPLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFURCwwQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUWVBFIGZyb20gJy4vdHlwZSc7XG5cbmltcG9ydCB7XG4gICAgQ2xpY2tDb21tYW5kLFxuICAgIFJpZ2h0Q2xpY2tDb21tYW5kLFxuICAgIERvdWJsZUNsaWNrQ29tbWFuZCxcbiAgICBIb3ZlckNvbW1hbmQsXG4gICAgRHJhZ0NvbW1hbmQsXG4gICAgRHJhZ1RvRWxlbWVudENvbW1hbmQsXG4gICAgVHlwZVRleHRDb21tYW5kLFxuICAgIFNlbGVjdFRleHRDb21tYW5kLFxuICAgIFNlbGVjdFRleHRBcmVhQ
|