-
Notifications
You must be signed in to change notification settings - Fork 11
/
jest.config.ts
94 lines (88 loc) · 2.84 KB
/
jest.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import type { Config } from "jest";
import nextJest from "next/jest";
const createJestConfig = nextJest({ dir: "./" });
const jestConfig: Config = {
preset: "ts-jest",
testEnvironment: "jsdom",
coverageThreshold: {
global: {
statements: 60,
branches: 49,
lines: 64,
functions: 54,
},
},
coverageReporters: ["json-summary", "text", "lcov"],
collectCoverageFrom: ["src/**/**/*.{js,jsx,ts,tsx}"],
reporters: [
"default",
[
"jest-sonar",
{
outputDirectory: "reports",
outputName: "test-report.xml",
relativeRootDir: "./",
reportedFilePath: "relative",
},
],
],
moduleNameMapper: {
// Handle CSS imports (with CSS modules)
// https://jestjs.io/docs/webpack#mocking-css-modules
"^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy",
// Handle CSS imports (without CSS modules)
"^.+\\.(css|sass|scss)$": "<rootDir>/__mocks__/styleMock.js",
// Map lodash-es to lodash
"^lodash-es(.*)": "lodash$1",
// Handle image imports
// https://jestjs.io/docs/webpack#handling-static-assets
"^.+\\.(jpg|jpeg|png|gif|webp|avif|svg)$": `<rootDir>/__mocks__/fileMock.js`,
"@styles(.*)": "<rootDir>/src/styles",
"@logger(.*)": "<rootDir>/src/logger",
"@constants(.*)": "<rootDir>/src/constants",
"@services(.*)": "<rootDir>/src/services",
"^@features(.*)": "<rootDir>/src/features/$1",
"^@store(.*)": "<rootDir>/src/store/$1",
"^@containers(.*)": "<rootDir>/src/containers/$1",
"^@hooks(.*)": "<rootDir>/src/hooks/$1",
"^@shared(.*)": "<rootDir>/src/features/sharedComponents/$1",
"^@themes(.*)": "<rootDir>/src/themes/$1",
"^@utils(.*)": "<rootDir>/src/utils/$1",
"^@slices(.*)": "<rootDir>/src/store/slices/$1",
"^@app(.*)": "<rootDir>/src/$1",
},
setupFilesAfterEnv: ["<rootDir>/jest.setup.js"],
testPathIgnorePatterns: [
"<rootDir>/node_modules/",
"<rootDir>/.next/",
"<rootDir>/coverage/",
"<rootDir>/babel.config.js",
"<rootDir>/lingui.config.js",
"<rootDir>/jest.config.ts",
"<rootDir>/jest.setup.js",
"<rootDir>/next-env.d.ts",
"<rootDir>/next.config.js",
],
transform: {
"node_modules/lodash-es/.+\\.(j|t)sx?$": "ts-jest",
// Use babel-jest to transpile tests with the next/babel preset
// https://jestjs.io/docs/configuration#transform-objectstring-pathtotransformer--pathtotransformer-object
"^.+\\.(js|jsx|ts|tsx)$": [
"babel-jest",
{ presets: ["next/babel", "@babel/preset-typescript"] },
],
},
transformIgnorePatterns: [
"/node_modules/",
"^.+\\.module\\.(css|sass|scss)$",
"/node_modules/(?!lodash-es/*)",
],
passWithNoTests: true,
globals: {
"ts-jest": {
tsconfig: "tsconfig.json",
},
},
snapshotSerializers: ["@emotion/jest/serializer"],
};
export default createJestConfig(jestConfig);