Innovenergy_trunk/frontend/node_modules/testcafe/lib/test-run/commands/utils.js

95 lines
14 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isExecutableOnClientCommand = exports.isJSExpression = exports.isExecutableInTopWindowOnly = exports.isServiceCommand = exports.isBrowserManipulationCommand = exports.isResizeWindowCommand = exports.isScreenshotCommand = exports.canSetDebuggerBreakpointBeforeCommand = exports.isAssertionCommand = exports.isObservationCommand = exports.isClientFunctionCommand = exports.isCommandRejectableByPageError = void 0;
// -------------------------------------------------------------
// WARNING: this file is used by both the client and the server.
// Do not use any browser or node-specific API!
// -------------------------------------------------------------
const type_1 = __importDefault(require("./type"));
const RAW_API_JS_EXPRESSION_TYPE = 'js-expr';
function isCommandRejectableByPageError(command) {
return !isObservationCommand(command) && !isBrowserManipulationCommand(command) && !isServiceCommand(command) ||
isResizeWindowCommand(command)
&& !isWindowSwitchingCommand(command);
}
exports.isCommandRejectableByPageError = isCommandRejectableByPageError;
function isClientFunctionCommand(command) {
return command.type === type_1.default.executeClientFunction ||
command.type === type_1.default.executeSelector;
}
exports.isClientFunctionCommand = isClientFunctionCommand;
function isObservationCommand(command) {
return isClientFunctionCommand(command) ||
command.type === type_1.default.wait ||
command.type === type_1.default.assertion ||
command.type === type_1.default.executeExpression;
}
exports.isObservationCommand = isObservationCommand;
function isAssertionCommand(command) {
return !!command.assertionType;
}
exports.isAssertionCommand = isAssertionCommand;
function isWindowSwitchingCommand(command) {
return command.type === type_1.default.switchToIframe || command.type === type_1.default.switchToMainWindow;
}
function canSetDebuggerBreakpointBeforeCommand(command) {
return command.type !== type_1.default.debug && !isClientFunctionCommand(command) && !isServiceCommand(command);
}
exports.canSetDebuggerBreakpointBeforeCommand = canSetDebuggerBreakpointBeforeCommand;
function isScreenshotCommand(command) {
return command.type === type_1.default.takeScreenshot ||
command.type === type_1.default.takeElementScreenshot ||
command.type === type_1.default.takeScreenshotOnFail;
}
exports.isScreenshotCommand = isScreenshotCommand;
function isResizeWindowCommand(command) {
return command.type === type_1.default.resizeWindow ||
command.type === type_1.default.resizeWindowToFitDevice ||
command.type === type_1.default.maximizeWindow;
}
exports.isResizeWindowCommand = isResizeWindowCommand;
function isBrowserManipulationCommand(command) {
return isScreenshotCommand(command) || isResizeWindowCommand(command);
}
exports.isBrowserManipulationCommand = isBrowserManipulationCommand;
function isServiceCommand(command) {
return command.type === type_1.default.testDone ||
command.type === type_1.default.showAssertionRetriesStatus ||
command.type === type_1.default.hideAssertionRetriesStatus ||
command.type === type_1.default.setBreakpoint ||
command.type === type_1.default.takeScreenshotOnFail ||
command.type === type_1.default.recorder ||
command.type === type_1.default.getProxyUrl;
}
exports.isServiceCommand = isServiceCommand;
function isExecutableInTopWindowOnly(command) {
return command.type === type_1.default.testDone ||
command.type === type_1.default.switchToMainWindow ||
command.type === type_1.default.setNativeDialogHandler ||
command.type === type_1.default.getNativeDialogHistory ||
command.type === type_1.default.setTestSpeed ||
command.type === type_1.default.showAssertionRetriesStatus ||
command.type === type_1.default.hideAssertionRetriesStatus ||
command.type === type_1.default.setBreakpoint ||
isBrowserManipulationCommand(command) && command.type !== type_1.default.takeElementScreenshot;
}
exports.isExecutableInTopWindowOnly = isExecutableInTopWindowOnly;
function isJSExpression(val) {
return val !== null && typeof val === 'object' && val.type === RAW_API_JS_EXPRESSION_TYPE &&
typeof val.value === 'string';
}
exports.isJSExpression = isJSExpression;
function isExecutableOnClientCommand(command) {
return command.type !== type_1.default.wait &&
command.type !== type_1.default.setPageLoadTimeout &&
command.type !== type_1.default.debug &&
command.type !== type_1.default.useRole &&
command.type !== type_1.default.assertion &&
command.type !== type_1.default.executeExpression &&
command.type !== type_1.default.executeAsyncExpression;
}
exports.isExecutableOnClientCommand = isExecutableOnClientCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQWdFO0FBQ2hFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsZ0VBQWdFO0FBQ2hFLGtEQUEwQjtBQUUxQixNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQztBQUU3QyxTQUFnQiw4QkFBOEIsQ0FBRSxPQUFPO0lBQ25ELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3RHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztlQUMzQixDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFKRCx3RUFJQztBQUVELFNBQWdCLHVCQUF1QixDQUFFLE9BQU87SUFDNUMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxxQkFBcUI7UUFDM0MsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2pELENBQUM7QUFIRCwwREFHQztBQUVELFNBQWdCLG9CQUFvQixDQUFFLE9BQU87SUFDekMsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7UUFDaEMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxTQUFTO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGlCQUFpQixDQUFDO0FBQ25ELENBQUM7QUFMRCxvREFLQztBQUVELFNBQWdCLGtCQUFrQixDQUFFLE9BQU87SUFDdkMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNuQyxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxT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Q2hELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxrQkFBa0I7UUFDeEMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsS0FBSztRQUMzQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxPQUFPO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsaUJBQWlCO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLHNCQUFzQixDQUFDO0FBQ3hELENBQUM7QUFSRCxrRUFRQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5pbXBvcnQgVFlQRSBmcm9tICcuL3R5cGUnO1xuXG5jb25zdCBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSA9ICdqcy1leHByJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tbWFuZFJlamVjdGFibGVCeVBhZ2VFcnJvciAoY29tbWFuZCkge1xuICAgIHJldHVybiAhaXNPYnNlcnZhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzU2VydmljZUNvbW1hbmQoY29tbWFuZCkgfHxcbiAgICAgICAgICAgaXNSZXNpemVXaW5kb3dDb21tYW5kKGNvbW1hbmQpXG4gICAgICAgICAgICYmICFpc1dpbmRvd1N3aXRjaGluZ0NvbW1hbmQoY29tbWFuZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUuZXhlY3V0ZUNsaWVudEZ1bmN0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlU2VsZWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09ic2VydmF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZChjb21tYW5kKSB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUud2FpdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuYXNzZXJ0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXNzZXJ0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiAhIWNvbW1hbmQuYXNzZXJ0aW9uVHlwZTtcbn1cblxuZnVuY3Rpb24gaXNXaW5kb3dTd2l0Y2hpbmdDb21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb0lmcmFtZSB8fCBjb21tYW5kLnR5cGUgPT09IFRZUEUuc3dpdGNoVG9NYWluV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuU2V0RGVidWdnZXJCcmVha3BvaW50QmVmb3JlQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUuZGVidWcgJiYgIWlzQ2xpZW50RnVuY3Rpb25Db21tYW5kKGNvbW1hbmQpICYmICFpc1NlcnZpY2VDb21tYW5kKGNvbW1hbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JlZW5zaG90Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3QgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3RPbkZhaWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc2l6ZVdpbmRvd0NvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnJlc2l6ZVdpbmRvdyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUucmVzaXplV2luZG93VG9GaXREZXZpY2UgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLm1heGltaXplV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCcm93c2VyTWFuaXB1bGF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc1NjcmVlbnNob3RDb21tYW5kKGNvbW1hbmQpIHx8IGlzUmVzaXplV2luZG93Q29tbWFuZChjb21tYW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VydmljZUNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1cyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuaGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldEJyZWFrcG9pbnQgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5yZWNvcmRlciB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuZ2V0UHJveHlVcmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGVJblRvcFdpbmRvd09ubHkgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb01haW5XaW5kb3cgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmdldE5hdGl2ZURpYWxvZ0hpc3RvcnkgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldFRlc3RTcGVlZCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXRCcmVha3BvaW50IHx8XG4gICAgICAgICAgIGlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgY29tbWFuZC50eXBlICE9PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSlNFeHByZXNzaW9uICh2YWwpIHtcbiAgICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbC50eXBlID09PSBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSAmJlxuICAgICAgICAgICB0eXBlb2YgdmFsLnZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhlY3V0YWJsZU9uQ2xpZW50Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUud2FpdCAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuc2V0UGFnZUxvYWRUaW1lb3V0ICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5kZWJ1ZyAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUudXNlUm9sZSAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuYXNzZXJ0aW9uICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbjtcbn1cbiJdfQ==