tribunal-kit 3.0.0 → 4.0.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 (233) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +187 -220
  4. package/.agent/agents/ai-code-reviewer.md +199 -233
  5. package/.agent/agents/backend-specialist.md +215 -238
  6. package/.agent/agents/code-archaeologist.md +161 -181
  7. package/.agent/agents/database-architect.md +184 -207
  8. package/.agent/agents/debugger.md +191 -218
  9. package/.agent/agents/dependency-reviewer.md +103 -136
  10. package/.agent/agents/devops-engineer.md +218 -238
  11. package/.agent/agents/documentation-writer.md +201 -221
  12. package/.agent/agents/explorer-agent.md +160 -180
  13. package/.agent/agents/frontend-reviewer.md +160 -194
  14. package/.agent/agents/frontend-specialist.md +248 -237
  15. package/.agent/agents/game-developer.md +48 -52
  16. package/.agent/agents/logic-reviewer.md +116 -149
  17. package/.agent/agents/mobile-developer.md +200 -223
  18. package/.agent/agents/mobile-reviewer.md +162 -195
  19. package/.agent/agents/orchestrator.md +181 -211
  20. package/.agent/agents/penetration-tester.md +157 -174
  21. package/.agent/agents/performance-optimizer.md +183 -203
  22. package/.agent/agents/performance-reviewer.md +178 -211
  23. package/.agent/agents/precedence-reviewer.md +213 -0
  24. package/.agent/agents/product-manager.md +142 -162
  25. package/.agent/agents/product-owner.md +6 -25
  26. package/.agent/agents/project-planner.md +142 -162
  27. package/.agent/agents/qa-automation-engineer.md +225 -242
  28. package/.agent/agents/security-auditor.md +174 -194
  29. package/.agent/agents/seo-specialist.md +193 -213
  30. package/.agent/agents/sql-reviewer.md +161 -194
  31. package/.agent/agents/supervisor-agent.md +184 -203
  32. package/.agent/agents/swarm-worker-contracts.md +17 -17
  33. package/.agent/agents/swarm-worker-registry.md +46 -46
  34. package/.agent/agents/test-coverage-reviewer.md +160 -193
  35. package/.agent/agents/test-engineer.md +0 -21
  36. package/.agent/agents/type-safety-reviewer.md +175 -208
  37. package/.agent/patterns/generator.md +9 -9
  38. package/.agent/patterns/inversion.md +12 -12
  39. package/.agent/patterns/pipeline.md +9 -9
  40. package/.agent/patterns/reviewer.md +13 -13
  41. package/.agent/patterns/tool-wrapper.md +9 -9
  42. package/.agent/rules/GEMINI.md +63 -63
  43. package/.agent/scripts/append_flow.js +72 -0
  44. package/.agent/scripts/case_law_manager.py +525 -0
  45. package/.agent/scripts/compress_skills.py +167 -0
  46. package/.agent/scripts/consolidate_skills.py +173 -0
  47. package/.agent/scripts/deep_compress.py +202 -0
  48. package/.agent/scripts/minify_context.py +80 -0
  49. package/.agent/scripts/security_scan.py +1 -1
  50. package/.agent/scripts/skill_evolution.py +563 -0
  51. package/.agent/scripts/strip_tribunal.py +41 -0
  52. package/.agent/skills/agent-organizer/SKILL.md +100 -126
  53. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  54. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +134 -160
  55. package/.agent/skills/api-patterns/SKILL.md +123 -215
  56. package/.agent/skills/api-security-auditor/SKILL.md +143 -177
  57. package/.agent/skills/app-builder/SKILL.md +334 -50
  58. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  59. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  60. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  61. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  62. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  63. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  64. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  65. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  66. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  67. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  68. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  69. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  70. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  71. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  72. package/.agent/skills/appflow-wireframe/SKILL.md +95 -121
  73. package/.agent/skills/architecture/SKILL.md +169 -331
  74. package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
  75. package/.agent/skills/bash-linux/SKILL.md +129 -154
  76. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  77. package/.agent/skills/brainstorming/SKILL.md +436 -104
  78. package/.agent/skills/building-native-ui/SKILL.md +152 -174
  79. package/.agent/skills/clean-code/SKILL.md +331 -360
  80. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  81. package/.agent/skills/config-validator/SKILL.md +115 -141
  82. package/.agent/skills/csharp-developer/SKILL.md +468 -528
  83. package/.agent/skills/database-design/SKILL.md +104 -369
  84. package/.agent/skills/deployment-procedures/SKILL.md +119 -145
  85. package/.agent/skills/devops-engineer/SKILL.md +295 -332
  86. package/.agent/skills/devops-incident-responder/SKILL.md +87 -113
  87. package/.agent/skills/doc.md +5 -5
  88. package/.agent/skills/documentation-templates/SKILL.md +27 -63
  89. package/.agent/skills/edge-computing/SKILL.md +131 -157
  90. package/.agent/skills/extract-design-system/SKILL.md +108 -134
  91. package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
  92. package/.agent/skills/frontend-design/SKILL.md +151 -499
  93. package/.agent/skills/game-design-expert/SKILL.md +79 -105
  94. package/.agent/skills/game-engineering-expert/SKILL.md +96 -122
  95. package/.agent/skills/geo-fundamentals/SKILL.md +97 -124
  96. package/.agent/skills/github-operations/SKILL.md +279 -314
  97. package/.agent/skills/gsap-expert/SKILL.md +119 -826
  98. package/.agent/skills/i18n-localization/SKILL.md +113 -138
  99. package/.agent/skills/intelligent-routing/SKILL.md +167 -127
  100. package/.agent/skills/lint-and-validate/SKILL.md +16 -52
  101. package/.agent/skills/llm-engineering/SKILL.md +344 -357
  102. package/.agent/skills/local-first/SKILL.md +128 -154
  103. package/.agent/skills/mcp-builder/SKILL.md +92 -118
  104. package/.agent/skills/mobile-design/SKILL.md +213 -219
  105. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  106. package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
  107. package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
  108. package/.agent/skills/observability/SKILL.md +293 -330
  109. package/.agent/skills/parallel-agents/SKILL.md +96 -122
  110. package/.agent/skills/performance-profiling/SKILL.md +217 -254
  111. package/.agent/skills/plan-writing/SKILL.md +92 -118
  112. package/.agent/skills/platform-engineer/SKILL.md +97 -123
  113. package/.agent/skills/playwright-best-practices/SKILL.md +137 -162
  114. package/.agent/skills/powershell-windows/SKILL.md +112 -146
  115. package/.agent/skills/project-idioms/SKILL.md +87 -0
  116. package/.agent/skills/python-patterns/SKILL.md +15 -35
  117. package/.agent/skills/python-pro/SKILL.md +148 -754
  118. package/.agent/skills/react-specialist/SKILL.md +123 -827
  119. package/.agent/skills/readme-builder/SKILL.md +23 -85
  120. package/.agent/skills/realtime-patterns/SKILL.md +269 -304
  121. package/.agent/skills/red-team-tactics/SKILL.md +18 -51
  122. package/.agent/skills/rust-pro/SKILL.md +623 -701
  123. package/.agent/skills/seo-fundamentals/SKILL.md +129 -154
  124. package/.agent/skills/server-management/SKILL.md +164 -190
  125. package/.agent/skills/shadcn-ui-expert/SKILL.md +181 -206
  126. package/.agent/skills/skill-creator/SKILL.md +24 -56
  127. package/.agent/skills/sql-pro/SKILL.md +579 -633
  128. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +35 -66
  129. package/.agent/skills/swiftui-expert/SKILL.md +151 -176
  130. package/.agent/skills/systematic-debugging/SKILL.md +92 -118
  131. package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
  132. package/.agent/skills/tdd-workflow/SKILL.md +111 -137
  133. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  134. package/.agent/skills/testing-patterns/SKILL.md +512 -573
  135. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  136. package/.agent/skills/ui-ux-pro-max/SKILL.md +8 -41
  137. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  138. package/.agent/skills/vue-expert/SKILL.md +127 -866
  139. package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
  140. package/.agent/skills/web-accessibility-auditor/SKILL.md +168 -193
  141. package/.agent/skills/web-design-guidelines/SKILL.md +25 -61
  142. package/.agent/skills/webapp-testing/SKILL.md +119 -145
  143. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  144. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  145. package/.agent/workflows/api-tester.md +151 -151
  146. package/.agent/workflows/audit.md +127 -138
  147. package/.agent/workflows/brainstorm.md +110 -110
  148. package/.agent/workflows/changelog.md +112 -112
  149. package/.agent/workflows/create.md +124 -124
  150. package/.agent/workflows/debug.md +165 -189
  151. package/.agent/workflows/deploy.md +180 -189
  152. package/.agent/workflows/enhance.md +128 -151
  153. package/.agent/workflows/fix.md +114 -135
  154. package/.agent/workflows/generate.md +13 -4
  155. package/.agent/workflows/migrate.md +160 -160
  156. package/.agent/workflows/orchestrate.md +168 -168
  157. package/.agent/workflows/performance-benchmarker.md +114 -123
  158. package/.agent/workflows/plan.md +173 -173
  159. package/.agent/workflows/preview.md +80 -80
  160. package/.agent/workflows/refactor.md +161 -183
  161. package/.agent/workflows/review-ai.md +101 -129
  162. package/.agent/workflows/review.md +116 -116
  163. package/.agent/workflows/session.md +94 -94
  164. package/.agent/workflows/status.md +79 -79
  165. package/.agent/workflows/strengthen-skills.md +138 -139
  166. package/.agent/workflows/swarm.md +179 -179
  167. package/.agent/workflows/test.md +189 -211
  168. package/.agent/workflows/tribunal-backend.md +94 -113
  169. package/.agent/workflows/tribunal-database.md +95 -115
  170. package/.agent/workflows/tribunal-frontend.md +96 -118
  171. package/.agent/workflows/tribunal-full.md +93 -133
  172. package/.agent/workflows/tribunal-mobile.md +95 -119
  173. package/.agent/workflows/tribunal-performance.md +110 -133
  174. package/.agent/workflows/ui-ux-pro-max.md +122 -143
  175. package/README.md +30 -1
  176. package/bin/tribunal-kit.js +175 -12
  177. package/package.json +25 -4
  178. package/.agent/skills/api-patterns/api-style.md +0 -42
  179. package/.agent/skills/api-patterns/auth.md +0 -24
  180. package/.agent/skills/api-patterns/documentation.md +0 -26
  181. package/.agent/skills/api-patterns/graphql.md +0 -41
  182. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  183. package/.agent/skills/api-patterns/response.md +0 -37
  184. package/.agent/skills/api-patterns/rest.md +0 -40
  185. package/.agent/skills/api-patterns/security-testing.md +0 -122
  186. package/.agent/skills/api-patterns/trpc.md +0 -41
  187. package/.agent/skills/api-patterns/versioning.md +0 -22
  188. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  189. package/.agent/skills/app-builder/feature-building.md +0 -53
  190. package/.agent/skills/app-builder/project-detection.md +0 -34
  191. package/.agent/skills/app-builder/scaffolding.md +0 -118
  192. package/.agent/skills/app-builder/tech-stack.md +0 -40
  193. package/.agent/skills/architecture/context-discovery.md +0 -43
  194. package/.agent/skills/architecture/examples.md +0 -94
  195. package/.agent/skills/architecture/pattern-selection.md +0 -68
  196. package/.agent/skills/architecture/patterns-reference.md +0 -50
  197. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  198. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  199. package/.agent/skills/database-design/database-selection.md +0 -43
  200. package/.agent/skills/database-design/indexing.md +0 -39
  201. package/.agent/skills/database-design/migrations.md +0 -48
  202. package/.agent/skills/database-design/optimization.md +0 -36
  203. package/.agent/skills/database-design/orm-selection.md +0 -30
  204. package/.agent/skills/database-design/schema-design.md +0 -56
  205. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  206. package/.agent/skills/frontend-design/color-system.md +0 -329
  207. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  208. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  209. package/.agent/skills/frontend-design/typography-system.md +0 -363
  210. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  211. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  212. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  213. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  214. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  215. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  216. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  217. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  218. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  219. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  220. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  221. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  222. package/.agent/skills/mobile-design/platform-android.md +0 -666
  223. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  224. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  225. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  226. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  227. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  228. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  229. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  230. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  231. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  232. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  233. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -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.