UNPKG

@oaklean/profiler-jest-environment

Version:

A jest environment to collect energy measurements on source code level during test execution.

117 lines 10.2 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const profiler_1 = require("@oaklean/profiler"); const profiler_core_1 = require("@oaklean/profiler-core"); // Jest Environments const jest_environment_node_1 = __importDefault(require("jest-environment-node")); const jest_environment_jsdom_1 = __importDefault(require("jest-environment-jsdom")); const constants_1 = require("./constants"); class CustomEnvironment { get global() { return this.environment.global; } get fakeTimers() { return this.environment.fakeTimers; } get fakeTimersModern() { return this.environment.fakeTimersModern; } get moduleMocker() { return this.environment.moduleMocker; } getVmContext() { return this.environment.getVmContext(); } exportConditions() { return this.environment.exportConditions(); } constructor(config, context) { switch (config.projectConfig.testEnvironmentOptions['testEnvironment']) { case 'jsdom': this.environment = new jest_environment_jsdom_1.default(config, context); break; case 'node': default: this.environment = new jest_environment_node_1.default(config, context); break; } const rootDir = new profiler_core_1.UnifiedPath(config.projectConfig.rootDir); this.testPath = rootDir.pathTo(new profiler_core_1.UnifiedPath(context.testPath)); this.global.jestConfig = config; this.global.jestContext = context; if (constants_1.ENABLE_MEASUREMENTS) { this.profiler = new profiler_1.Profiler('jest'); } this.ranSuccessfully = true; } getExecutionDetails(profiler, config) { return __awaiter(this, void 0, void 0, function* () { const executionDetailsPath = profiler.exportAssetHelper.outputExecutionDetailsPath(); let executionDetails = profiler_core_1.ExecutionDetails.loadFromFile(executionDetailsPath); if (executionDetails === undefined) { executionDetails = yield profiler_core_1.ExecutionDetails.resolveExecutionDetails(config); executionDetails.origin = profiler_core_1.ProjectReportOrigin.jestEnv; profiler_core_1.ExecutionDetails.storeToFile(executionDetails, executionDetailsPath); } return executionDetails; }); } setup() { return __awaiter(this, void 0, void 0, function* () { yield this.environment.setup(); if (constants_1.ENABLE_MEASUREMENTS && this.profiler) { const performance = new profiler_core_1.PerformanceHelper(); try { performance.start('jestEnv.env.setup'); performance.start('jestEnv.env.resolveConfig'); const config = profiler_core_1.ProfilerConfig.autoResolve(); performance.stop('jestEnv.env.resolveConfig'); performance.start('jestEnv.env.resolveExecutionDetails'); const executionDetails = yield this.getExecutionDetails(this.profiler, config); performance.stop('jestEnv.env.resolveExecutionDetails'); performance.stop('jestEnv.env.setup'); performance.printReport('jestEnv.env.setup'); performance.exportAndSum(this.profiler.exportAssetHelper.outputPerformancePath()); yield this.profiler.start(this.testPath.toString(), executionDetails); } catch (e) { profiler_core_1.LoggerHelper.error('CustomEnvironment.setup():', e); this.ranSuccessfully = false; } } }); } teardown() { return __awaiter(this, void 0, void 0, function* () { if (constants_1.ENABLE_MEASUREMENTS && this.profiler) { const performance = new profiler_core_1.PerformanceHelper(); try { performance.start('jestEnv.env.teardown'); const stopTime = profiler_core_1.TimeHelper.getCurrentHighResolutionTime(); performance.stop('jestEnv.env.teardown'); performance.printReport('jestEnv.env.teardown'); performance.exportAndSum(this.profiler.exportAssetHelper.outputPerformancePath()); yield this.profiler.finish(this.testPath.toString(), stopTime); } catch (e) { profiler_core_1.LoggerHelper.error('CustomEnvironment.teardown(): ', e); } } yield this.environment.teardown(); }); } } module.exports = CustomEnvironment; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsZ0RBQTRDO0FBQzVDLDBEQVMrQjtBQUMvQixvQkFBb0I7QUFDcEIsa0ZBQW1EO0FBQ25ELG9GQUFxRDtBQUVyRCwyQ0FBaUQ7QUFTakQsTUFBTSxpQkFBaUI7SUFRdEIsSUFBSSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtJQUMvQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFBO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFBO0lBQ3JDLENBQUM7SUFFRCxZQUFZO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsWUFBWSxNQUE2QixFQUFFLE9BQTJCO1FBQ3JFLFFBQVEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDeEUsS0FBSyxPQUFPO2dCQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQ3hELE1BQUs7WUFDTixLQUFLLE1BQU0sQ0FBQztZQUNaO2dCQUNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSwrQkFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDdkQsTUFBSztRQUNQ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