testcafe
Version:
Automated browser testing for the modern web development stack.
73 lines • 11.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RawCommandCallsiteRecord = exports.renderers = exports.HtmlRender = exports.NoColorRender = exports.Render = void 0;
const chalk_1 = __importDefault(require("chalk"));
const lodash_1 = require("lodash");
class Render {
static getCommandStr(command) {
const { type, assertionType, selector, actual, expected, } = command;
const mainStr = `${(0, lodash_1.upperFirst)((0, lodash_1.camelCase)(type))} (${(assertionType ? actual === null || actual === void 0 ? void 0 : actual.value : selector === null || selector === void 0 ? void 0 : selector.value) || ''})`;
const subStr = assertionType ? ` ${assertionType} (${(expected === null || expected === void 0 ? void 0 : expected.value) || ''})` : '';
return `${mainStr}${subStr}`;
}
static codeFrame(str) {
return str;
}
static commandLine(num, command, base) {
let commandNum = `${base ? ' > ' : ' '}${num} `;
if (base)
commandNum = chalk_1.default.bgRed(commandNum);
return `${commandNum}|${Render.getCommandStr(command)}\n`;
}
}
exports.Render = Render;
class NoColorRender extends Render {
static commandLine(num, command, base) {
const commandNum = `${base ? ' > ' : ' '}${num} `;
return `${commandNum}|${Render.getCommandStr(command)}\n`;
}
}
exports.NoColorRender = NoColorRender;
class HtmlRender extends Render {
static codeFrame(str) {
return '<div class="code-frame">' + str + '</div>';
}
static commandLine(num, command, base) {
const numClass = base ? 'code-line-num-base' : 'code-line-num';
return `<div class="code-line">` +
`<div class="${numClass}">${num}</div>` +
`<div class="code-line-src">${Render.getCommandStr(command)}</div>` +
`</div>`;
}
}
exports.HtmlRender = HtmlRender;
exports.renderers = {
default: Render,
html: HtmlRender,
noColor: NoColorRender,
};
class RawCommandCallsiteRecord {
constructor(actionId, list) {
this.actionId = actionId;
this._list = list;
}
renderSync(opts) {
const { renderer = Render, frameSize = 1, codeFrame = true, } = opts;
if (!codeFrame)
return '';
const baseId = this._list.findIndex(item => item.actionId === this.actionId);
if (baseId < 0)
return '';
const firstId = Math.max(baseId - frameSize, 0);
const lastId = Math.min(baseId + frameSize, this._list.length - 1);
let frame = '';
for (let i = firstId; i <= lastId; i++)
frame += renderer.commandLine(i + 1, this._list[i], i === baseId);
return renderer.codeFrame(frame);
}
}
exports.RawCommandCallsiteRecord = RawCommandCallsiteRecord;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LWNvbW1hbmQtY2FsbHNpdGUtcmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3Jhdy1jb21tYW5kLWNhbGxzaXRlLXJlY29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsbUNBQStDO0FBcUIvQyxNQUFhLE1BQU07SUFDUixNQUFNLENBQUMsYUFBYSxDQUFFLE9BQWdCO1FBQ3pDLE1BQU0sRUFDRixJQUFJLEVBQ0osYUFBYSxFQUNiLFFBQVEsRUFDUixNQUFNLEVBQ04sUUFBUSxHQUNYLEdBQUcsT0FBTyxDQUFDO1FBRVosTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFBLG1CQUFVLEVBQUMsSUFBQSxrQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUM5RyxNQUFNLE1BQU0sR0FBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksYUFBYSxLQUFLLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEtBQUssS0FBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXBGLE9BQU8sR0FBRyxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNNLE1BQU0sQ0FBQyxTQUFTLENBQUUsR0FBVztRQUNoQyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFDTSxNQUFNLENBQUMsV0FBVyxDQUFFLEdBQVcsRUFBRSxPQUFnQixFQUFFLElBQWE7UUFDbkUsSUFBSSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxH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QztDQUNKO0FBakNELDREQWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBjYW1lbENhc2UsIHVwcGVyRmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbnRlcmZhY2UgQ29tbWFuZCB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBzZWxlY3Rvcj86IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgIH07XG4gICAgYWN0dWFsPzoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBleHBlY3RlZD86IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgIH07XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGFzc2VydGlvblR5cGU/OiBzdHJpbmc7XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGNsYXNzIFJlbmRlciB7XG4gICAgcHVibGljIHN0YXRpYyBnZXRDb21tYW5kU3RyIChjb21tYW5kOiBDb21tYW5kKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFzc2VydGlvblR5cGUsXG4gICAgICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgICAgIGFjdHVhbCxcbiAgICAgICAgICAgIGV4cGVjdGVkLFxuICAgICAgICB9ID0gY29tbWFuZDtcblxuICAgICAgICBjb25zdCBtYWluU3RyID0gYCR7dXBwZXJGaXJzdChjYW1lbENhc2UodHlwZSkpfSAoJHsoYXNzZXJ0aW9uVHlwZSA/IGFjdHVhbD8udmFsdWUgOiBzZWxlY3Rvcj8udmFsdWUpIHx8ICcnfSlgO1xuICAgICAgICBjb25zdCBzdWJTdHIgID0gYXNzZXJ0aW9uVHlwZSA/IGAgJHthc3NlcnRpb25UeXBlfSAoJHtleHBlY3RlZD8udmFsdWUgfHwgJyd9KWAgOiAnJztcblxuICAgICAgICByZXR1cm4gYCR7bWFpblN0cn0ke3N1YlN0cn1gO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGNvZGVGcmFtZSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGNvbW1hbmRMaW5lIChudW06IG51bWJlciwgY29tbWFuZDogQ29tbWFuZCwgYmFzZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGxldCBjb21tYW5kTnVtID0gYCR7YmFzZSA/ICcgPiAnIDogJyAgICd9JHtudW19IGA7XG5cbiAgICAgICAgaWYgKGJhc2UpXG4gICAgICAgICAgICBjb21tYW5kTnVtID0gY2hhbGsuYmdSZWQoY29tbWFuZE51bSk7XG5cbiAgICAgICAgcmV0dXJuIGAke2NvbW1hbmROdW19fCR7UmVuZGVyLmdldENvbW1hbmRTdHIoY29tbWFuZCl9XFxuYDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb0NvbG9yUmVuZGVyIGV4dGVuZHMgUmVuZGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIGNvbW1hbmRMaW5lIChudW06IG51bWJlciwgY29tbWFuZDogQ29tbWFuZCwgYmFzZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmROdW0gPSBgJHtiYXNlID8gJyA+ICcgOiAnICAgJ30ke251bX0gYDtcblxuICAgICAgICByZXR1cm4gYCR7Y29tbWFuZE51bX18JHtSZW5kZXIuZ2V0Q29tbWFuZFN0cihjb21tYW5kKX1cXG5gO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxSZW5kZXIgZXh0ZW5kcyBSZW5kZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgY29kZUZyYW1lIChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz1cImNvZGUtZnJhbWVcIj4nICsgc3RyICsgJzwvZGl2Pic7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb21tYW5kTGluZSAobnVtOiBudW1iZXIsIGNvbW1hbmQ6IENvbW1hbmQsIGJhc2U6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBudW1DbGFzcyAgPSBiYXNlID8gJ2NvZGUtbGluZS1udW0tYmFzZScgOiAnY29kZS1saW5lLW51bSc7XG5cbiAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiY29kZS1saW5lXCI+YCArXG4gICAgICAgICAgICBgPGRpdiBjbGFzcz1cIiR7bnVtQ2xhc3N9XCI+JHtudW19PC9kaXY+YCArXG4gICAgICAgICAgICBgPGRpdiBjbGFzcz1cImNvZGUtbGluZS1zcmNcIj4ke1JlbmRlci5nZXRDb21tYW5kU3RyKGNvbW1hbmQpfTwvZGl2PmAgK1xuICAgICAgICAgICAgYDwvZGl2PmA7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgUmVuZGVyT3B0aW9ucyB7XG4gICAgcmVuZGVyZXI/OiB0eXBlb2YgUmVuZGVyO1xuICAgIGZyYW1lU2l6ZT86IG51bWJlcjtcbiAgICBjb2RlRnJhbWU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgcmVuZGVyZXJzID0ge1xuICAgIGRlZmF1bHQ6IFJlbmRlcixcbiAgICBodG1sOiAgICBIdG1sUmVuZGVyLFxuICAgIG5vQ29sb3I6IE5vQ29sb3JSZW5kZXIsXG59O1xuXG5leHBvcnQgY2xhc3MgUmF3Q29tbWFuZENhbGxzaXRlUmVjb3JkIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWN0aW9uSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBDb21tYW5kW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKGFjdGlvbklkOiBzdHJpbmcsIGxpc3Q6IENvbW1hbmRbXSkge1xuICAgICAgICB0aGlzLmFjdGlvbklkID0gYWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuX2xpc3QgICAgPSBsaXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJTeW5jIChvcHRzOiBSZW5kZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgcmVuZGVyZXIgPSBSZW5kZXIsXG4gICAgICAgICAgICBmcmFtZVNpemUgPSAxLFxuICAgICAgICAgICAgY29kZUZyYW1lID0gdHJ1ZSxcbiAgICAgICAgfSA9IG9wdHM7XG5cbiAgICAgICAgaWYgKCFjb2RlRnJhbWUpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG5cbiAgICAgICAgY29uc3QgYmFzZUlkID0gdGhpcy5fbGlzdC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmFjdGlvbklkID09PSB0aGlzLmFjdGlvbklkKTtcblxuICAgICAgICBpZiAoYmFzZUlkIDwgMClcbiAgICAgICAgICAgIHJldHVybiAnJztcblxuICAgICAgICBjb25zdCBmaXJzdElkID0gTWF0aC5tYXgoYmFzZUlkIC0gZnJhbWVTaXplLCAwKTtcbiAgICAgICAgY29uc3QgbGFzdElkICA9IE1hdGgubWluKGJhc2VJZCArIGZyYW1lU2l6ZSwgdGhpcy5fbGlzdC5sZW5ndGggLSAxKTtcbiAgICAgICAgbGV0IGZyYW1lICAgICA9ICcnO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBmaXJzdElkOyBpIDw9IGxhc3RJZDsgaSsrKVxuICAgICAgICAgICAgZnJhbWUgKz0gcmVuZGVyZXIuY29tbWFuZExpbmUoaSArIDEsIHRoaXMuX2xpc3RbaV0sIGkgPT09IGJhc2VJZCk7XG5cbiAgICAgICAgcmV0dXJuIHJlbmRlcmVyLmNvZGVGcmFtZShmcmFtZSk7XG4gICAgfVxufVxuIl19