webdriverio-automation
Version:
WebdriverIO-Automation android ios project
104 lines (103 loc) • 3.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.aliasFn = exports.compareNumbers = exports.waitUntil = exports.executeCommandBe = exports.executeCommand = exports.numberError = exports.enhanceError = exports.wrapExpectedWithArray = exports.updateElementsArray = exports.compareText = void 0;
const options_1 = require("./options");
const executeCommand_1 = require("./util/executeCommand");
Object.defineProperty(exports, "executeCommand", { enumerable: true, get: function () { return executeCommand_1.executeCommand; } });
const elementsUtil_1 = require("./util/elementsUtil");
Object.defineProperty(exports, "wrapExpectedWithArray", { enumerable: true, get: function () { return elementsUtil_1.wrapExpectedWithArray; } });
Object.defineProperty(exports, "updateElementsArray", { enumerable: true, get: function () { return elementsUtil_1.updateElementsArray; } });
const formatMessage_1 = require("./util/formatMessage");
Object.defineProperty(exports, "enhanceError", { enumerable: true, get: function () { return formatMessage_1.enhanceError; } });
Object.defineProperty(exports, "numberError", { enumerable: true, get: function () { return formatMessage_1.numberError; } });
const expectAdapter_1 = require("./util/expectAdapter");
const config = options_1.getConfig();
const { options: DEFAULT_OPTIONS } = config;
const waitUntil = async (condition, isNot = false, { wait = DEFAULT_OPTIONS.wait, interval = DEFAULT_OPTIONS.interval } = {}) => {
if (wait === 0) {
return await condition();
}
try {
let error;
await browser.waitUntil(async () => {
error = undefined;
try {
return isNot !== await condition();
}
catch (err) {
error = err;
return false;
}
}, {
timeout: wait,
interval
});
if (error) {
throw error;
}
return !isNot;
}
catch (err) {
return isNot;
}
};
exports.waitUntil = waitUntil;
async function executeCommandBe(received, command, options) {
const { isNot, expectation, verb = 'be' } = this;
received = await received;
let el = received;
const pass = await waitUntil(async () => {
const result = await executeCommand_1.executeCommand.call(this, el, async (element) => ({ result: await command(element) }), options);
el = result.el;
return result.success;
}, isNot, options);
elementsUtil_1.updateElementsArray(pass, received, el);
const message = formatMessage_1.enhanceErrorBe(el, pass, this, verb, expectation, options);
return {
pass,
message: () => message
};
}
exports.executeCommandBe = executeCommandBe;
const compareNumbers = (actual, gte, lte, eq) => {
if (typeof eq === 'number') {
return actual === eq;
}
if (lte > 0 && actual > lte) {
return false;
}
return actual >= gte;
};
exports.compareNumbers = compareNumbers;
exports.compareText = (actual, expected, { ignoreCase = false, trim = false, containing = false }) => {
if (typeof actual !== 'string') {
return {
value: actual,
result: false
};
}
if (trim) {
actual = actual.trim();
}
if (ignoreCase) {
actual = actual.toLowerCase();
expected = expected.toLowerCase();
}
if (containing) {
return {
value: actual,
result: actual.includes(expected)
};
}
return {
value: actual,
result: actual === expected
};
};
function aliasFn(fn, { verb, expectation } = {}, ...args) {
const context = expectAdapter_1.getContext(this);
context.verb = verb;
context.expectation = expectation;
return fn.apply(context, args);
}
exports.aliasFn = aliasFn;
;