@mrtrinhvn/ag-kit 1.0.11 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/bin/cli.js +62 -0
  4. package/package.json +7 -1
  5. package/template/.agent/rules/GEMINI.md +1 -1
  6. package/template/.agent/skills/regent-orchestrator/SKILL.md +31 -0
  7. package/template/.agent/skills/telegram-bridge/SKILL.md +30 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +0 -26
  9. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +0 -97
  10. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +0 -101
  11. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +0 -31
  12. package/.agent/.shared/ui-ux-pro-max/data/products.csv +0 -97
  13. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +0 -24
  14. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +0 -45
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
  20. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  21. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  22. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +0 -54
  23. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  24. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  25. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  26. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  27. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +0 -59
  28. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +0 -58
  29. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  30. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  31. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +0 -31
  32. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  33. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  34. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +0 -258
  35. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +0 -1067
  36. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +0 -106
  37. package/.agent/ARCHITECTURE.md +0 -288
  38. package/.agent/agents/backend-specialist.md +0 -263
  39. package/.agent/agents/code-archaeologist.md +0 -106
  40. package/.agent/agents/database-architect.md +0 -226
  41. package/.agent/agents/debugger.md +0 -225
  42. package/.agent/agents/devops-engineer.md +0 -242
  43. package/.agent/agents/documentation-writer.md +0 -104
  44. package/.agent/agents/explorer-agent.md +0 -73
  45. package/.agent/agents/frontend-specialist.md +0 -556
  46. package/.agent/agents/game-developer.md +0 -162
  47. package/.agent/agents/mobile-developer.md +0 -377
  48. package/.agent/agents/orchestrator.md +0 -416
  49. package/.agent/agents/penetration-tester.md +0 -188
  50. package/.agent/agents/performance-optimizer.md +0 -187
  51. package/.agent/agents/product-manager.md +0 -112
  52. package/.agent/agents/product-owner.md +0 -95
  53. package/.agent/agents/project-planner.md +0 -406
  54. package/.agent/agents/qa-automation-engineer.md +0 -103
  55. package/.agent/agents/quant-architect.md +0 -31
  56. package/.agent/agents/security-auditor.md +0 -170
  57. package/.agent/agents/seo-specialist.md +0 -111
  58. package/.agent/agents/test-engineer.md +0 -158
  59. package/.agent/mcp_config.json +0 -24
  60. package/.agent/rules/GEMINI.md +0 -280
  61. package/.agent/scripts/auto_preview.py +0 -148
  62. package/.agent/scripts/checklist.py +0 -217
  63. package/.agent/scripts/session_manager.py +0 -120
  64. package/.agent/scripts/verify_all.py +0 -327
  65. package/.agent/skills/api-patterns/SKILL.md +0 -81
  66. package/.agent/skills/api-patterns/api-style.md +0 -42
  67. package/.agent/skills/api-patterns/auth.md +0 -24
  68. package/.agent/skills/api-patterns/documentation.md +0 -26
  69. package/.agent/skills/api-patterns/graphql.md +0 -41
  70. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  71. package/.agent/skills/api-patterns/response.md +0 -37
  72. package/.agent/skills/api-patterns/rest.md +0 -40
  73. package/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  74. package/.agent/skills/api-patterns/security-testing.md +0 -122
  75. package/.agent/skills/api-patterns/trpc.md +0 -41
  76. package/.agent/skills/api-patterns/versioning.md +0 -22
  77. package/.agent/skills/app-builder/SKILL.md +0 -75
  78. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  79. package/.agent/skills/app-builder/feature-building.md +0 -53
  80. package/.agent/skills/app-builder/project-detection.md +0 -34
  81. package/.agent/skills/app-builder/scaffolding.md +0 -118
  82. package/.agent/skills/app-builder/tech-stack.md +0 -40
  83. package/.agent/skills/app-builder/templates/SKILL.md +0 -39
  84. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  85. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  86. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  87. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  88. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  89. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  90. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  91. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
  92. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
  93. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
  94. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
  95. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  96. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
  97. package/.agent/skills/architecture/SKILL.md +0 -55
  98. package/.agent/skills/architecture/context-discovery.md +0 -43
  99. package/.agent/skills/architecture/examples.md +0 -94
  100. package/.agent/skills/architecture/pattern-selection.md +0 -68
  101. package/.agent/skills/architecture/patterns-reference.md +0 -50
  102. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  103. package/.agent/skills/bash-linux/SKILL.md +0 -199
  104. package/.agent/skills/behavioral-modes/SKILL.md +0 -242
  105. package/.agent/skills/brainstorming/SKILL.md +0 -168
  106. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -350
  107. package/.agent/skills/business-ops/SKILL.md +0 -26
  108. package/.agent/skills/clean-code/SKILL.md +0 -202
  109. package/.agent/skills/cli-generator/SKILL.md +0 -48
  110. package/.agent/skills/code-review-checklist/SKILL.md +0 -109
  111. package/.agent/skills/cognitive-session/SKILL.md +0 -28
  112. package/.agent/skills/data-science/SKILL.md +0 -28
  113. package/.agent/skills/database-design/SKILL.md +0 -52
  114. package/.agent/skills/database-design/database-selection.md +0 -43
  115. package/.agent/skills/database-design/indexing.md +0 -39
  116. package/.agent/skills/database-design/migrations.md +0 -48
  117. package/.agent/skills/database-design/optimization.md +0 -36
  118. package/.agent/skills/database-design/orm-selection.md +0 -30
  119. package/.agent/skills/database-design/schema-design.md +0 -56
  120. package/.agent/skills/database-design/scripts/schema_validator.py +0 -172
  121. package/.agent/skills/deployment-procedures/SKILL.md +0 -241
  122. package/.agent/skills/doc.md +0 -177
  123. package/.agent/skills/documentation-templates/SKILL.md +0 -194
  124. package/.agent/skills/frontend-design/SKILL.md +0 -418
  125. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  126. package/.agent/skills/frontend-design/color-system.md +0 -311
  127. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  128. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  129. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +0 -183
  130. package/.agent/skills/frontend-design/scripts/ux_audit.py +0 -722
  131. package/.agent/skills/frontend-design/typography-system.md +0 -345
  132. package/.agent/skills/frontend-design/ux-psychology.md +0 -541
  133. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  134. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  135. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  136. package/.agent/skills/game-development/SKILL.md +0 -167
  137. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  138. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  139. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  140. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  141. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  142. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  143. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  144. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
  145. package/.agent/skills/geo-fundamentals/SKILL.md +0 -156
  146. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +0 -289
  147. package/.agent/skills/i18n-localization/SKILL.md +0 -154
  148. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  149. package/.agent/skills/intelligent-routing/SKILL.md +0 -335
  150. package/.agent/skills/knowledge-management/SKILL.md +0 -66
  151. package/.agent/skills/lint-and-validate/SKILL.md +0 -45
  152. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
  153. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  154. package/.agent/skills/llm-routing-quirks/SKILL.md +0 -41
  155. package/.agent/skills/mcp-builder/SKILL.md +0 -176
  156. package/.agent/skills/memory-architecture/SKILL.md +0 -107
  157. package/.agent/skills/mini-antigravity-injection/SKILL.md +0 -66
  158. package/.agent/skills/mobile-design/SKILL.md +0 -394
  159. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  160. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  161. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  162. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  163. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  164. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  165. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  166. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  167. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  168. package/.agent/skills/mobile-design/platform-android.md +0 -666
  169. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  170. package/.agent/skills/mobile-design/scripts/mobile_audit.py +0 -670
  171. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  172. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  173. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  174. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  175. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  176. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  177. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  178. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  179. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  180. package/.agent/skills/nextjs-react-expert/9-cache-components.md +0 -103
  181. package/.agent/skills/nextjs-react-expert/SKILL.md +0 -267
  182. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
  183. package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
  184. package/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
  185. package/.agent/skills/parallel-agents/SKILL.md +0 -175
  186. package/.agent/skills/performance-profiling/SKILL.md +0 -143
  187. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
  188. package/.agent/skills/plan-writing/SKILL.md +0 -153
  189. package/.agent/skills/powershell-windows/SKILL.md +0 -167
  190. package/.agent/skills/product-management/SKILL.md +0 -30
  191. package/.agent/skills/python-patterns/SKILL.md +0 -441
  192. package/.agent/skills/red-team-tactics/SKILL.md +0 -199
  193. package/.agent/skills/rust-pro/SKILL.md +0 -176
  194. package/.agent/skills/seo-fundamentals/SKILL.md +0 -129
  195. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
  196. package/.agent/skills/server-management/SKILL.md +0 -161
  197. package/.agent/skills/systematic-debugging/SKILL.md +0 -120
  198. package/.agent/skills/tailwind-patterns/SKILL.md +0 -269
  199. package/.agent/skills/tdd-workflow/SKILL.md +0 -148
  200. package/.agent/skills/telegram-agentic-gateway/SKILL.md +0 -80
  201. package/.agent/skills/testing-patterns/SKILL.md +0 -178
  202. package/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
  203. package/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  204. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  205. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  206. package/.agent/skills/web-design-guidelines/SKILL.md +0 -57
  207. package/.agent/skills/webapp-testing/SKILL.md +0 -187
  208. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
  209. package/.agent/workflows/brainstorm.md +0 -113
  210. package/.agent/workflows/create.md +0 -59
  211. package/.agent/workflows/debug.md +0 -103
  212. package/.agent/workflows/deploy.md +0 -176
  213. package/.agent/workflows/enhance.md +0 -63
  214. package/.agent/workflows/orchestrate.md +0 -237
  215. package/.agent/workflows/plan.md +0 -89
  216. package/.agent/workflows/preview.md +0 -81
  217. package/.agent/workflows/status.md +0 -86
  218. package/.agent/workflows/test.md +0 -144
  219. package/.agent/workflows/ui-ux-pro-max.md +0 -296
