/* * Copyright: (c) 2024, Alex Kaul * GNU General Public License v3.0 or later (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) */ const baseConfig = { testMatch: [ '**/*.spec.(js|jsx|ts|tsx)' ], transform: { '^.+\\.(js|jsx|ts|tsx)$': [ '@swc/jest', { jsc: { transform: { react: { runtime: 'automatic', }, }, }, }, ], }, transformIgnorePatterns: [ 'node_modules/(?!uuid/)' ] } const makeModuleNameMapper = m => ({ ...((m !== 'common' && m !== 'test-utils') ? { '@/(.*)': `/src/${m}/$1` } : {}), '@common/(.*)': '/src/common/$1', ...((m !== 'test-utils') ? { '@tests/(.*)': `/tests/${m}/$1` } : {}), ...((m !== 'test-utils') ? { '@testscommon/(.*)': '/tests/common/$1' } : {}), '@utils/(.*)': '/tests/utils/$1', }) module.exports = { projects: [{ ...baseConfig, testEnvironment: 'node', displayName: { name: 'Main', color: 'blue' }, moduleNameMapper: { ...makeModuleNameMapper('main') }, roots: ['/tests/main/', '/src/main/'] }, { ...baseConfig, testEnvironment: 'jsdom', displayName: { name: 'Renderer', color: 'magenta' }, setupFilesAfterEnv: ['/tests/renderer/setupTests.ts'], moduleNameMapper: { '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/tests/__mocks__/fileMock.js', '\\.(css|less|scss)$': '/tests/__mocks__/identity-obj-proxy.js', ...makeModuleNameMapper('renderer') }, roots: ['/tests/renderer/', '/src/renderer/'] }, { ...baseConfig, testEnvironment: 'node', displayName: { name: 'Common', color: 'cyan' }, moduleNameMapper: { ...makeModuleNameMapper('common') }, roots: ['/tests/common/', '/src/common/'] }, { ...baseConfig, testEnvironment: 'node', displayName: { name: 'Test Utils', color: 'yellow' }, moduleNameMapper: { ...makeModuleNameMapper('test-utils') }, roots: ['/tests/utils/'] }], coverageProvider: 'v8', collectCoverageFrom: [ '**/*.{js,jsx,ts,tsx}', '!build/**', '!**/*.d.ts', '!**/index.ts', '!**/interfaces/**', '!**/node_modules/**', '!tests/**', 'tests/utils/**', '!tests/utils/**/*.spec.{ts,tsx}', ], };