proagents 1.4.0 → 1.5.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.
- package/README.md +11 -0
- package/package.json +1 -1
- package/proagents/AI_INSTRUCTIONS.md +429 -0
- package/proagents/PROAGENTS.md +13 -0
package/README.md
CHANGED
|
@@ -393,6 +393,17 @@ Type these in any AI assistant (Claude, ChatGPT, Gemini, Cursor, etc.):
|
|
|
393
393
|
| `pa:alias-add` | Add custom alias |
|
|
394
394
|
| `pa:alias-remove` | Remove custom alias |
|
|
395
395
|
|
|
396
|
+
### Mobile Test Suite (React Native)
|
|
397
|
+
| Command | Description |
|
|
398
|
+
|---------|-------------|
|
|
399
|
+
| `pa:test-mobile` | Run full mobile test suite |
|
|
400
|
+
| `pa:test-visual` | Visual/design comparison testing |
|
|
401
|
+
| `pa:test-auto-fix` | Auto-fix failing tests |
|
|
402
|
+
| `pa:test-loop` | Test → Fix → Retest until all pass |
|
|
403
|
+
| `pa:compare-figma` | Compare UI against Figma design |
|
|
404
|
+
| `pa:compare-image` | Compare UI against image/sketch |
|
|
405
|
+
| `pa:screenshot` | Capture app screenshots |
|
|
406
|
+
|
|
396
407
|
### Custom Commands
|
|
397
408
|
| Command | Description |
|
|
398
409
|
|---------|-------------|
|
package/package.json
CHANGED
|
@@ -1975,6 +1975,435 @@ For `pa:alias-add`:
|
|
|
1975
1975
|
Runs: pa:test && pa:build && pa:deploy
|
|
1976
1976
|
```
|
|
1977
1977
|
|
|
1978
|
+
### Mobile Test Suite (React Native / Mobile Apps)
|
|
1979
|
+
| Command | Action |
|
|
1980
|
+
|---------|--------|
|
|
1981
|
+
| `pa:test-mobile` | Run full mobile test suite |
|
|
1982
|
+
| `pa:test-mobile "feature"` | Test specific feature |
|
|
1983
|
+
| `pa:test-visual` | Visual/design comparison testing |
|
|
1984
|
+
| `pa:test-auto-fix` | Auto-fix failing tests |
|
|
1985
|
+
| `pa:test-loop` | Test → Fix → Retest loop until success |
|
|
1986
|
+
| `pa:compare-figma` | Compare UI against Figma design |
|
|
1987
|
+
| `pa:compare-image "path"` | Compare UI against image/sketch |
|
|
1988
|
+
| `pa:screenshot` | Take app screenshots for comparison |
|
|
1989
|
+
|
|
1990
|
+
**How to execute Mobile Test Suite commands:**
|
|
1991
|
+
|
|
1992
|
+
For `pa:test-mobile`:
|
|
1993
|
+
1. Run comprehensive mobile test suite:
|
|
1994
|
+
```
|
|
1995
|
+
Mobile Test Suite
|
|
1996
|
+
═════════════════
|
|
1997
|
+
|
|
1998
|
+
Running full test suite for: feature/user-auth
|
|
1999
|
+
|
|
2000
|
+
Phase 1: Unit Tests
|
|
2001
|
+
───────────────────
|
|
2002
|
+
✓ AuthService.login() - 5 tests passed
|
|
2003
|
+
✓ AuthService.logout() - 3 tests passed
|
|
2004
|
+
✓ TokenManager - 8 tests passed
|
|
2005
|
+
✓ UserStore - 12 tests passed
|
|
2006
|
+
|
|
2007
|
+
Phase 2: Component Tests
|
|
2008
|
+
────────────────────────
|
|
2009
|
+
✓ LoginScreen - renders correctly
|
|
2010
|
+
✓ LoginScreen - validates email format
|
|
2011
|
+
✓ LoginScreen - shows error on invalid credentials
|
|
2012
|
+
✓ SignupScreen - all fields required
|
|
2013
|
+
✓ ProfileScreen - displays user data
|
|
2014
|
+
|
|
2015
|
+
Phase 3: Integration Tests
|
|
2016
|
+
──────────────────────────
|
|
2017
|
+
✓ Login flow end-to-end
|
|
2018
|
+
✓ Token refresh on expiry
|
|
2019
|
+
✓ Logout clears all data
|
|
2020
|
+
✗ FAILED: Password reset flow
|
|
2021
|
+
→ Error: Reset email not sent
|
|
2022
|
+
|
|
2023
|
+
Phase 4: E2E Tests (Maestro/Detox)
|
|
2024
|
+
──────────────────────────────────
|
|
2025
|
+
✓ User can login with valid credentials
|
|
2026
|
+
✓ User sees error with invalid password
|
|
2027
|
+
✗ FAILED: User can reset password
|
|
2028
|
+
→ Button not found: "Send Reset Email"
|
|
2029
|
+
|
|
2030
|
+
Phase 5: Visual Tests
|
|
2031
|
+
─────────────────────
|
|
2032
|
+
✓ LoginScreen matches design
|
|
2033
|
+
✗ FAILED: SignupScreen has visual differences
|
|
2034
|
+
→ Button color: expected #007AFF, got #0066CC
|
|
2035
|
+
→ Font size: expected 16px, got 14px
|
|
2036
|
+
|
|
2037
|
+
══════════════════════════════════════════
|
|
2038
|
+
RESULTS: 35/38 tests passed (3 failed)
|
|
2039
|
+
══════════════════════════════════════════
|
|
2040
|
+
|
|
2041
|
+
Failed Tests:
|
|
2042
|
+
1. Integration: Password reset flow
|
|
2043
|
+
2. E2E: User can reset password
|
|
2044
|
+
3. Visual: SignupScreen design mismatch
|
|
2045
|
+
|
|
2046
|
+
Run `pa:test-auto-fix` to automatically fix these issues.
|
|
2047
|
+
```
|
|
2048
|
+
|
|
2049
|
+
2. Generate detailed test report at `./proagents/test-reports/mobile-{timestamp}.md`
|
|
2050
|
+
|
|
2051
|
+
For `pa:test-visual`:
|
|
2052
|
+
1. Take screenshots of all screens/components
|
|
2053
|
+
2. Compare against design references:
|
|
2054
|
+
```
|
|
2055
|
+
Visual Design Testing
|
|
2056
|
+
═════════════════════
|
|
2057
|
+
|
|
2058
|
+
Comparing app UI against design references...
|
|
2059
|
+
|
|
2060
|
+
Design Source: ./designs/ (Figma exports)
|
|
2061
|
+
|
|
2062
|
+
Screen: LoginScreen
|
|
2063
|
+
───────────────────
|
|
2064
|
+
✓ Layout matches design
|
|
2065
|
+
✓ Colors match design tokens
|
|
2066
|
+
✓ Typography correct
|
|
2067
|
+
✓ Spacing/padding correct
|
|
2068
|
+
✓ Button styles match
|
|
2069
|
+
|
|
2070
|
+
Screen: SignupScreen
|
|
2071
|
+
────────────────────
|
|
2072
|
+
✗ MISMATCH DETECTED
|
|
2073
|
+
|
|
2074
|
+
Differences found:
|
|
2075
|
+
┌─────────────────┬──────────────┬──────────────┐
|
|
2076
|
+
│ Element │ Expected │ Actual │
|
|
2077
|
+
├─────────────────┼──────────────┼──────────────┤
|
|
2078
|
+
│ Submit Button │ #007AFF │ #0066CC │
|
|
2079
|
+
│ Title Font │ 24px Bold │ 22px Regular │
|
|
2080
|
+
│ Input Height │ 48px │ 44px │
|
|
2081
|
+
│ Bottom Margin │ 16px │ 12px │
|
|
2082
|
+
└─────────────────┴──────────────┴──────────────┘
|
|
2083
|
+
|
|
2084
|
+
Screenshot saved: ./proagents/test-reports/visual/signup-diff.png
|
|
2085
|
+
|
|
2086
|
+
Screen: ProfileScreen
|
|
2087
|
+
─────────────────────
|
|
2088
|
+
✓ All elements match design
|
|
2089
|
+
|
|
2090
|
+
══════════════════════════════════════════
|
|
2091
|
+
VISUAL TEST RESULTS: 2/3 screens passed
|
|
2092
|
+
══════════════════════════════════════════
|
|
2093
|
+
|
|
2094
|
+
Run `pa:test-auto-fix` to fix visual issues automatically.
|
|
2095
|
+
```
|
|
2096
|
+
|
|
2097
|
+
For `pa:test-auto-fix`:
|
|
2098
|
+
1. Analyze failing tests
|
|
2099
|
+
2. Identify root cause
|
|
2100
|
+
3. Generate and apply fixes:
|
|
2101
|
+
```
|
|
2102
|
+
Auto-Fix Mode
|
|
2103
|
+
═════════════
|
|
2104
|
+
|
|
2105
|
+
Analyzing 3 failing tests...
|
|
2106
|
+
|
|
2107
|
+
Fix 1: Password reset flow
|
|
2108
|
+
──────────────────────────
|
|
2109
|
+
Root Cause: API endpoint missing in AuthService
|
|
2110
|
+
|
|
2111
|
+
Applying fix to: src/services/AuthService.ts
|
|
2112
|
+
+ async resetPassword(email: string): Promise<void> {
|
|
2113
|
+
+ const response = await api.post('/auth/reset-password', { email });
|
|
2114
|
+
+ if (!response.ok) throw new Error('Reset failed');
|
|
2115
|
+
+ }
|
|
2116
|
+
|
|
2117
|
+
✓ Fix applied
|
|
2118
|
+
|
|
2119
|
+
Fix 2: Reset button not found
|
|
2120
|
+
─────────────────────────────
|
|
2121
|
+
Root Cause: Button testID missing
|
|
2122
|
+
|
|
2123
|
+
Applying fix to: src/screens/ResetPasswordScreen.tsx
|
|
2124
|
+
- <Button title="Send Reset Email" onPress={handleReset} />
|
|
2125
|
+
+ <Button
|
|
2126
|
+
+ testID="send-reset-email-button"
|
|
2127
|
+
+ title="Send Reset Email"
|
|
2128
|
+
+ onPress={handleReset}
|
|
2129
|
+
+ />
|
|
2130
|
+
|
|
2131
|
+
✓ Fix applied
|
|
2132
|
+
|
|
2133
|
+
Fix 3: SignupScreen visual mismatch
|
|
2134
|
+
────────────────────────────────────
|
|
2135
|
+
Root Cause: Style values don't match design tokens
|
|
2136
|
+
|
|
2137
|
+
Applying fix to: src/screens/SignupScreen.styles.ts
|
|
2138
|
+
- submitButton: { backgroundColor: '#0066CC' }
|
|
2139
|
+
+ submitButton: { backgroundColor: '#007AFF' }
|
|
2140
|
+
|
|
2141
|
+
- title: { fontSize: 22, fontWeight: 'normal' }
|
|
2142
|
+
+ title: { fontSize: 24, fontWeight: 'bold' }
|
|
2143
|
+
|
|
2144
|
+
- input: { height: 44, marginBottom: 12 }
|
|
2145
|
+
+ input: { height: 48, marginBottom: 16 }
|
|
2146
|
+
|
|
2147
|
+
✓ Fix applied
|
|
2148
|
+
|
|
2149
|
+
══════════════════════════════════════════
|
|
2150
|
+
AUTO-FIX COMPLETE: 3/3 issues fixed
|
|
2151
|
+
══════════════════════════════════════════
|
|
2152
|
+
|
|
2153
|
+
Running verification tests...
|
|
2154
|
+
```
|
|
2155
|
+
|
|
2156
|
+
For `pa:test-loop`:
|
|
2157
|
+
1. Run complete Test → Fix → Retest cycle:
|
|
2158
|
+
```
|
|
2159
|
+
Test Loop Mode
|
|
2160
|
+
══════════════
|
|
2161
|
+
|
|
2162
|
+
Starting automated test-fix-retest cycle...
|
|
2163
|
+
Max iterations: 5
|
|
2164
|
+
|
|
2165
|
+
┌─────────────────────────────────────────────────────┐
|
|
2166
|
+
│ ITERATION 1 │
|
|
2167
|
+
├─────────────────────────────────────────────────────┤
|
|
2168
|
+
│ Running tests... │
|
|
2169
|
+
│ Results: 35/38 passed (3 failed) │
|
|
2170
|
+
│ │
|
|
2171
|
+
│ Analyzing failures... │
|
|
2172
|
+
│ Applying auto-fixes... │
|
|
2173
|
+
│ Fixes applied: 3 │
|
|
2174
|
+
└─────────────────────────────────────────────────────┘
|
|
2175
|
+
|
|
2176
|
+
┌─────────────────────────────────────────────────────┐
|
|
2177
|
+
│ ITERATION 2 │
|
|
2178
|
+
├─────────────────────────────────────────────────────┤
|
|
2179
|
+
│ Running tests... │
|
|
2180
|
+
│ Results: 37/38 passed (1 failed) │
|
|
2181
|
+
│ │
|
|
2182
|
+
│ Analyzing failures... │
|
|
2183
|
+
│ New issue: TypeScript type error after fix │
|
|
2184
|
+
│ Applying auto-fixes... │
|
|
2185
|
+
│ Fixes applied: 1 │
|
|
2186
|
+
└─────────────────────────────────────────────────────┘
|
|
2187
|
+
|
|
2188
|
+
┌─────────────────────────────────────────────────────┐
|
|
2189
|
+
│ ITERATION 3 │
|
|
2190
|
+
├─────────────────────────────────────────────────────┤
|
|
2191
|
+
│ Running tests... │
|
|
2192
|
+
│ Results: 38/38 passed (0 failed) │
|
|
2193
|
+
│ │
|
|
2194
|
+
│ ✓ ALL TESTS PASSING! │
|
|
2195
|
+
└─────────────────────────────────────────────────────┘
|
|
2196
|
+
|
|
2197
|
+
══════════════════════════════════════════════════════
|
|
2198
|
+
TEST LOOP COMPLETE
|
|
2199
|
+
══════════════════════════════════════════════════════
|
|
2200
|
+
|
|
2201
|
+
Summary:
|
|
2202
|
+
────────
|
|
2203
|
+
Iterations: 3
|
|
2204
|
+
Initial failures: 3
|
|
2205
|
+
Fixes applied: 4
|
|
2206
|
+
Final status: ALL PASSING ✓
|
|
2207
|
+
|
|
2208
|
+
Files modified:
|
|
2209
|
+
• src/services/AuthService.ts
|
|
2210
|
+
• src/screens/ResetPasswordScreen.tsx
|
|
2211
|
+
• src/screens/SignupScreen.styles.ts
|
|
2212
|
+
• src/types/auth.ts
|
|
2213
|
+
|
|
2214
|
+
Test report: ./proagents/test-reports/test-loop-{timestamp}.md
|
|
2215
|
+
|
|
2216
|
+
Ready for commit? (y/n)
|
|
2217
|
+
```
|
|
2218
|
+
|
|
2219
|
+
For `pa:compare-figma`:
|
|
2220
|
+
1. Connect to Figma API or use exported frames
|
|
2221
|
+
2. Extract design specifications
|
|
2222
|
+
3. Compare with actual app:
|
|
2223
|
+
```
|
|
2224
|
+
Figma Design Comparison
|
|
2225
|
+
═══════════════════════
|
|
2226
|
+
|
|
2227
|
+
Design Source: [Figma Link or ./designs/figma-export/]
|
|
2228
|
+
|
|
2229
|
+
Extracting design tokens from Figma...
|
|
2230
|
+
✓ Colors extracted
|
|
2231
|
+
✓ Typography extracted
|
|
2232
|
+
✓ Spacing system extracted
|
|
2233
|
+
✓ Component specs extracted
|
|
2234
|
+
|
|
2235
|
+
Comparing: LoginScreen
|
|
2236
|
+
──────────────────────
|
|
2237
|
+
|
|
2238
|
+
Layout Comparison:
|
|
2239
|
+
┌────────────────────┬────────────────────┐
|
|
2240
|
+
│ Figma Design │ App Screenshot │
|
|
2241
|
+
│ ┌──────────┐ │ ┌──────────┐ │
|
|
2242
|
+
│ │ Logo │ │ │ Logo │ ✓ │
|
|
2243
|
+
│ ├──────────┤ │ ├──────────┤ │
|
|
2244
|
+
│ │ Email │ │ │ Email │ ✓ │
|
|
2245
|
+
│ │ Input │ │ │ Input │ │
|
|
2246
|
+
│ ├──────────┤ │ ├──────────┤ │
|
|
2247
|
+
│ │ Password │ │ │ Password │ ✓ │
|
|
2248
|
+
│ │ Input │ │ │ Input │ │
|
|
2249
|
+
│ ├──────────┤ │ ├──────────┤ │
|
|
2250
|
+
│ │ Login │ │ │ Login │ ✗ │
|
|
2251
|
+
│ │ Button │ │ │ Button │ │
|
|
2252
|
+
│ └──────────┘ │ └──────────┘ │
|
|
2253
|
+
└────────────────────┴────────────────────┘
|
|
2254
|
+
|
|
2255
|
+
Detailed Comparison:
|
|
2256
|
+
┌───────────────┬─────────────┬─────────────┬────────┐
|
|
2257
|
+
│ Element │ Figma │ App │ Status │
|
|
2258
|
+
├───────────────┼─────────────┼─────────────┼────────┤
|
|
2259
|
+
│ Logo Size │ 120x40 │ 120x40 │ ✓ │
|
|
2260
|
+
│ Input Height │ 48px │ 48px │ ✓ │
|
|
2261
|
+
│ Input Border │ 1px #E0E0E0 │ 1px #E0E0E0 │ ✓ │
|
|
2262
|
+
│ Button Color │ #007AFF │ #0056B3 │ ✗ │
|
|
2263
|
+
│ Button Radius │ 8px │ 4px │ ✗ │
|
|
2264
|
+
│ Button Height │ 52px │ 48px │ ✗ │
|
|
2265
|
+
│ Vertical Gap │ 16px │ 12px │ ✗ │
|
|
2266
|
+
└───────────────┴─────────────┴─────────────┴────────┘
|
|
2267
|
+
|
|
2268
|
+
Issues Found: 4
|
|
2269
|
+
|
|
2270
|
+
Auto-fix available? Yes
|
|
2271
|
+
Run `pa:test-auto-fix` to apply design corrections.
|
|
2272
|
+
```
|
|
2273
|
+
|
|
2274
|
+
For `pa:compare-image "path"`:
|
|
2275
|
+
1. Load reference image (sketch, screenshot, mockup)
|
|
2276
|
+
2. Use visual comparison:
|
|
2277
|
+
```
|
|
2278
|
+
Image Comparison
|
|
2279
|
+
════════════════
|
|
2280
|
+
|
|
2281
|
+
Reference: ./designs/sketch-login.png
|
|
2282
|
+
App Screen: LoginScreen
|
|
2283
|
+
|
|
2284
|
+
Analyzing reference image...
|
|
2285
|
+
✓ Detected UI elements
|
|
2286
|
+
✓ Extracted layout structure
|
|
2287
|
+
✓ Identified colors and typography
|
|
2288
|
+
|
|
2289
|
+
Taking app screenshot...
|
|
2290
|
+
✓ Screenshot captured
|
|
2291
|
+
|
|
2292
|
+
Visual Diff Analysis:
|
|
2293
|
+
─────────────────────
|
|
2294
|
+
|
|
2295
|
+
Overall Match: 87%
|
|
2296
|
+
|
|
2297
|
+
Differences Detected:
|
|
2298
|
+
|
|
2299
|
+
1. Header Section (Region: 0,0 to 375,100)
|
|
2300
|
+
• Logo position: slightly lower than reference
|
|
2301
|
+
• Background: matches ✓
|
|
2302
|
+
|
|
2303
|
+
2. Form Section (Region: 0,100 to 375,350)
|
|
2304
|
+
• Input fields: match ✓
|
|
2305
|
+
• Labels: font slightly smaller
|
|
2306
|
+
• Spacing: compressed by ~4px
|
|
2307
|
+
|
|
2308
|
+
3. Button Section (Region: 0,350 to 375,450)
|
|
2309
|
+
• Color: differs by 15% (darker in app)
|
|
2310
|
+
• Corner radius: sharper in app
|
|
2311
|
+
• Shadow: missing in app
|
|
2312
|
+
|
|
2313
|
+
Diff image saved: ./proagents/test-reports/visual/login-diff-overlay.png
|
|
2314
|
+
|
|
2315
|
+
┌─────────────────────────────────────────────┐
|
|
2316
|
+
│ [Reference] │ [App] │ [Diff] │
|
|
2317
|
+
│ Expected design │ Actual app │ Δ │
|
|
2318
|
+
└─────────────────────────────────────────────┘
|
|
2319
|
+
|
|
2320
|
+
Suggested fixes generated.
|
|
2321
|
+
Run `pa:test-auto-fix` to apply.
|
|
2322
|
+
```
|
|
2323
|
+
|
|
2324
|
+
For `pa:screenshot`:
|
|
2325
|
+
1. Capture screenshots of all app screens:
|
|
2326
|
+
```
|
|
2327
|
+
Screenshot Capture
|
|
2328
|
+
══════════════════
|
|
2329
|
+
|
|
2330
|
+
Detecting available screens...
|
|
2331
|
+
|
|
2332
|
+
Found 12 screens in navigation:
|
|
2333
|
+
|
|
2334
|
+
Capturing screenshots...
|
|
2335
|
+
|
|
2336
|
+
✓ LoginScreen → ./proagents/screenshots/LoginScreen.png
|
|
2337
|
+
✓ SignupScreen → ./proagents/screenshots/SignupScreen.png
|
|
2338
|
+
✓ HomeScreen → ./proagents/screenshots/HomeScreen.png
|
|
2339
|
+
✓ ProfileScreen → ./proagents/screenshots/ProfileScreen.png
|
|
2340
|
+
✓ SettingsScreen → ./proagents/screenshots/SettingsScreen.png
|
|
2341
|
+
✓ NotificationsScreen → ./proagents/screenshots/NotificationsScreen.png
|
|
2342
|
+
... (6 more)
|
|
2343
|
+
|
|
2344
|
+
Component screenshots:
|
|
2345
|
+
✓ Button variants → ./proagents/screenshots/components/Button.png
|
|
2346
|
+
✓ Input variants → ./proagents/screenshots/components/Input.png
|
|
2347
|
+
✓ Card variants → ./proagents/screenshots/components/Card.png
|
|
2348
|
+
|
|
2349
|
+
══════════════════════════════════════════
|
|
2350
|
+
Screenshots saved: 15 images
|
|
2351
|
+
Location: ./proagents/screenshots/
|
|
2352
|
+
══════════════════════════════════════════
|
|
2353
|
+
|
|
2354
|
+
Use these for:
|
|
2355
|
+
• Visual regression testing
|
|
2356
|
+
• Design comparison with `pa:compare-image`
|
|
2357
|
+
• Documentation
|
|
2358
|
+
```
|
|
2359
|
+
|
|
2360
|
+
**Mobile Test Configuration:**
|
|
2361
|
+
Add to `proagents.config.yaml`:
|
|
2362
|
+
```yaml
|
|
2363
|
+
mobile_testing:
|
|
2364
|
+
platform: react-native # or flutter, native
|
|
2365
|
+
|
|
2366
|
+
test_frameworks:
|
|
2367
|
+
unit: jest
|
|
2368
|
+
component: "@testing-library/react-native"
|
|
2369
|
+
e2e: maestro # or detox, appium
|
|
2370
|
+
|
|
2371
|
+
visual_testing:
|
|
2372
|
+
enabled: true
|
|
2373
|
+
design_source: figma # or ./designs/
|
|
2374
|
+
figma_file_id: "your-figma-file-id" # if using Figma
|
|
2375
|
+
threshold: 0.95 # 95% match required
|
|
2376
|
+
|
|
2377
|
+
auto_fix:
|
|
2378
|
+
enabled: true
|
|
2379
|
+
max_iterations: 5
|
|
2380
|
+
require_approval: false # true = ask before applying fixes
|
|
2381
|
+
|
|
2382
|
+
screenshot:
|
|
2383
|
+
output_dir: ./proagents/screenshots
|
|
2384
|
+
devices:
|
|
2385
|
+
- iPhone 14 Pro
|
|
2386
|
+
- Pixel 7
|
|
2387
|
+
|
|
2388
|
+
test_on:
|
|
2389
|
+
feature_complete: true # auto-run tests when feature done
|
|
2390
|
+
bug_fix: true # auto-run tests after bug fix
|
|
2391
|
+
pre_commit: false # run before git commit
|
|
2392
|
+
```
|
|
2393
|
+
|
|
2394
|
+
**Test Report Structure:**
|
|
2395
|
+
```
|
|
2396
|
+
./proagents/test-reports/
|
|
2397
|
+
├── mobile-2024-03-06-1500.md # Full test report
|
|
2398
|
+
├── visual/
|
|
2399
|
+
│ ├── LoginScreen-diff.png # Visual diff images
|
|
2400
|
+
│ ├── SignupScreen-diff.png
|
|
2401
|
+
│ └── comparison-report.md
|
|
2402
|
+
├── coverage/
|
|
2403
|
+
│ └── coverage-report.html # Test coverage
|
|
2404
|
+
└── auto-fix-log.md # Log of all auto-fixes
|
|
2405
|
+
```
|
|
2406
|
+
|
|
1978
2407
|
### AI Platform Management
|
|
1979
2408
|
| Command | Action |
|
|
1980
2409
|
|---------|--------|
|
package/proagents/PROAGENTS.md
CHANGED
|
@@ -257,6 +257,19 @@ Execute these commands when user types them (prefix: `pa:`):
|
|
|
257
257
|
| `pa:alias-add` | Add custom alias |
|
|
258
258
|
| `pa:alias-remove` | Remove custom alias |
|
|
259
259
|
|
|
260
|
+
## Mobile Test Suite (React Native)
|
|
261
|
+
|
|
262
|
+
| Command | What to Do |
|
|
263
|
+
|---------|------------|
|
|
264
|
+
| `pa:test-mobile` | Run full mobile test suite (unit, component, E2E, visual) |
|
|
265
|
+
| `pa:test-mobile "feature"` | Test specific feature only |
|
|
266
|
+
| `pa:test-visual` | Visual/design comparison testing |
|
|
267
|
+
| `pa:test-auto-fix` | Auto-fix failing tests |
|
|
268
|
+
| `pa:test-loop` | Test → Fix → Retest loop until all pass |
|
|
269
|
+
| `pa:compare-figma` | Compare UI against Figma design |
|
|
270
|
+
| `pa:compare-image "path"` | Compare UI against image/sketch |
|
|
271
|
+
| `pa:screenshot` | Take app screenshots for comparison |
|
|
272
|
+
|
|
260
273
|
## Key Files to Read
|
|
261
274
|
|
|
262
275
|
| File | Purpose |
|