const { resolve } = require('path')
// const tsjPreset = require('ts-jest/presets').defaults
const { defaults: tsjPreset } = require('ts-jest/presets');
function resolveTsConfig() {
return resolve(__dirname, './tsconfig.test.json')
}
const config = {
preset: 'ts-jest',
setupTestFrameworkScriptFile: require.resolve('./__jest/exoticJest.js'),
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
testMatch: [
'<rootDir>/__tests__/**/*.(j|t)s?(x)',
'<rootDir>/src/**/__tests__/**/*.(j|t)s?(x)',
'<rootDir>/src/**/?(*.)(spec|test).(j|t)s?(x)',
],
testPathIgnorePatterns: [
'<rootDir>/__tests__/deps/*.(j|t)s?(x)',
'<rootDir>/__tests__/fixtures/*.(j|t)s?(x)',
],
testEnvironment: 'node',
// transform: {
// // '^.+\\.tsx?$': require.resolve('./__jest/typescriptTransform.js'),
// '^(?!.*\\.(js|jsx|mjs|css|json)$)': require.resolve('./__jest/fileTransform.js'),
// ...tsjPreset.transform,
// },
moduleNameMapper: {
'^react-native$': 'react-native-web',
},
moduleFileExtensions: [
'web.ts',
'ts',
'web.tsx',
'tsx',
'web.js',
'js',
'web.jsx',
'jsx',
'mjs',
'json',
'node',
],
globals: {
'ts-jest': {
// @todo may want this to resolve to root/
tsConfigFile: resolveTsConfig(),
// tsConfig: require(resolveTsConfig()),
diagnostics: {
warnOnly: true,
},
},
},
}
process.env.FORCE_TRANSPILE_NODE_MODULES =
process.env.FORCE_TRANSPILE_NODE_MODULES === undefined
? undefined
: process.env.FORCE_TRANSPILE_NODE_MODULES
if (!process.env.FORCE_TRANSPILE_NODE_MODULES) {
config.transformIgnorePatterns = [
'[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|ts|tsx)$',
]
}
module.exports = config