cursorflow 2.0.4__tar.gz → 2.1.1__tar.gz

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 (46) hide show
  1. {cursorflow-2.0.4 → cursorflow-2.1.1}/MANIFEST.in +2 -0
  2. cursorflow-2.1.1/PKG-INFO +350 -0
  3. cursorflow-2.1.1/README.md +305 -0
  4. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/__init__.py +24 -17
  5. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/cli.py +44 -13
  6. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/browser_controller.py +119 -13
  7. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/browser_engine.py +17 -4
  8. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/cursorflow.py +259 -8
  9. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/install_cursorflow_rules.py +4 -4
  10. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow.egg-info/SOURCES.txt +2 -0
  11. {cursorflow-2.0.4 → cursorflow-2.1.1}/docs/USER_MANUAL.md +229 -4
  12. cursorflow-2.1.1/examples/enhanced_screenshot_example.py +225 -0
  13. cursorflow-2.1.1/examples/responsive_testing_example.py +159 -0
  14. {cursorflow-2.0.4 → cursorflow-2.1.1}/pyproject.toml +1 -1
  15. cursorflow-2.0.4/PKG-INFO +0 -293
  16. cursorflow-2.0.4/README.md +0 -248
  17. {cursorflow-2.0.4 → cursorflow-2.1.1}/LICENSE +0 -0
  18. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/auto_updater.py +0 -0
  19. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/agent.py +0 -0
  20. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/auth_handler.py +0 -0
  21. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/css_iterator.py +0 -0
  22. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/cursor_integration.py +0 -0
  23. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/error_context_collector.py +0 -0
  24. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/error_correlator.py +0 -0
  25. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/event_correlator.py +0 -0
  26. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/file_change_monitor.py +0 -0
  27. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/hmr_detector.py +0 -0
  28. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/log_collector.py +0 -0
  29. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/log_monitor.py +0 -0
  30. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/mockup_comparator.py +0 -0
  31. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/persistent_session.py +0 -0
  32. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/report_generator.py +0 -0
  33. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/core/trace_manager.py +0 -0
  34. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/log_sources/local_file.py +0 -0
  35. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/log_sources/ssh_remote.py +0 -0
  36. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/rules/__init__.py +0 -0
  37. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/rules/cursorflow-installation.mdc +0 -0
  38. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/rules/cursorflow-usage.mdc +0 -0
  39. {cursorflow-2.0.4 → cursorflow-2.1.1}/cursorflow/updater.py +0 -0
  40. {cursorflow-2.0.4 → cursorflow-2.1.1}/examples/comprehensive_screenshot_example.py +0 -0
  41. {cursorflow-2.0.4 → cursorflow-2.1.1}/examples/mockup_comparison_example.py +0 -0
  42. {cursorflow-2.0.4 → cursorflow-2.1.1}/examples/opensas_example.py +0 -0
  43. {cursorflow-2.0.4 → cursorflow-2.1.1}/examples/react_example.py +0 -0
  44. {cursorflow-2.0.4 → cursorflow-2.1.1}/examples/v2_comprehensive_demo.py +0 -0
  45. {cursorflow-2.0.4 → cursorflow-2.1.1}/setup.cfg +0 -0
  46. {cursorflow-2.0.4 → cursorflow-2.1.1}/setup.py +0 -0
@@ -15,6 +15,8 @@ include examples/react_example.py
15
15
  include examples/opensas_example.py
16
16
  include examples/mockup_comparison_example.py
17
17
  include examples/comprehensive_screenshot_example.py
18
+ include examples/enhanced_screenshot_example.py
19
+ include examples/responsive_testing_example.py
18
20
  include examples/v2_comprehensive_demo.py
19
21
 
20
22
  # INCLUDE: Single comprehensive user manual
