diff --git a/jest.config.cjs b/jest.config.cjs index 83d4ba18..c716a927 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -27,6 +27,8 @@ const commonConfig = { tsconfig: 'tsconfig.test.json', }] }, + resolver: './jest.resolver.cjs', + moduleFileExtensions: ['ts', 'tsx', 'cts', 'js', 'json'], modulePathIgnorePatterns: ['/packages/magicbell/dist', '/packages/playground', '/packages/embeddable/cypress'], globals: { __PACKAGE_NAME__: 'TEST', @@ -41,16 +43,22 @@ const commonConfig = { moduleNameMapper, }; +const projectConfigs = { + '@magicbell/user-client': { + testEnvironment: 'node', + } +}; + /** @type {import('jest').Config} */ module.exports = { projects: packages.map(([name, dir]) => ({ ...commonConfig, displayName: name, - testEnvironment: name === '@magicbell/user-client' ? 'node' : "jest-environment-jsdom", testMatch: [ `${dir}/src/**/*.test.[jt]s?(x)"`, `${dir}/test/**/*.[jt]s?(x)"`, `${dir}/tests/**/*.spec.[jt]s?(x)"`, ], + ...projectConfigs[name], })) }; diff --git a/jest.resolver.cjs b/jest.resolver.cjs new file mode 100644 index 00000000..38a0462d --- /dev/null +++ b/jest.resolver.cjs @@ -0,0 +1,12 @@ +const fs = require('fs'); + +module.exports = (request, options) => { + const { defaultResolver } = options; + const resolvedPath = defaultResolver(request, options); + + // try resolve tshy module resolution polyfills + const cjsPath = resolvedPath.replace(/\.ts$/, '-cjs.cts'); + if (fs.existsSync(cjsPath)) return cjsPath; + + return resolvedPath; +}