Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 4x 1x 1x 1x | "use strict";
const _ = require("lodash");
const U = require("glace-utils");
const CONF = require("../config");
const beforeCb = opts => ctx => async () => {
ctx.isErrorHappened = false;
ctx.lastTestErr = getLastTestErr();
ctx.lastSessErr = _.nth(CONF.session.errors, -1);
ctx.isStarted = await $.startVideo(opts);
};
const afterChunkCb = ctx => () => {
Iif (ctx.isErrorHappened) return;
Iif (ctx.lastTestErr !== getLastTestErr()) {
ctx.isErrorHappened = true;
return;
}
Iif (ctx.lastSessErr !== _.nth(CONF.session.errors, -1)) {
ctx.isErrorHappened = true;
return;
}
};
const afterCb = opts => ctx => async () => {
Iif (!ctx.isStarted) return;
const videoPath = await $.stopVideo();
Iif (ctx.isErrorHappened || CONF.video.save || opts.save) {
allure.attachVideo("video", videoPath);
} else {
await $.removeVideo();
}
};
const getLastTestErr = () => CONF.test.curCase ? _.nth(CONF.test.curCase.errors, -1) : undefined;
/**
* Callable fixture to capture tests video.
*
* @global
* @function
* @prop {string} [dir] - Video file folder.
* @prop {string} [name] - Video file name.
*/
const fxVideoFunc = (opts = {}) => U.makeFixture({
before: beforeCb(opts),
after: afterCb(opts),
afterChunk: afterChunkCb,
});
/**
* Fixture to capture tests video.
*
* @global
* @function
* @arg {function} func - Test funciton.
*/
const fxVideo = fxVideoFunc();
module.exports = { fxVideo, fxVideoFunc };
|