const esModules = ['quasar', 'quasar/lang', 'lodash-es'].join('|'); module.exports = { globals: { __DEV__: true, // TODO: Remove if resolved natively // See https://github.com/vuejs/vue-jest/issues/175 'vue-jest': { pug: { doctype: 'html' }, }, }, // Jest assumes we are testing in node environment, specify jsdom environment instead testEnvironment: 'jsdom', // noStackTrace: true, // bail: true, // cache: false, // verbose: true, // watch: true, reporters: ['default', 'jest-junit'], collectCoverage: false, coverageDirectory: '<rootDir>/tests/jest/coverage', collectCoverageFrom: ['<rootDir>/src/**/*.vue', '<rootDir>/src/**/*.js', '<rootDir>/src/**/*.jsx'], // Needed in JS codebases too because of feature flags coveragePathIgnorePatterns: ['/node_modules/', '.d.ts$'], coverageThreshold: { global: { // branches: 50, // functions: 50, // lines: 50, // statements: 50 }, }, testMatch: ['<rootDir>/src/**/__tests__/*.(spec|test).+(ts|js)?(x)'], moduleFileExtensions: ['vue', 'js', 'jsx', 'json'], moduleNameMapper: { '^quasar$': 'quasar/dist/quasar.esm.prod.js', '^~/(.*)$': '<rootDir>/$1', '^src/(.*)$': '<rootDir>/src/$1', '^app/(.*)$': '<rootDir>/$1', '^components/(.*)$': '<rootDir>/src/components/$1', '^layouts/(.*)$': '<rootDir>/src/layouts/$1', '^pages/(.*)$': '<rootDir>/src/pages/$1', '^assets/(.*)$': '<rootDir>/src/assets/$1', '^boot/(.*)$': '<rootDir>/src/boot/$1', '.*css$': '@quasar/quasar-app-extension-testing-unit-jest/stub.css', }, transform: { '.*\\.vue$': 'vue-jest', '.*\\.js$': 'babel-jest', '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', // use these if NPM is being flaky, care as hosting could interfere with these // '.*\\.vue$': '@quasar/quasar-app-extension-testing-unit-jest/node_modules/vue-jest', // '.*\\.js$': '@quasar/quasar-app-extension-testing-unit-jest/node_modules/babel-jest' }, transformIgnorePatterns: [`node_modules/(?!(${esModules}))`], snapshotSerializers: ['jest-serializer-vue'], };