import type { Config } from "jest"; import nextJest from "next/jest.js"; const createJestConfig = nextJest({ // Provide the path to your Next.js app to load next.config.js and .env files in your test environment dir: "./", }); // Add any custom config to be passed to Jest const config: Config = { collectCoverage: false, // on node 14.x coverage provider v8 offers good speed and more or less good report coverageProvider: "v8", // collectCoverageFrom: [ // "**/*.{js,jsx,ts,tsx}", // "!**/*.d.ts", // "!**/node_modules/**", // "!<rootDir>/out/**", // "!<rootDir>/.next/**", // "!<rootDir>/*.config.js", // "!<rootDir>/coverage/**", // ], 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", // Handle image imports // https://jestjs.io/docs/webpack#handling-static-assets "^.+\\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$": `<rootDir>/__mocks__/fileMock.js`, // Handle module aliases "^@/components/(.*)$": "<rootDir>/components/$1", "^~/(.*)$": "<rootDir>/src/$1", // Handle @next/font "@next/font/(.*)": `<rootDir>/__mocks__/nextFontMock.js`, // Handle next/font "next/font/(.*)": `<rootDir>/__mocks__/nextFontMock.js`, // Disable server-only "server-only": `<rootDir>/__mocks__/empty.js`, }, // Add more setup options before each test is run // setupFilesAfterEnv: ['<rootDir>/jest.setup.js'], testPathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/.next/"], testEnvironment: "jsdom", transform: { // 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"] }], }, transformIgnorePatterns: [ "/node_modules/", "^.+\\.module\\.(css|sass|scss)$", ], }; // createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async export default createJestConfig(config);