@@ -0,0 +1,350 @@
1
+ Metadata-Version: 2.4
2
+ Name: cursorflow
3
+ Version: 2.1.1
4
+ Summary: 🔥 Complete page intelligence for AI-driven development with Hot Reload Intelligence - captures DOM, network, console, performance, HMR events, and comprehensive page analysis
5
+ Author-email: GeekWarrior Development <rbush@cooltheory.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/haley-marketing-group/cursorflow
8
+ Project-URL: Documentation, https://cursorflow.readthedocs.io
9
+ Project-URL: Repository, https://github.com/haley-marketing-group/cursorflow
10
+ Keywords: ui-testing,automation,cursor,ai,web-testing,css-iteration,hot-reload,hmr,element-intelligence,page-analysis,error-context
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Testing
20
+ Classifier: Topic :: Software Development :: Quality Assurance
21
+ Classifier: Framework :: AsyncIO
22
+ Requires-Python: >=3.8
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: playwright>=1.40.0
26
+ Requires-Dist: paramiko>=3.3.1
27
+ Requires-Dist: pyyaml>=6.0.1
28
+ Requires-Dist: asyncio-mqtt>=0.11.1
29
+ Requires-Dist: click>=8.1.7
30
+ Requires-Dist: rich>=13.6.0
31
+ Requires-Dist: jinja2>=3.1.2
32
+ Requires-Dist: python-dateutil>=2.8.2
33
+ Requires-Dist: watchdog>=3.0.0
34
+ Requires-Dist: docker>=6.1.3
35
+ Requires-Dist: pillow>=10.0.0
36
+ Requires-Dist: numpy>=1.24.0
37
+ Requires-Dist: websockets>=11.0.0
38
+ Provides-Extra: dev
39
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
40
+ Requires-Dist: pytest-asyncio>=0.21.1; extra == "dev"
41
+ Requires-Dist: black>=23.9.1; extra == "dev"
42
+ Requires-Dist: flake8>=6.1.0; extra == "dev"
43
+ Requires-Dist: mypy>=1.6.1; extra == "dev"
44
+ Dynamic: license-file
45
+
46
+ # CursorFlow
47
+
48
+ **The measurement tool for web testing - we capture reality, not fiction**
49
+
50
+ CursorFlow is a pure data collection engine that captures comprehensive web application intelligence. Unlike simulation tools that let you control reality, CursorFlow measures actual reality - giving you complete trust in your test results.
51
+
52
+ ## 🎯 The CursorFlow Philosophy
53
+
54
+ ### **📊 We Collect Reality, Not Fiction**
55
+
56
+ **Other tools are simulation tools** - they let you control reality:
57
+ - Mock network responses
58
+ - Simulate user interactions
59
+ - Create test environments
60
+
61
+ **CursorFlow is a measurement tool** - we capture reality as-is:
62
+ - Real API response times
63
+ - Actual network failures
64
+ - Genuine browser behavior
65
+ - Complete page intelligence
66
+
67
+ ### **🔬 Pure Observation Principle**
68
+
69
+ **CursorFlow is like a scientific instrument:**
70
+ - **Microscopes** don't create the cells they observe
71
+ - **Telescopes** don't generate the stars they capture
72
+ - **CursorFlow** doesn't mock the web it measures
73
+
74
+ When CursorFlow reports `"average_response_time": 416.58ms`, you can tell stakeholders: **"This is what actually happened"** - not "this is what happened in our test simulation."
75
+
76
+ ### **🌟 The Trust Factor**
77
+
78
+ **Complete Reliability:** Every data point reflects real application behavior
79
+ - No mocked responses hiding slow APIs
80
+ - No simulated interactions missing real edge cases
81
+ - No test environments different from production
82
+
83
+ **Documentary vs Movie:** Both are valuable, but if you're trying to understand reality, you watch the documentary. CursorFlow is the documentary of web testing.
84
+
85
+ ## 🚀 Complete Page Intelligence
86
+
87
+ Every screenshot captures everything your AI needs to make intelligent decisions:
88
+
89
+ ### **📊 Comprehensive Data Collection**
90
+ - **DOM**: All elements with 7 selector strategies each
91
+ - **Network**: All requests, responses, and complete response bodies
92
+ - **Console**: All logs, errors, and smart error correlation
93
+ - **Performance**: Load times, memory usage, with reliability indicators
94
+ - **Visual**: Screenshots with pixel-perfect comparisons and enhanced options
95
+ - **Fonts**: Loading status, performance, and usage analysis
96
+ - **Animations**: Active animations and transitions tracking
97
+ - **Resources**: Complete resource loading analysis
98
+ - **Storage**: localStorage, sessionStorage, cookies, IndexedDB state
99
+
100
+ ### **🔄 Hot Reload Intelligence**
101
+ - **Framework auto-detection** (Vite, Webpack, Next.js, Parcel, Laravel Mix)
102
+ - **Perfect timing** for CSS change detection
103
+ - **HMR event correlation** for understanding change impact
104
+ - **Persistent sessions** that survive code changes
105
+
106
+ ### **🎯 Enhanced Screenshot Options**
107
+ ```python
108
+ # Clip to specific components
109
+ {"screenshot": {"name": "header", "options": {"clip": {"selector": "#header"}}}}
110
+
111
+ # Hide sensitive information
112
+ {"screenshot": {"name": "profile", "options": {"mask": [".user-email", ".api-key"]}}}
113
+
114
+ # Full page with quality control
115
+ {"screenshot": {"name": "page", "options": {"full_page": True, "quality": 90}}}
116
+ ```
117
+
118
+ ### **📱 Parallel Viewport Testing**
119
+ ```python
120
+ # Test across multiple viewports simultaneously
121
+ await flow.test_responsive([
122
+ {"width": 375, "height": 667, "name": "mobile"},
123
+ {"width": 768, "height": 1024, "name": "tablet"},
124
+ {"width": 1440, "height": 900, "name": "desktop"}
125
+ ], [
126
+ {"navigate": "/dashboard"},
127
+ {"screenshot": "responsive-test"}
128
+ ])
129
+ ```
130
+
131
+ ### **🤖 AI-First Design**
132
+ All data structured for AI consumption:
133
+ - Consistent JSON format across all features
134
+ - **Multi-selector element identification** for robust automation
135
+ - **Accessibility-aware** element analysis
136
+ - Error correlation with **smart screenshot deduplication**
137
+ - Performance insights with **reliability metadata**
138
+
139
+ ## 🚀 Quick Start
140
+
141
+ ```bash
142
+ # Install CursorFlow
143
+ pip install cursorflow
144
+
145
+ # Test real application behavior
146
+ cursorflow test --base-url http://localhost:3000 --path "/dashboard"
147
+
148
+ # Get complete intelligence with custom actions
149
+ cursorflow test --base-url http://localhost:3000 --actions '[
150
+ {"navigate": "/login"},
151
+ {"fill": {"selector": "#email", "value": "test@example.com"}},
152
+ {"click": "#login-btn"},
153
+ {"screenshot": {"name": "result", "options": {"mask": [".sensitive-data"]}}}
154
+ ]'
155
+ ```
156
+
157
+ ## 💻 Python API Examples
158
+
159
+ ### **Complete Page Intelligence**
160
+ ```python
161
+ from cursorflow import CursorFlow
162
+
163
+ async def capture_reality():
164
+ flow = CursorFlow("http://localhost:3000", {"source": "local", "paths": ["logs/app.log"]})
165
+
166
+ # Capture everything
167
+ results = await flow.execute_and_collect([
168
+ {"navigate": "/dashboard"},
169
+ {"screenshot": "complete-analysis"}
170
+ ])
171
+
172
+ # Access comprehensive data
173
+ screenshot = results['artifacts']['screenshots'][0]
174
+ print(f"Real load time: {screenshot['performance_data']['page_load_time']}ms")
175
+ print(f"Actual memory usage: {screenshot['performance_data']['memory_usage_mb']}MB")
176
+ print(f"Elements found: {len(screenshot['dom_analysis']['elements'])}")
177
+ ```
178
+
179
+ ### **Enhanced Screenshot Options**
180
+ ```python
181
+ # Component-focused testing
182
+ await flow.execute_and_collect([
183
+ {"navigate": "/components"},
184
+ {"screenshot": {
185
+ "name": "button-component",
186
+ "options": {"clip": {"selector": ".component-demo"}}
187
+ }}
188
+ ])
189
+
190
+ # Privacy-aware testing
191
+ await flow.execute_and_collect([
192
+ {"navigate": "/admin"},
193
+ {"screenshot": {
194
+ "name": "admin-safe",
195
+ "options": {
196
+ "full_page": True,
197
+ "mask": [".api-key", ".user-data", ".sensitive-info"]
198
+ }
199
+ }}
200
+ ])
201
+ ```
202
+
203
+ ### **Hot Reload Intelligence**
204
+ ```python
205
+ # Perfect CSS iteration timing
206
+ async def hmr_workflow():
207
+ flow = CursorFlow("http://localhost:5173", {"headless": False})
208
+
209
+ # Auto-detect and monitor HMR
210
+ await flow.browser.start_hmr_monitoring()
211
+
212
+ # Baseline capture
213
+ await flow.execute_and_collect([{"screenshot": "baseline"}])
214
+
215
+ # Wait for real CSS changes with perfect timing
216
+ hmr_event = await flow.browser.wait_for_css_update()
217
+ print(f"🔥 {hmr_event['framework']} detected real change!")
218
+
219
+ # Capture immediately after actual change
220
+ await flow.execute_and_collect([{"screenshot": "updated"}])
221
+ ```
222
+
223
+ ### **Parallel Viewport Testing**
224
+ ```python
225
+ # Test responsive design across multiple viewports
226
+ async def test_responsive_design():
227
+ flow = CursorFlow("http://localhost:3000", {"source": "local", "paths": ["logs/app.log"]})
228
+
229
+ # Define viewports
230
+ viewports = [
231
+ {"width": 375, "height": 667, "name": "mobile"},
232
+ {"width": 768, "height": 1024, "name": "tablet"},
233
+ {"width": 1440, "height": 900, "name": "desktop"}
234
+ ]
235
+
236
+ # Test same actions across all viewports
237
+ results = await flow.test_responsive(viewports, [
238
+ {"navigate": "/dashboard"},
239
+ {"click": "#menu-toggle"},
240
+ {"screenshot": {"name": "navigation", "options": {"clip": {"selector": "#nav"}}}}
241
+ ])
242
+
243
+ # Analyze responsive behavior
244
+ print(f"Tested {results['execution_summary']['successful_viewports']} viewports")
245
+ print(f"Fastest: {results['responsive_analysis']['performance_analysis']['fastest_viewport']}")
246
+ ```
247
+
248
+ ## 🔧 CLI Commands
249
+
250
+ ### **Universal Testing**
251
+ ```bash
252
+ # Simple page test with complete intelligence
253
+ cursorflow test --base-url http://localhost:3000 --path "/dashboard"
254
+
255
+ # Responsive testing across multiple viewports
256
+ cursorflow test --base-url http://localhost:3000 --path "/dashboard" --responsive
257
+
258
+ # Complex interaction testing
259
+ cursorflow test --base-url http://localhost:3000 --actions '[
260
+ {"navigate": "/form"},
261
+ {"fill": {"selector": "#name", "value": "Test User"}},
262
+ {"click": "#submit"},
263
+ {"screenshot": {"name": "result", "options": {"clip": {"selector": ".result-area"}}}}
264
+ ]'
265
+
266
+ # Responsive testing with custom actions
267
+ cursorflow test --base-url http://localhost:3000 --responsive --actions '[
268
+ {"navigate": "/products"},
269
+ {"fill": {"selector": "#search", "value": "laptop"}},
270
+ {"screenshot": "search-results"}
271
+ ]'
272
+
273
+ # Custom output location
274
+ cursorflow test --base-url http://localhost:3000 --path "/api" --output "api-test-results.json"
275
+ ```
276
+
277
+ ### **Design Comparison**
278
+ ```bash
279
+ # Compare mockup to implementation
280
+ cursorflow compare-mockup https://mockup.com/design \
281
+ --base-url http://localhost:3000 \
282
+ --mockup-actions '[{"navigate": "/"}]' \
283
+ --implementation-actions '[{"navigate": "/dashboard"}]'
284
+
285
+ # CSS iteration with HMR intelligence
286
+ cursorflow iterate-mockup https://mockup.com/design \
287
+ --base-url http://localhost:5173 \
288
+ --css-improvements '[
289
+ {"name": "fix-spacing", "css": ".container { gap: 2rem; }"}
290
+ ]'
291
+ ```
292
+
293
+ ### **AI Integration**
294
+ ```bash
295
+ # Install Cursor AI rules
296
+ cursorflow install-rules
297
+
298
+ # Update to latest version and rules
299
+ cursorflow update
300
+ ```
301
+
302
+ ## 🧠 Why This Matters
303
+
304
+ ### **For Job Board v4 Testing:**
305
+ ✅ **Real API response times** from `/ajax_rq.smpl?fn=gjapi_typeahead`
306
+ ✅ **Actual network failures** when they occur
307
+ ✅ **Real browser console errors** from production code
308
+ ✅ **Genuine performance metrics** under real load
309
+
310
+ ❌ **With mocking:** You'd never know the typeahead is slow in production!
311
+
312
+ ### **For Any Web Application:**
313
+ - **Trust your test results** - they reflect actual behavior
314
+ - **Find real performance bottlenecks** - no artificial speed boosts
315
+ - **Discover actual edge cases** - no simulation gaps
316
+ - **Debug genuine issues** - real errors, real timing, real context
317
+
318
+ ## 🌟 Framework Support
319
+
320
+ **Universal Compatibility:**
321
+ - Works with **any web application** regardless of technology
322
+ - **Framework-agnostic** core operations
323
+ - **Smart adaptation** to different environments
324
+
325
+ **HMR Auto-Detection:**
326
+ - ✅ **Vite** (port 5173)
327
+ - ✅ **Webpack Dev Server** (port 3000)
328
+ - ✅ **Next.js** (port 3000)
329
+ - ✅ **Parcel** (port 1234)
330
+ - ✅ **Laravel Mix** (port 3000)
331
+
332
+ ## 📖 Documentation
333
+
334
+ - **[Complete User Manual](docs/USER_MANUAL.md)** - Full feature guide
335
+ - **[Examples](examples/)** - Practical usage examples
336
+ - **[API Reference](docs/api/)** - Complete Python API documentation
337
+
338
+ ## 🎪 The CursorFlow Advantage
339
+
340
+ ### **Other Tools Say:**
341
+ *"We let you mock and simulate"*
342
+
343
+ ### **CursorFlow Says:**
344
+ *"We tell you the truth"*
345
+
346
+ **When you need to understand reality, choose the measurement tool - not the simulation tool.**
347
+
348
+ ---
349
+
350
+ **Complete page intelligence • Real behavior measurement • AI-first design • Pure observation**
@@ -0,0 +1,305 @@
1
+ # CursorFlow
2
+
3
+ **The measurement tool for web testing - we capture reality, not fiction**
4
+
5
+ CursorFlow is a pure data collection engine that captures comprehensive web application intelligence. Unlike simulation tools that let you control reality, CursorFlow measures actual reality - giving you complete trust in your test results.
6
+
7
+ ## 🎯 The CursorFlow Philosophy
8
+
9
+ ### **📊 We Collect Reality, Not Fiction**
10
+
11
+ **Other tools are simulation tools** - they let you control reality:
12
+ - Mock network responses
13
+ - Simulate user interactions
14
+ - Create test environments
15
+
16
+ **CursorFlow is a measurement tool** - we capture reality as-is:
17
+ - Real API response times
18
+ - Actual network failures
19
+ - Genuine browser behavior
20
+ - Complete page intelligence
21
+
22
+ ### **🔬 Pure Observation Principle**
23
+
24
+ **CursorFlow is like a scientific instrument:**
25
+ - **Microscopes** don't create the cells they observe
26
+ - **Telescopes** don't generate the stars they capture
27
+ - **CursorFlow** doesn't mock the web it measures
28
+
29
+ When CursorFlow reports `"average_response_time": 416.58ms`, you can tell stakeholders: **"This is what actually happened"** - not "this is what happened in our test simulation."
30
+
31
+ ### **🌟 The Trust Factor**
32
+
33
+ **Complete Reliability:** Every data point reflects real application behavior
34
+ - No mocked responses hiding slow APIs
35
+ - No simulated interactions missing real edge cases
36
+ - No test environments different from production
37
+
38
+ **Documentary vs Movie:** Both are valuable, but if you're trying to understand reality, you watch the documentary. CursorFlow is the documentary of web testing.
39
+
40
+ ## 🚀 Complete Page Intelligence
41
+
42
+ Every screenshot captures everything your AI needs to make intelligent decisions:
43
+
44
+ ### **📊 Comprehensive Data Collection**
45
+ - **DOM**: All elements with 7 selector strategies each
46
+ - **Network**: All requests, responses, and complete response bodies
47
+ - **Console**: All logs, errors, and smart error correlation
48
+ - **Performance**: Load times, memory usage, with reliability indicators
49
+ - **Visual**: Screenshots with pixel-perfect comparisons and enhanced options
50
+ - **Fonts**: Loading status, performance, and usage analysis
51
+ - **Animations**: Active animations and transitions tracking
52
+ - **Resources**: Complete resource loading analysis
53
+ - **Storage**: localStorage, sessionStorage, cookies, IndexedDB state
54
+
55
+ ### **🔄 Hot Reload Intelligence**
56
+ - **Framework auto-detection** (Vite, Webpack, Next.js, Parcel, Laravel Mix)
57
+ - **Perfect timing** for CSS change detection
58
+ - **HMR event correlation** for understanding change impact
59
+ - **Persistent sessions** that survive code changes
60
+
61
+ ### **🎯 Enhanced Screenshot Options**
62
+ ```python
63
+ # Clip to specific components
64
+ {"screenshot": {"name": "header", "options": {"clip": {"selector": "#header"}}}}
65
+
66
+ # Hide sensitive information
67
+ {"screenshot": {"name": "profile", "options": {"mask": [".user-email", ".api-key"]}}}
68
+
69
+ # Full page with quality control
70
+ {"screenshot": {"name": "page", "options": {"full_page": True, "quality": 90}}}
71
+ ```
72
+
73
+ ### **📱 Parallel Viewport Testing**
74
+ ```python
75
+ # Test across multiple viewports simultaneously
76
+ await flow.test_responsive([
77
+ {"width": 375, "height": 667, "name": "mobile"},
78
+ {"width": 768, "height": 1024, "name": "tablet"},
79
+ {"width": 1440, "height": 900, "name": "desktop"}
80
+ ], [
81
+ {"navigate": "/dashboard"},
82
+ {"screenshot": "responsive-test"}
83
+ ])
84
+ ```
85
+
86
+ ### **🤖 AI-First Design**
87
+ All data structured for AI consumption:
88
+ - Consistent JSON format across all features
89
+ - **Multi-selector element identification** for robust automation
90
+ - **Accessibility-aware** element analysis
91
+ - Error correlation with **smart screenshot deduplication**
92
+ - Performance insights with **reliability metadata**
93
+
94
+ ## 🚀 Quick Start
95
+
96
+ ```bash
97
+ # Install CursorFlow
98
+ pip install cursorflow
99
+
100
+ # Test real application behavior
101
+ cursorflow test --base-url http://localhost:3000 --path "/dashboard"
102
+
103
+ # Get complete intelligence with custom actions
104
+ cursorflow test --base-url http://localhost:3000 --actions '[
105
+ {"navigate": "/login"},
106
+ {"fill": {"selector": "#email", "value": "test@example.com"}},
107
+ {"click": "#login-btn"},
108
+ {"screenshot": {"name": "result", "options": {"mask": [".sensitive-data"]}}}
109
+ ]'
110
+ ```
111
+
112
+ ## 💻 Python API Examples
113
+
114
+ ### **Complete Page Intelligence**
115
+ ```python
116
+ from cursorflow import CursorFlow
117
+
118
+ async def capture_reality():
119
+ flow = CursorFlow("http://localhost:3000", {"source": "local", "paths": ["logs/app.log"]})
120
+
121
+ # Capture everything
122
+ results = await flow.execute_and_collect([
123
+ {"navigate": "/dashboard"},
124
+ {"screenshot": "complete-analysis"}
125
+ ])
126
+
127
+ # Access comprehensive data
128
+ screenshot = results['artifacts']['screenshots'][0]
129
+ print(f"Real load time: {screenshot['performance_data']['page_load_time']}ms")
130
+ print(f"Actual memory usage: {screenshot['performance_data']['memory_usage_mb']}MB")
131
+ print(f"Elements found: {len(screenshot['dom_analysis']['elements'])}")
132
+ ```
133
+
134
+ ### **Enhanced Screenshot Options**
135
+ ```python
136
+ # Component-focused testing
137
+ await flow.execute_and_collect([
138
+ {"navigate": "/components"},
139
+ {"screenshot": {
140
+ "name": "button-component",
141
+ "options": {"clip": {"selector": ".component-demo"}}
142
+ }}
143
+ ])
144
+
145
+ # Privacy-aware testing
146
+ await flow.execute_and_collect([
147
+ {"navigate": "/admin"},
148
+ {"screenshot": {
149
+ "name": "admin-safe",
150
+ "options": {
151
+ "full_page": True,
152
+ "mask": [".api-key", ".user-data", ".sensitive-info"]
153
+ }
154
+ }}
155
+ ])
156
+ ```
157
+
158
+ ### **Hot Reload Intelligence**
159
+ ```python
160
+ # Perfect CSS iteration timing
161
+ async def hmr_workflow():
162
+ flow = CursorFlow("http://localhost:5173", {"headless": False})
163
+
164
+ # Auto-detect and monitor HMR
165
+ await flow.browser.start_hmr_monitoring()
166
+
167
+ # Baseline capture
168
+ await flow.execute_and_collect([{"screenshot": "baseline"}])
169
+
170
+ # Wait for real CSS changes with perfect timing
171
+ hmr_event = await flow.browser.wait_for_css_update()
172
+ print(f"🔥 {hmr_event['framework']} detected real change!")
173
+
174
+ # Capture immediately after actual change
175
+ await flow.execute_and_collect([{"screenshot": "updated"}])
176
+ ```
177
+
178
+ ### **Parallel Viewport Testing**
179
+ ```python
180
+ # Test responsive design across multiple viewports
181
+ async def test_responsive_design():
182
+ flow = CursorFlow("http://localhost:3000", {"source": "local", "paths": ["logs/app.log"]})
183
+
184
+ # Define viewports
185
+ viewports = [
186
+ {"width": 375, "height": 667, "name": "mobile"},
187
+ {"width": 768, "height": 1024, "name": "tablet"},
188
+ {"width": 1440, "height": 900, "name": "desktop"}
189
+ ]
190
+
191
+ # Test same actions across all viewports
192
+ results = await flow.test_responsive(viewports, [
193
+ {"navigate": "/dashboard"},
194
+ {"click": "#menu-toggle"},
195
+ {"screenshot": {"name": "navigation", "options": {"clip": {"selector": "#nav"}}}}
196
+ ])
197
+
198
+ # Analyze responsive behavior
199
+ print(f"Tested {results['execution_summary']['successful_viewports']} viewports")
200
+ print(f"Fastest: {results['responsive_analysis']['performance_analysis']['fastest_viewport']}")
201
+ ```
202
+
203
+ ## 🔧 CLI Commands
204
+
205
+ ### **Universal Testing**
206
+ ```bash
207
+ # Simple page test with complete intelligence
208
+ cursorflow test --base-url http://localhost:3000 --path "/dashboard"
209
+
210
+ # Responsive testing across multiple viewports
211
+ cursorflow test --base-url http://localhost:3000 --path "/dashboard" --responsive
212
+
213
+ # Complex interaction testing
214
+ cursorflow test --base-url http://localhost:3000 --actions '[
215
+ {"navigate": "/form"},
216
+ {"fill": {"selector": "#name", "value": "Test User"}},
217
+ {"click": "#submit"},
218
+ {"screenshot": {"name": "result", "options": {"clip": {"selector": ".result-area"}}}}
219
+ ]'
220
+
221
+ # Responsive testing with custom actions
222
+ cursorflow test --base-url http://localhost:3000 --responsive --actions '[
223
+ {"navigate": "/products"},
224
+ {"fill": {"selector": "#search", "value": "laptop"}},
225
+ {"screenshot": "search-results"}
226
+ ]'
227
+
228
+ # Custom output location
229
+ cursorflow test --base-url http://localhost:3000 --path "/api" --output "api-test-results.json"
230
+ ```
231
+
232
+ ### **Design Comparison**
233
+ ```bash
234
+ # Compare mockup to implementation
235
+ cursorflow compare-mockup https://mockup.com/design \
236
+ --base-url http://localhost:3000 \
237
+ --mockup-actions '[{"navigate": "/"}]' \
238
+ --implementation-actions '[{"navigate": "/dashboard"}]'
239
+
240
+ # CSS iteration with HMR intelligence
241
+ cursorflow iterate-mockup https://mockup.com/design \
242
+ --base-url http://localhost:5173 \
243
+ --css-improvements '[
244
+ {"name": "fix-spacing", "css": ".container { gap: 2rem; }"}
245
+ ]'
246
+ ```
247
+
248
+ ### **AI Integration**
249
+ ```bash
250
+ # Install Cursor AI rules
251
+ cursorflow install-rules
252
+
253
+ # Update to latest version and rules
254
+ cursorflow update
255
+ ```
256
+
257
+ ## 🧠 Why This Matters
258
+
259
+ ### **For Job Board v4 Testing:**
260
+ ✅ **Real API response times** from `/ajax_rq.smpl?fn=gjapi_typeahead`
261
+ ✅ **Actual network failures** when they occur
262
+ ✅ **Real browser console errors** from production code
263
+ ✅ **Genuine performance metrics** under real load
264
+
265
+ ❌ **With mocking:** You'd never know the typeahead is slow in production!
266
+
267
+ ### **For Any Web Application:**
268
+ - **Trust your test results** - they reflect actual behavior
269
+ - **Find real performance bottlenecks** - no artificial speed boosts
270
+ - **Discover actual edge cases** - no simulation gaps
271
+ - **Debug genuine issues** - real errors, real timing, real context
272
+
273
+ ## 🌟 Framework Support
274
+
275
+ **Universal Compatibility:**
276
+ - Works with **any web application** regardless of technology
277
+ - **Framework-agnostic** core operations
278
+ - **Smart adaptation** to different environments
279
+
280
+ **HMR Auto-Detection:**
281
+ - ✅ **Vite** (port 5173)
282
+ - ✅ **Webpack Dev Server** (port 3000)
283
+ - ✅ **Next.js** (port 3000)
284
+ - ✅ **Parcel** (port 1234)
285
+ - ✅ **Laravel Mix** (port 3000)
286
+
287
+ ## 📖 Documentation
288
+
289
+ - **[Complete User Manual](docs/USER_MANUAL.md)** - Full feature guide
290
+ - **[Examples](examples/)** - Practical usage examples
291
+ - **[API Reference](docs/api/)** - Complete Python API documentation
292
+
293
+ ## 🎪 The CursorFlow Advantage
294
+
295
+ ### **Other Tools Say:**
296
+ *"We let you mock and simulate"*
297
+
298
+ ### **CursorFlow Says:**
299
+ *"We tell you the truth"*
300
+
301
+ **When you need to understand reality, choose the measurement tool - not the simulation tool.**
302
+
303
+ ---
304
+
305
+ **Complete page intelligence • Real behavior measurement • AI-first design • Pure observation**