@percy/sdk-utils
Version:
Common JavaScript SDK utils
66 lines (55 loc) • 1.71 kB
JavaScript
const utils = require('@percy/sdk-utils');
const helpers = {
async setupTest({ logger = true } = {}) {
utils.percy.version = '';
delete utils.percy.config;
delete utils.percy.build;
delete utils.percy.enabled;
delete utils.percy.domScript;
delete utils.logger.log.history;
delete utils.logger.loglevel.lvl;
delete process.env.PERCY_LOGLEVEL;
delete process.env.PERCY_SERVER_ADDRESS;
utils.logger.log = helpers.logger.__log__;
if (logger) helpers.logger.mock();
await helpers.test('reset');
},
async test(cmd, arg) {
let res = await utils.request.post(`/test/api/${cmd}`, arg);
return res.body;
},
async get(what, map) {
let res = await utils.request(`/test/${what}`);
if (!map) map = what === 'logs' ? (l => l.message) : (i => i);
return Array.isArray(res.body[what]) ? res.body[what].map(map) : map(res.body);
},
async mockGetCurrentUrl() {
try {
await utils.request('/wd/hub/session');
} catch {}
},
get testSnapshotURL() {
return `${utils.percy.address}/test/snapshot`;
},
logger: {
__log__: utils.logger.log,
loglevel: utils.logger.loglevel,
stdout: [],
stderr: [],
mock() {
helpers.logger.reset();
utils.logger.log = (ns, lvl, msg) => {
if (lvl === 'debug' && helpers.logger.loglevel.lvl !== 'debug') return;
msg = `[percy${lvl === 'debug' ? `:${ns}` : ''}] ${msg}`;
let io = (lvl === 'info') ? 'stdout' : 'stderr';
helpers.logger[io].push(msg);
};
},
reset() {
helpers.logger.stdout = [];
helpers.logger.stderr = [];
helpers.logger.loglevel('info');
}
}
};
module.exports = helpers;