UNPKG

arrange-act-assert

Version:

The lightweight "Act-Arrange-Assert" oriented testing framework

93 lines (92 loc) 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Coverage = void 0; let Inspector = null; try { Inspector = require("inspector"); } catch (e) { console.error(e); } class Coverage { constructor() { this._session = null; } start() { return new Promise((resolve, reject) => { if (this._session || !Inspector) { return resolve(); } this._session = new Inspector.Session(); this._session.connect(); this._session.post("Profiler.enable", (err) => { if (err) { this._session && this._session.disconnect(); this._session = null; reject(err); } else { if (!this._session) { return resolve(); } this._session.post("Profiler.startPreciseCoverage", { callCount: true, detailed: true }, err => { if (err) { if (!this._session) { return reject(err); } this._session.post("Profiler.disable", () => { this._session && this._session.disconnect(); this._session = null; reject(err); }); } else { resolve(); } }); } }); }); } takeCoverage() { return new Promise((resolve, reject) => { if (!this._session) { return reject("No session enabled"); } this._session.post("Profiler.takePreciseCoverage", (err, coverage) => { if (err) { reject(err); } else { try { resolve(coverage.result.filter(entry => entry.url.startsWith("file:"))); } catch (e) { reject(e); } } }); }); } stop() { return new Promise(resolve => { if (!this._session) { return resolve(); } this._session.post("Profiler.stopPreciseCoverage", () => { if (!this._session) { return resolve(); } this._session.post("Profiler.disable", () => { this._session && this._session.disconnect(); this._session = null; resolve(); }); }); }); } } exports.Coverage = Coverage;