module.exports = { testEnvironment: 'jsdom', preset: 'ts-jest', setupFilesAfterEnv: ['./scripts/setupJestEnv.ts'], globals: { __DEV__: true, __TEST__: true, __VERSION__: require('./package.json').version, __BROWSER__: false, __GLOBAL__: false, __ESM_BUNDLER__: true, __ESM_BROWSER__: false, __NODE_JS__: true, __SSR__: true, __FEATURE_OPTIONS_API__: true, __FEATURE_SUSPENSE__: true, __FEATURE_PROD_DEVTOOLS__: false, __COMPAT__: true, 'ts-jest': { tsconfig: { target: 'esnext', sourceMap: true } } }, coverageDirectory: 'coverage', coverageReporters: ['html', 'lcov', 'text'], collectCoverageFrom: [ 'packages/*/src/**/*.ts', '!packages/runtime-test/src/utils/**', '!packages/template-explorer/**', '!packages/sfc-playground/**', '!packages/size-check/**', '!packages/runtime-core/src/profiling.ts', '!packages/runtime-core/src/customFormatter.ts', // DOM transitions are tested via e2e so no coverage is collected '!packages/runtime-dom/src/components/Transition*', // only called in browsers '!packages/vue/src/devCheck.ts', // only used as a build entry '!packages/vue/src/runtime.ts', // mostly just entries '!packages/vue-compat/**' ], watchPathIgnorePatterns: ['/node_modules/', '/dist/', '/.git/'], moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], moduleNameMapper: { '@vue/consolidate': '@vue/consolidate', '@vue/compat': '/packages/vue-compat/src', '^@vue/(.*?)$': '/packages/$1/src', 'vue/compiler-sfc': '/packages/compiler-sfc/src', 'vue/server-renderer': '/packages/server-renderer/src', vue: '/packages/vue/src' }, rootDir: __dirname, testMatch: ['/packages/**/__tests__/**/*spec.[jt]s?(x)'], testPathIgnorePatterns: process.env.SKIP_E2E ? // ignore example tests on netlify builds since they don't contribute // to coverage and can cause netlify builds to fail ['/node_modules/', '/examples/__tests__'] : ['/node_modules/'] }