@qavajs/steps-playwright
Version:
qavajs steps to interact with playwright
81 lines • 3.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveScreenshotAfterStep = saveScreenshotAfterStep;
exports.saveScreenshotBeforeStep = saveScreenshotBeforeStep;
exports.saveTrace = saveTrace;
exports.saveVideo = saveVideo;
exports.traceArchive = traceArchive;
exports.parseCoords = parseCoords;
exports.equalOrIncludes = equalOrIncludes;
exports.parseCoordsAsObject = parseCoordsAsObject;
exports.sleep = sleep;
exports.dataTable2Array = dataTable2Array;
const screenshotEvent_1 = require("./screenshotEvent");
const traceEvent_1 = require("./traceEvent");
const videoEvent_1 = require("./videoEvent");
const core_1 = require("@qavajs/core");
const node_path_1 = require("node:path");
function saveScreenshotAfterStep(config, step) {
const screenshotEvent = getEventValue(config?.driverConfig?.screenshot);
const isAfterStepScreenshot = equalOrIncludes(screenshotEvent, screenshotEvent_1.ScreenshotEvent.AFTER_STEP);
const isOnFailScreenshot = equalOrIncludes(screenshotEvent, screenshotEvent_1.ScreenshotEvent.ON_FAIL);
return (isOnFailScreenshot && step.result.status === core_1.Status.FAILED) || isAfterStepScreenshot;
}
function saveScreenshotBeforeStep(config) {
const screenshotEvent = getEventValue(config?.driverConfig?.screenshot);
return equalOrIncludes(screenshotEvent, screenshotEvent_1.ScreenshotEvent.BEFORE_STEP);
}
function saveTrace(driverConfig, scenario) {
return driverConfig?.trace && ((equalOrIncludes(driverConfig?.trace.event, traceEvent_1.TraceEvent.AFTER_SCENARIO)) ||
(scenario.result?.status === core_1.Status.FAILED && equalOrIncludes(driverConfig?.trace.event, traceEvent_1.TraceEvent.ON_FAIL)));
}
function saveVideo(driverConfig, scenario) {
return driverConfig?.video && ((equalOrIncludes(driverConfig?.video.event, videoEvent_1.VideoEvent.AFTER_SCENARIO)) ||
(scenario.result?.status === core_1.Status.FAILED && equalOrIncludes(driverConfig?.video.event, videoEvent_1.VideoEvent.ON_FAIL)));
}
function normalizeScenarioName(name) {
return name.replace(/\W/g, '-');
}
function traceArchive(driverConfig, scenario) {
return (0, node_path_1.join)(driverConfig.trace?.dir ?? 'traces', `${normalizeScenarioName(scenario.pickle.name)}-${scenario.testCaseStartedId}.zip`);
}
/**
* Parse 'x, y' string to coordinates array
* @param {string} coords - 'x, y' string
* @return {number[]} - coords array
*/
function parseCoords(coords) {
return coords.split(/\s?,\s?/).map((c) => parseFloat(c ?? 0));
}
function equalOrIncludes(value, argument) {
return Array.isArray(value)
? value.includes(argument)
: value === argument;
}
/**
* Parse 'x, y' string to coordinates object
* @param {string} coords - 'x, y' string
* @return {{x: number, y: number}} - coords object
*/
function parseCoordsAsObject(coords) {
const [x, y] = coords.split(/\s?,\s?/).map((c) => parseFloat(c ?? 0));
return { x, y };
}
async function sleep(ms) {
await new Promise(resolve => setTimeout(() => resolve(0), ms));
}
function getEventValue(entity) {
return entity?.event
? entity.event
: entity;
}
/**
* Transform key-value data table to array
* @param ctx
* @param dataTable
* @return {any[]}
*/
function dataTable2Array(ctx, dataTable) {
return Promise.all(dataTable.raw().map(([value]) => ctx.getValue(value)));
}
//# sourceMappingURL=utils.js.map