mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 10:17:54 +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.
60 lines
1.8 KiB
JSON
60 lines
1.8 KiB
JSON
{
|
|
"name": "mobile",
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"main": "index.ts",
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo start --android",
|
|
"ios": "expo start --ios",
|
|
"web": "expo start --web",
|
|
"test": "jest",
|
|
"test:watch": "jest --watch",
|
|
"test:coverage": "jest --coverage",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix"
|
|
},
|
|
"dependencies": {
|
|
"@polkadot/api": "^16.5.2",
|
|
"@polkadot/keyring": "^13.5.8",
|
|
"@polkadot/util": "^13.5.8",
|
|
"@polkadot/util-crypto": "^13.5.8",
|
|
"@react-native-async-storage/async-storage": "^2.2.0",
|
|
"@react-navigation/bottom-tabs": "^7.8.5",
|
|
"@react-navigation/native": "^7.1.20",
|
|
"@react-navigation/stack": "^7.6.4",
|
|
"expo": "~54.0.23",
|
|
"expo-linear-gradient": "^15.0.7",
|
|
"expo-local-authentication": "^17.0.7",
|
|
"expo-secure-store": "^15.0.7",
|
|
"expo-status-bar": "~3.0.8",
|
|
"i18next": "^25.6.2",
|
|
"react": "19.1.0",
|
|
"react-i18next": "^16.3.3",
|
|
"react-native": "0.81.5",
|
|
"react-native-safe-area-context": "^5.6.2",
|
|
"react-native-screens": "^4.18.0",
|
|
"react-native-url-polyfill": "^3.0.0",
|
|
"react-native-vector-icons": "^10.3.0"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/runtime": "^7.28.4",
|
|
"@testing-library/jest-native": "^5.4.3",
|
|
"@testing-library/react-native": "^13.3.3",
|
|
"@types/jest": "^29.5.12",
|
|
"@types/react": "~19.1.0",
|
|
"@typescript-eslint/eslint-plugin": "^8.47.0",
|
|
"@typescript-eslint/parser": "^8.47.0",
|
|
"eslint": "^9.39.1",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"eslint-plugin-react-native": "^5.0.0",
|
|
"globals": "^16.5.0",
|
|
"jest": "^29.7.0",
|
|
"jest-expo": "^54.0.13",
|
|
"typescript": "~5.9.2",
|
|
"typescript-eslint": "^8.47.0"
|
|
},
|
|
"private": true
|
|
}
|