import { existsSync } from 'fs'; import { join } from 'path'; export default (cwd, args) => { const testMatchTypes = ['spec', 'test']; if (args.e2e) { testMatchTypes.push('e2e'); } const hasSrc = existsSync(join(cwd, 'src')); return { collectCoverageFrom: [ 'index.{js,jsx,vue}', hasSrc && 'src/**/*.{js,jsx,vue}', '!**/.fes/**', '!**/typings/**', '!**/types/**', '!**/fixtures/**', '!**/examples/**', '!**/*.d.ts', ].filter(Boolean), moduleFileExtensions: [ 'js', 'jsx', 'json', // tell Jest to handle *.vue files 'vue', ], transform: { // process *.vue files with vue-jest '^.+\\.vue$': require.resolve('vue3-jest'), '.+\\.(css|styl|less|sass|scss|jpg|jpeg|png|svg|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': require.resolve('jest-transform-stub'), '^.+\\.jsx?$': require.resolve('../helpers/transformers/javascript'), }, transformIgnorePatterns: ['/node_modules/'], // support the same @ -> src alias mapping in source code moduleNameMapper: { '^@/(.*)$': '/src/$1', }, testMatch: [`**/tests/**/*.(${testMatchTypes.join('|')}).[jt]s?(x)`, '**/__tests__/**/*.[jt]s?(x)'], // https://github.com/facebook/jest/issues/6766 testURL: 'http://localhost/', watchPlugins: [require.resolve('jest-watch-typeahead/filename'), require.resolve('jest-watch-typeahead/testname')], verbose: true, }; };