mirror of
https://github.com/n8n-io/n8n.git
synced 2025-12-05 19:27:26 -06:00
69 lines
2.0 KiB
JavaScript
69 lines
2.0 KiB
JavaScript
const { pathsToModuleNameMapper } = require('ts-jest');
|
|
const { compilerOptions } = require('get-tsconfig').getTsconfig().config;
|
|
const { resolve } = require('path');
|
|
|
|
/** @type {import('ts-jest').TsJestGlobalOptions} */
|
|
const tsJestOptions = {
|
|
isolatedModules: true,
|
|
tsconfig: {
|
|
...compilerOptions,
|
|
declaration: false,
|
|
sourceMap: true,
|
|
},
|
|
};
|
|
|
|
const isCoverageEnabled = process.env.COVERAGE_ENABLED === 'true';
|
|
|
|
const esmDependencies = [
|
|
'pdfjs-dist',
|
|
'openid-client',
|
|
'oauth4webapi',
|
|
'jose',
|
|
'p-retry',
|
|
'is-network-error',
|
|
// Add other ESM dependencies that need to be transformed here
|
|
];
|
|
|
|
const esmDependenciesPattern = esmDependencies.join('|');
|
|
const esmDependenciesRegex = `node_modules/(${esmDependenciesPattern})/.+\\.m?js$`;
|
|
|
|
/** @type {import('jest').Config} */
|
|
const config = {
|
|
verbose: true,
|
|
testEnvironment: 'node',
|
|
testRegex: '\\.(test|spec)\\.(js|ts)$',
|
|
testPathIgnorePatterns: ['/dist/', '/node_modules/'],
|
|
transform: {
|
|
'^.+\\.ts$': ['ts-jest', tsJestOptions],
|
|
[esmDependenciesRegex]: [
|
|
'babel-jest',
|
|
{
|
|
presets: ['@babel/preset-env'],
|
|
plugins: ['babel-plugin-transform-import-meta'],
|
|
},
|
|
],
|
|
},
|
|
transformIgnorePatterns: [`/node_modules/(?!${esmDependenciesPattern})/`],
|
|
// This resolve the path mappings from the tsconfig relative to each jest.config.js
|
|
moduleNameMapper: {
|
|
'^@n8n/utils$': resolve(__dirname, 'packages/@n8n/utils/dist/index.cjs'),
|
|
...(compilerOptions?.paths
|
|
? pathsToModuleNameMapper(compilerOptions.paths, {
|
|
prefix: `<rootDir>${compilerOptions.baseUrl ? `/${compilerOptions.baseUrl.replace(/^\.\//, '')}` : ''}`,
|
|
})
|
|
: {}),
|
|
},
|
|
setupFilesAfterEnv: ['jest-expect-message'],
|
|
collectCoverage: isCoverageEnabled,
|
|
coverageReporters: ['text-summary', 'lcov', 'html-spa'],
|
|
workerIdleMemoryLimit: '1MB',
|
|
};
|
|
|
|
if (process.env.CI === 'true') {
|
|
config.collectCoverageFrom = ['src/**/*.ts'];
|
|
config.reporters = ['default', 'jest-junit'];
|
|
config.coverageReporters = ['cobertura'];
|
|
}
|
|
|
|
module.exports = config;
|