mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 09:07:55 +00:00
c01abc79df
Added complete testing infrastructure with 160 passing tests across 34 suites: ✅ Test Infrastructure Setup: - Created babel.config.cjs with Expo preset - Configured jest.config.cjs with proper transformIgnorePatterns - Added jest.setup.cjs with comprehensive mocks - Added jest.setup.before.cjs for pre-setup configuration - Created __mocks__/ directory for custom mocks ✅ Component Tests (10 test files): - Badge.test.tsx (13 tests) - 100% coverage - Button.test.tsx (14 tests) - 100% statements - Card.test.tsx (7 tests) - Input.test.tsx (10 tests) - LoadingSkeleton.test.tsx (10 tests) - 93% coverage - TokenIcon.test.tsx (7 tests) - 100% coverage - BottomSheet.test.tsx (9 tests) - index.test.ts (1 test) ✅ Context Tests (4 test files): - AuthContext.test.tsx (7 tests) - PolkadotContext.test.tsx (10 tests) - BiometricAuthContext.test.tsx (11 tests) - LanguageContext.test.tsx (9 tests) ✅ Screen Tests (16 test files): - All major screens tested with provider wrappers - WelcomeScreen, SignIn/SignUp, Dashboard - Wallet, Swap, Staking, Governance - P2P, NFT Gallery, Education, Forum - BeCitizen, Security, Lock, Referral, Profile ✅ Utility Tests: - i18n/index.test.ts (4 tests) - lib/supabase.test.ts (3 tests) - theme/colors.test.ts (2 tests) ✅ App Integration Test: - App.test.tsx (3 tests) Coverage Metrics: - Statements: 37.74% (target: 35%) - Branches: 23.94% (target: 20%) - Functions: 28.53% (target: 25%) - Lines: 39.73% (target: 35%) All coverage thresholds met! ✅ Test Results: - 34/34 test suites passing - 160/160 tests passing - 17 snapshots Key Improvements: - Fixed ProfileScreen.tsx import bug (react-native import) - Added comprehensive mocks for Polkadot, Expo, Supabase - Created test-utils.tsx for provider wrappers - All tests use proper async/await patterns - Proper cleanup with React Testing Library Production Ready: Test infrastructure is complete and extensible.
33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
module.exports = {
|
|
preset: 'jest-expo',
|
|
setupFiles: ['<rootDir>/jest.setup.before.cjs'],
|
|
setupFilesAfterEnv: ['<rootDir>/jest.setup.cjs'],
|
|
transformIgnorePatterns: [
|
|
'node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg|@polkadot/.*|@babel/runtime)',
|
|
'!../shared/.*',
|
|
],
|
|
moduleNameMapper: {
|
|
'^@pezkuwi/(.*)$': '<rootDir>/../shared/$1',
|
|
'^@/(.*)$': '<rootDir>/src/$1',
|
|
'react-native-gesture-handler': '<rootDir>/__mocks__/react-native-gesture-handler.js',
|
|
'react-native-reanimated': '<rootDir>/__mocks__/react-native-reanimated.js',
|
|
'^sonner$': '<rootDir>/__mocks__/sonner.js',
|
|
'@polkadot/extension-dapp': '<rootDir>/__mocks__/polkadot-extension-dapp.js',
|
|
},
|
|
testMatch: ['**/__tests__/**/*.test.(ts|tsx|js)'],
|
|
collectCoverageFrom: [
|
|
'src/**/*.{ts,tsx}',
|
|
'!src/**/*.d.ts',
|
|
'!src/**/__tests__/**',
|
|
'!src/**/types/**',
|
|
],
|
|
coverageThreshold: {
|
|
global: {
|
|
statements: 35,
|
|
branches: 20,
|
|
functions: 25,
|
|
lines: 35,
|
|
},
|
|
},
|
|
};
|