"use strict"; /** * `Glace video` globals. * * @module */ const _ = require("lodash"); const U = require("glace-utils"); const CONF = require("./config"); const gScope = global.scope; /** * Extends `scope` function by addition options to manage video recording. * Cause it overrides `scope`, all functions, which use global `scope` inside, * can pass its options as well. * * @global * @function scope * @arg {string} name - Scope name. * @arg {function[]} [fixtures] - List of fixtures. * @arg {object} [opts] - Options, which extends basic options. * @arg {string} [opts.videoName] - Name of video file. * @arg {string} [opts.videoDir] - Folder to save video file. * @arg {boolean} [opts.videoSave] - Flag to save video even if all is passed inside. * @arg {boolean} [opts.video] - Flag to capture video with default options. * Used if above options are missed. * @arg {function} func - Callback with tests or chunks. */ const _scope = (name, fixtures, opts, func) => { if (_.isFunction(opts)) [func, opts] = [opts]; if (_.isPlainObject(fixtures)) [opts, fixtures] = [fixtures]; if (_.isFunction(fixtures)) [func, fixtures] = [fixtures]; fixtures = fixtures || []; opts = opts || {}; const video = !!U.defVal( opts.video, opts.videoName, opts.videoDir, opts.videoSave, false); if (video || CONF.video.capture) { if (!fixtures.includes(fxVideo)) { fixtures = [fxVideoFunc({ name: opts.videoName, dir: opts.videoDir, save: opts.videoSave, })].concat(fixtures); } } gScope(name, fixtures, opts, func); }; global.scope = _scope;