const { pathsToModuleNameMapper } = require("ts-jest"); const { compilerOptions } = require("./tsconfig"); /** @type {import('jest').Config} */ module.exports = { reporters: ["default", "jest-junit"], collectCoverage: true, // Ensure we collect coverage from files without tests collectCoverageFrom: ["src/**/*.ts"], coverageReporters: ["html", "lcov"], coverageDirectory: "coverage", moduleNameMapper: pathsToModuleNameMapper(compilerOptions?.paths || {}, { prefix: "/", }), projects: [ "/apps/browser/jest.config.js", "/apps/cli/jest.config.js", "/apps/desktop/jest.config.js", "/apps/web/jest.config.js", "/bitwarden_license/bit-web/jest.config.js", "/bitwarden_license/bit-cli/jest.config.js", "/bitwarden_license/bit-common/jest.config.js", "/libs/admin-console/jest.config.js", "/libs/angular/jest.config.js", "/libs/auth/jest.config.js", "/libs/billing/jest.config.js", "/libs/common/jest.config.js", "/libs/components/jest.config.js", "/libs/tools/export/vault-export/vault-export-core/jest.config.js", "/libs/tools/generator/core/jest.config.js", "/libs/tools/generator/components/jest.config.js", "/libs/tools/generator/extensions/history/jest.config.js", "/libs/tools/generator/extensions/legacy/jest.config.js", "/libs/tools/generator/extensions/navigation/jest.config.js", "/libs/tools/send/send-ui/jest.config.js", "/libs/importer/jest.config.js", "/libs/platform/jest.config.js", "/libs/node/jest.config.js", "/libs/vault/jest.config.js", ], // Workaround for a memory leak that crashes tests in CI: // https://github.com/facebook/jest/issues/9430#issuecomment-1149882002 // Also anecdotally improves performance when run locally maxWorkers: 3, };