testcafe
Version:
Automated browser testing for the modern web development stack.
85 lines • 12.6 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// -------------------------------------------------------------
// 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;
}
function isObservationCommand(command) {
return isClientFunctionCommand(command) ||
command.type === type_1.default.wait ||
command.type === type_1.default.assertion ||
command.type === type_1.default.executeExpression;
}
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;
}
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;
}
exports.isExecutableOnClientCommand = isExecutableOnClientCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBZ0U7QUFDaEUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxnRUFBZ0U7QUFDaEUsa0RBQTBCO0FBRTFCLE1BQU0sMEJBQTBCLEdBQUcsU0FBUyxDQUFDO0FBRTdDLFNBQWdCLDhCQUE4QixDQUFFLE9BQU87SUFDbkQsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDdEcscUJBQXFCLENBQUMsT0FBTyxDQUFDO2VBQzNCLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUpELHdFQUlDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBRSxPQUFPO0lBQ3JDLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMscUJBQXFCO1FBQzNDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGVBQWUsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBRSxPQUFPO0lBQ2xDLE9BQU8sdUJBQXVCLENBQUMsT0FBTyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLElBQUk7UUFDMUIsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsU0FBUztRQUMvQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBRSxPQUFPO0lBQ3RDLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGtCQUFrQixDQUFDO0FB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SSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsaUJBQWlCLENBQUM7QUFDbkQsQ0FBQztBQVBELGtFQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gV0FSTklORzogdGhpcyBmaWxlIGlzIHVzZWQgYnkgYm90aCB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyLlxuLy8gRG8gbm90IHVzZSBhbnkgYnJvd3NlciBvciBub2RlLXNwZWNpZmljIEFQSSFcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmltcG9ydCBUWVBFIGZyb20gJy4vdHlwZSc7XG5cbmNvbnN0IFJBV19BUElfSlNfRVhQUkVTU0lPTl9UWVBFID0gJ2pzLWV4cHInO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21tYW5kUmVqZWN0YWJsZUJ5UGFnZUVycm9yIChjb21tYW5kKSB7XG4gICAgcmV0dXJuICFpc09ic2VydmF0aW9uQ29tbWFuZChjb21tYW5kKSAmJiAhaXNCcm93c2VyTWFuaXB1bGF0aW9uQ29tbWFuZChjb21tYW5kKSAmJiAhaXNTZXJ2aWNlQ29tbWFuZChjb21tYW5kKSB8fFxuICAgICAgICAgICBpc1Jlc2l6ZVdpbmRvd0NvbW1hbmQoY29tbWFuZClcbiAgICAgICAgICAgJiYgIWlzV2luZG93U3dpdGNoaW5nQ29tbWFuZChjb21tYW5kKTtcbn1cblxuZnVuY3Rpb24gaXNDbGllbnRGdW5jdGlvbkNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLmV4ZWN1dGVDbGllbnRGdW5jdGlvbiB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuZXhlY3V0ZVNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBpc09ic2VydmF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZChjb21tYW5kKSB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUud2FpdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuYXNzZXJ0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbjtcbn1cblxuZnVuY3Rpb24gaXNXaW5kb3dTd2l0Y2hpbmdDb21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb0lmcmFtZSB8fCBjb21tYW5kLnR5cGUgPT09IFRZUEUuc3dpdGNoVG9NYWluV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuU2V0RGVidWdnZXJCcmVha3BvaW50QmVmb3JlQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUuZGVidWcgJiYgIWlzQ2xpZW50RnVuY3Rpb25Db21tYW5kKGNvbW1hbmQpICYmICFpc1NlcnZpY2VDb21tYW5kKGNvbW1hbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JlZW5zaG90Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3QgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3RPbkZhaWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc2l6ZVdpbmRvd0NvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnJlc2l6ZVdpbmRvdyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUucmVzaXplV2luZG93VG9GaXREZXZpY2UgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLm1heGltaXplV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCcm93c2VyTWFuaXB1bGF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc1NjcmVlbnNob3RDb21tYW5kKGNvbW1hbmQpIHx8IGlzUmVzaXplV2luZG93Q29tbWFuZChjb21tYW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VydmljZUNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1cyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuaGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldEJyZWFrcG9pbnQgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeGVjdXRhYmxlSW5Ub3BXaW5kb3dPbmx5IChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS50ZXN0RG9uZSB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc3dpdGNoVG9NYWluV2luZG93IHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXROYXRpdmVEaWFsb2dIYW5kbGVyIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5nZXROYXRpdmVEaWFsb2dIaXN0b3J5IHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXRUZXN0U3BlZWQgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNob3dBc3NlcnRpb25SZXRyaWVzU3RhdHVzIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5oaWRlQXNzZXJ0aW9uUmV0cmllc1N0YXR1cyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc2V0QnJlYWtwb2ludCB8fFxuICAgICAgICAgICBpc0Jyb3dzZXJNYW5pcHVsYXRpb25Db21tYW5kKGNvbW1hbmQpICYmIGNvbW1hbmQudHlwZSAhPT0gVFlQRS50YWtlRWxlbWVudFNjcmVlbnNob3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0pTRXhwcmVzc2lvbiAodmFsKSB7XG4gICAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwudHlwZSA9PT0gUkFXX0FQSV9KU19FWFBSRVNTSU9OX1RZUEUgJiZcbiAgICAgICAgICAgdHlwZW9mIHZhbC52YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGVPbkNsaWVudENvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlICE9PSBUWVBFLndhaXQgJiZcbiAgICAgICAgICAgY29tbWFuZC50eXBlICE9PSBUWVBFLnNldFBhZ2VMb2FkVGltZW91dCAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuZGVidWcgJiZcbiAgICAgICAgICAgY29tbWFuZC50eXBlICE9PSBUWVBFLnVzZVJvbGUgJiZcbiAgICAgICAgICAgY29tbWFuZC50eXBlICE9PSBUWVBFLmFzc2VydGlvbiAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuZXhlY3V0ZUV4cHJlc3Npb247XG59XG4iXX0=