jest-metadata
Version:
🦸♂️ Superhero power for your Jest reporters! 🦸♀️
99 lines • 4.96 kB
JavaScript
;
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();
const afterAllFlushHandler = ({ event, }) => {
if (event.hook.type === 'afterAll') {
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 - 1)
.on('hook_failure', afterAllFlushHandler, Number.MAX_SAFE_INTEGER)
.on('hook_start', testEventHandler, -1)
.on('hook_success', testEventHandler, Number.MAX_SAFE_INTEGER - 1)
.on('hook_success', afterAllFlushHandler, Number.MAX_SAFE_INTEGER)
.on('test_start', testEventHandler, -1)
.on('test_started', testEventHandler, -1)
.on('test_retry', testEventHandler, -1)
.on('test_skip', testEventHandler, Number.MAX_SAFE_INTEGER - 1)
.on('test_skip', flushHandler, Number.MAX_SAFE_INTEGER)
.on('test_todo', testEventHandler, Number.MAX_SAFE_INTEGER - 1)
.on('test_todo', flushHandler, 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