UNPKG

jest-metadata

Version:

🦸‍♂️ Superhero power for your Jest reporters! 🦸‍♀️

91 lines 4.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("util"); const errors_1 = require("./errors"); const realms_1 = require("./realms"); const utils_1 = require("./utils"); const listener = (context) => { const log = utils_1.logger.child({ cat: 'jest-metadata-environment', tid: 'jest-metadata' }); const jestEnvironment = context.env; const jestEnvironmentConfig = context.config; const environmentContext = context.context; (0, realms_1.detectDuplicateRealms)(true); (0, realms_1.injectRealmIntoSandbox)(jestEnvironment.global, realms_1.realm); const testFilePath = environmentContext.testPath; realms_1.realm.environmentHandler.handleEnvironmentCreated(testFilePath); realms_1.realm.events.add(realms_1.realm.setEmitter); if (!realms_1.realm.globalMetadata.hasTestFileMetadata(testFilePath)) { realms_1.realm.coreEmitter.emit({ type: 'add_test_file', testFilePath, }); if (realms_1.realm.type === 'parent_process') { const { globalConfig } = jestEnvironmentConfig; const first = (r) => r[0]; const hint = globalConfig ? ` "reporters": ${(0, util_1.inspect)(globalConfig.reporters?.map(first))}\n` : ''; // Jest 27 fallback const message = `Cannot use a metadata test environment without a metadata server.\n` + `Please check that at least one of the reporters in your Jest config inherits from "jest-metadata/reporter".\n` + hint; if (globalConfig && (utils_1.jestUtils.isSingleWorker(globalConfig) || utils_1.jestUtils.isInsideIDE(globalConfig))) { log.warn(message); } else { log.debug(message); throw new errors_1.JestMetadataError(message); } } } const testEventHandler = ({ event, state }) => { realms_1.realm.environmentHandler.handleTestEvent(event, state); }; const backToDescribe = () => { realms_1.realm.metadataHandler.backToDescribe(testFilePath); }; const flushHandler = () => realms_1.realm.ipc.flush(); context.testEvents .on('test_environment_setup', async function () { if (realms_1.realm.type === 'child_process') { await realms_1.realm.ipc.start(); } }, -1) .on('test_environment_teardown', async function () { (0, realms_1.detectDuplicateRealms)(false); if (realms_1.realm.type === 'child_process') { await realms_1.realm.ipc.stop(); } }, Number.MAX_SAFE_INTEGER) .on('setup', testEventHandler, -1) .on('include_test_location_in_result', testEventHandler, -1) .on('start_describe_definition', testEventHandler, -1) .on('finish_describe_definition', testEventHandler, Number.MAX_SAFE_INTEGER) .on('add_hook', testEventHandler, -1) .on('add_test', testEventHandler, -1) .on('add_hook', backToDescribe, Number.MAX_SAFE_INTEGER) .on('add_test', backToDescribe, Number.MAX_SAFE_INTEGER) .on('run_start', testEventHandler, -1) .on('run_start', flushHandler, Number.MAX_SAFE_INTEGER) .on('run_describe_start', testEventHandler, -1) .on('hook_failure', testEventHandler, Number.MAX_SAFE_INTEGER) .on('hook_start', testEventHandler, -1) .on('hook_success', testEventHandler, Number.MAX_SAFE_INTEGER) .on('test_start', testEventHandler, -1) .on('test_start', flushHandler, Number.MAX_SAFE_INTEGER) .on('test_started', testEventHandler, -1) .on('test_retry', testEventHandler, -1) .on('test_skip', testEventHandler, Number.MAX_SAFE_INTEGER) .on('test_todo', testEventHandler, Number.MAX_SAFE_INTEGER) .on('test_fn_start', testEventHandler, -1) .on('test_fn_failure', testEventHandler, Number.MAX_SAFE_INTEGER) .on('test_fn_success', testEventHandler, Number.MAX_SAFE_INTEGER) .on('test_done', testEventHandler, Number.MAX_SAFE_INTEGER - 1) .on('test_done', flushHandler, Number.MAX_SAFE_INTEGER) .on('run_describe_finish', testEventHandler, Number.MAX_SAFE_INTEGER) .on('run_finish', testEventHandler, Number.MAX_SAFE_INTEGER - 1) .on('run_finish', flushHandler, Number.MAX_SAFE_INTEGER) .on('teardown', testEventHandler, Number.MAX_SAFE_INTEGER); }; exports.default = listener; //# sourceMappingURL=environment-listener.js.map