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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proagents",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "AI-agnostic development workflow framework that automates the full software development lifecycle",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -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
  |---------|--------|
@@ -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 |