module.exports = { preset: 'react-native', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]sx?$', transformIgnorePatterns: [ 'node_modules/(?!(react-native|@react-native|expo|@expo|expo-.*|@react-native-async-storage|zustand|react-native-.*|@react-navigation)/)', ], moduleNameMapper: { '^@/(.*)$': '/src/$1', '^@services/(.*)$': '/src/services/$1', '^@stores/(.*)$': '/src/stores/$1', '^@components/(.*)$': '/src/components/$1', '^@hooks/(.*)$': '/src/hooks/$1', '^@utils/(.*)$': '/src/utils/$1', '^@theme/(.*)$': '/src/theme/$1', '^@types/(.*)$': '/src/types/$1', }, setupFilesAfterEnv: ['/jest.setup.js'], testEnvironment: 'node', collectCoverageFrom: [ 'src/stores/**/*.{ts,tsx}', 'src/services/api/**/*.{ts,tsx}', '!src/**/*.d.ts', '!src/**/__tests__/**', '!src/**/__mocks__/**', ], coverageThreshold: { global: { branches: 70, functions: 70, lines: 70, statements: 70, }, }, coverageReporters: ['text', 'lcov', 'html'], reporters: ['default', 'jest-junit'], };