@@ -1,356 +0,0 @@
1
- # Mobile Testing Patterns
2
-
3
- > **Mobile testing is NOT web testing. Different constraints, different strategies.**
4
- > This file teaches WHEN to use each testing approach and WHY.
5
- > **Code examples are minimal - focus on decision-making.**
6
-
7
- ---
8
-
9
- ## 🧠 MOBILE TESTING MINDSET
10
-
11
- ```
12
- Mobile testing differs from web:
13
- ├── Real devices matter (emulators hide bugs)
14
- ├── Platform differences (iOS vs Android behavior)
15
- ├── Network conditions vary wildly
16
- ├── Battery/performance under test
17
- ├── App lifecycle (background, killed, restored)
18
- ├── Permissions and system dialogs
19
- └── Touch interactions vs clicks
20
- ```
21
-
22
- ---
23
-
24
- ## 🚫 AI MOBILE TESTING ANTI-PATTERNS
25
-
26
- | ❌ AI Default | Why It's Wrong | ✅ Mobile-Correct |
27
- |---------------|----------------|-------------------|
28
- | Jest-only testing | Misses native layer | Jest + E2E on device |
29
- | Enzyme patterns | Deprecated, web-focused | React Native Testing Library |
30
- | Browser-based E2E (Cypress) | Can't test native features | Detox / Maestro |
31
- | Mock everything | Misses integration bugs | Real device testing |
32
- | Ignore platform tests | iOS/Android differ | Platform-specific cases |
33
- | Skip performance tests | Mobile perf is critical | Profile on low-end device |
34
- | Test only happy path | Mobile has more edge cases | Offline, permissions, interrupts |
35
- | 100% unit test coverage | False security | Pyramid balance |
36
- | Copy web testing patterns | Different environment | Mobile-specific tools |
37
-
38
- ---
39
-
40
- ## 1. Testing Tool Selection
41
-
42
- ### Decision Tree
43
-
44
- ```
45
- WHAT ARE YOU TESTING?
46
-
47
- ├── Pure functions, utilities, helpers
48
- │ └── Jest (unit tests)
49
- │ └── No special mobile setup needed
50
-
51
- ├── Individual components (isolated)
52
- │ ├── React Native → React Native Testing Library
53
- │ └── Flutter → flutter_test (widget tests)
54
-
55
- ├── Components with hooks, context, navigation
56
- │ ├── React Native → RNTL + mocked providers
57
- │ └── Flutter → integration_test package
58
-
59
- ├── Full user flows (login, checkout, etc.)
60
- │ ├── Detox (React Native, fast, reliable)
61
- │ ├── Maestro (Cross-platform, YAML-based)
62
- │ └── Appium (Legacy, slow, last resort)
63
-
64
- └── Performance, memory, battery
65
- ├── Flashlight (RN performance)
66
- ├── Flutter DevTools
67
- └── Real device profiling (Xcode/Android Studio)
68
- ```
69
-
70
- ### Tool Comparison
71
-
72
- | Tool | Platform | Speed | Reliability | Use When |
73
- |------|----------|-------|-------------|----------|
74
- | **Jest** | RN | ⚡⚡⚡ | ⚡⚡⚡ | Unit tests, logic |
75
- | **RNTL** | RN | ⚡⚡⚡ | ⚡⚡ | Component tests |
76
- | **flutter_test** | Flutter | ⚡⚡⚡ | ⚡⚡⚡ | Widget tests |
77
- | **Detox** | RN | ⚡⚡ | ⚡⚡⚡ | E2E, critical flows |
78
- | **Maestro** | Both | ⚡⚡ | ⚡⚡ | E2E, cross-platform |
79
- | **Appium** | Both | ⚡ | ⚡ | Legacy, last resort |
80
-
81
- ---
82
-
83
- ## 2. Testing Pyramid for Mobile
84
-
85
- ```
86
- ┌───────────────┐
87
- │ E2E Tests │ 10%
88
- │ (Real device) │ Slow, expensive, essential
89
- ├───────────────┤
90
- │ Integration │ 20%
91
- │ Tests │ Component + context
92
- ├───────────────┤
93
- │ Component │ 30%
94
- │ Tests │ Isolated UI
95
- ├───────────────┤
96
- │ Unit Tests │ 40%
97
- │ (Jest) │ Pure logic
98
- └───────────────┘
99
- ```
100
-
101
- ### Why This Distribution?
102
-
103
- | Level | Why This % |
104
- |-------|------------|
105
- | **E2E 10%** | Slow, flaky, but catches integration bugs |
106
- | **Integration 20%** | Tests real user flows without full app |
107
- | **Component 30%** | Fast feedback on UI changes |
108
- | **Unit 40%** | Fastest, most stable, logic coverage |
109
-
110
- > 🔴 **If you have 90% unit tests and 0% E2E, you're testing the wrong things.**
111
-
112
- ---
113
-
114
- ## 3. What to Test at Each Level
115
-
116
- ### Unit Tests (Jest)
117
-
118
- ```
119
- ✅ TEST:
120
- ├── Utility functions (formatDate, calculatePrice)
121
- ├── State reducers (Redux, Zustand stores)
122
- ├── API response transformers
123
- ├── Validation logic
124
- └── Business rules
125
-
126
- ❌ DON'T TEST:
127
- ├── Component rendering (use component tests)
128
- ├── Navigation (use integration tests)
129
- ├── Native modules (mock them)
130
- └── Third-party libraries
131
- ```
132
-
133
- ### Component Tests (RNTL / flutter_test)
134
-
135
- ```
136
- ✅ TEST:
137
- ├── Component renders correctly
138
- ├── User interactions (tap, type, swipe)
139
- ├── Loading/error/empty states
140
- ├── Accessibility labels exist
141
- └── Props change behavior
142
-
143
- ❌ DON'T TEST:
144
- ├── Internal implementation details
145
- ├── Snapshot everything (only key components)
146
- ├── Styling specifics (brittle)
147
- └── Third-party component internals
148
- ```
149
-
150
- ### Integration Tests
151
-
152
- ```
153
- ✅ TEST:
154
- ├── Form submission flows
155
- ├── Navigation between screens
156
- ├── State persistence across screens
157
- ├── API integration (with mocked server)
158
- └── Context/provider interactions
159
-
160
- ❌ DON'T TEST:
161
- ├── Every possible path (use unit tests)
162
- ├── Third-party services (mock them)
163
- └── Backend logic (backend tests)
164
- ```
165
-
166
- ### E2E Tests
167
-
168
- ```
169
- ✅ TEST:
170
- ├── Critical user journeys (login, purchase, signup)
171
- ├── Offline → online transitions
172
- ├── Deep link handling
173
- ├── Push notification navigation
174
- ├── Permission flows
175
- └── Payment flows
176
-
177
- ❌ DON'T TEST:
178
- ├── Every edge case (too slow)
179
- ├── Visual regression (use snapshot tests)
180
- ├── Non-critical features
181
- └── Backend-only logic
182
- ```
183
-
184
- ---
185
-
186
- ## 4. Platform-Specific Testing
187
-
188
- ### What Differs Between iOS and Android?
189
-
190
- | Area | iOS Behavior | Android Behavior | Test Both? |
191
- |------|--------------|------------------|------------|
192
- | **Back navigation** | Edge swipe | System back button | ✅ YES |
193
- | **Permissions** | Ask once, settings | Ask each time, rationale | ✅ YES |
194
- | **Keyboard** | Different appearance | Different behavior | ✅ YES |
195
- | **Date picker** | Wheel/modal | Material dialog | ⚠️ If custom UI |
196
- | **Push format** | APNs payload | FCM payload | ✅ YES |
197
- | **Deep links** | Universal Links | App Links | ✅ YES |
198
- | **Gestures** | Some unique | Material gestures | ⚠️ If custom |
199
-
200
- ### Platform Testing Strategy
201
-
202
- ```
203
- FOR EACH PLATFORM:
204
- ├── Run unit tests (same on both)
205
- ├── Run component tests (same on both)
206
- ├── Run E2E on REAL DEVICE
207
- │ ├── iOS: iPhone (not just simulator)
208
- │ └── Android: Mid-range device (not flagship)
209
- └── Test platform-specific features separately
210
- ```
211
-
212
- ---
213
-
214
- ## 5. Offline & Network Testing
215
-
216
- ### Offline Scenarios to Test
217
-
218
- | Scenario | What to Verify |
219
- |----------|----------------|
220
- | Start app offline | Shows cached data or offline message |
221
- | Go offline mid-action | Action queued, not lost |
222
- | Come back online | Queue synced, no duplicates |
223
- | Slow network (2G) | Loading states, timeouts work |
224
- | Flaky network | Retry logic, error recovery |
225
-
226
- ### How to Test Network Conditions
227
-
228
- ```
229
- APPROACH:
230
- ├── Unit tests: Mock NetInfo, test logic
231
- ├── Integration: Mock API responses, test UI
232
- ├── E2E (Detox): Use device.setURLBlacklist()
233
- ├── E2E (Maestro): Use network conditions
234
- └── Manual: Use Charles Proxy / Network Link Conditioner
235
- ```
236
-
237
- ---
238
-
239
- ## 6. Performance Testing
240
-
241
- ### What to Measure
242
-
243
- | Metric | Target | How to Measure |
244
- |--------|--------|----------------|
245
- | **App startup** | < 2 seconds | Profiler, Flashlight |
246
- | **Screen transition** | < 300ms | React DevTools |
247
- | **List scroll** | 60 FPS | Profiler, feel |
248
- | **Memory** | Stable, no leaks | Instruments / Android Profiler |
249
- | **Bundle size** | Minimize | Metro bundler analysis |
250
-
251
- ### When to Performance Test
252
-
253
- ```
254
- PERFORMANCE TEST:
255
- ├── Before release (required)
256
- ├── After adding heavy features
257
- ├── After upgrading dependencies
258
- ├── When users report slowness
259
- └── On CI (optional, automated benchmarks)
260
-
261
- WHERE TO TEST:
262
- ├── Real device (REQUIRED)
263
- ├── Low-end device (Galaxy A series, old iPhone)
264
- ├── NOT on emulator (lies about performance)
265
- └── With production-like data (not 3 items)
266
- ```
267
-
268
- ---
269
-
270
- ## 7. Accessibility Testing
271
-
272
- ### What to Verify
273
-
274
- | Element | Check |
275
- |---------|-------|
276
- | Interactive elements | Have accessibilityLabel |
277
- | Images | Have alt text or decorative flag |
278
- | Forms | Labels linked to inputs |
279
- | Buttons | Role = button |
280
- | Touch targets | ≥ 44x44 (iOS) / 48x48 (Android) |
281
- | Color contrast | WCAG AA minimum |
282
-
283
- ### How to Test
284
-
285
- ```
286
- AUTOMATED:
287
- ├── React Native: jest-axe
288
- ├── Flutter: Accessibility checker in tests
289
- └── Lint rules for missing labels
290
-
291
- MANUAL:
292
- ├── Enable VoiceOver (iOS) / TalkBack (Android)
293
- ├── Navigate entire app with screen reader
294
- ├── Test with increased text size
295
- └── Test with reduced motion
296
- ```
297
-
298
- ---
299
-
300
- ## 8. CI/CD Integration
301
-
302
- ### What to Run Where
303
-
304
- | Stage | Tests | Devices |
305
- |-------|-------|---------|
306
- | **PR** | Unit + Component | None (fast) |
307
- | **Merge to main** | + Integration | Simulator/Emulator |
308
- | **Pre-release** | + E2E | Real devices (farm) |
309
- | **Nightly** | Full suite | Device farm |
310
-
311
- ### Device Farm Options
312
-
313
- | Service | Pros | Cons |
314
- |---------|------|------|
315
- | **Firebase Test Lab** | Free tier, Google devices | Android focus |
316
- | **AWS Device Farm** | Wide selection | Expensive |
317
- | **BrowserStack** | Good UX | Expensive |
318
- | **Local devices** | Free, reliable | Limited variety |
319
-
320
- ---
321
-
322
- ## 📝 MOBILE TESTING CHECKLIST
323
-
324
- ### Before PR
325
- - [ ] Unit tests for new logic
326
- - [ ] Component tests for new UI
327
- - [ ] No console.logs in tests
328
- - [ ] Tests pass on CI
329
-
330
- ### Before Release
331
- - [ ] E2E on real iOS device
332
- - [ ] E2E on real Android device
333
- - [ ] Tested on low-end device
334
- - [ ] Offline scenarios verified
335
- - [ ] Performance acceptable
336
- - [ ] Accessibility verified
337
-
338
- ### What to Skip (Consciously)
339
- - [ ] 100% coverage (aim for meaningful coverage)
340
- - [ ] Every visual permutation (use snapshots sparingly)
341
- - [ ] Third-party library internals
342
- - [ ] Backend logic (separate tests)
343
-
344
- ---
345
-
346
- ## 🎯 Testing Questions to Ask
347
-
348
- Before writing tests, answer:
349
-
350
- 1. **What could break?** → Test that
351
- 2. **What's critical for users?** → E2E test that
352
- 3. **What's complex logic?** → Unit test that
353
- 4. **What's platform-specific?** → Test on both platforms
354
- 5. **What happens offline?** → Test that scenario
355
-
356
- > **Remember:** Good mobile testing is about testing the RIGHT things, not EVERYTHING. A flaky E2E test is worse than no test. A failing unit test that catches a bug is worth 100 passing trivial tests.