@questpie/probe 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/agent-browser-Cxuu-Zz0.js +203 -0
  2. package/dist/assert-BLP5_JwC.js +212 -0
  3. package/dist/browser-DoCXU5Bs.js +736 -0
  4. package/dist/check-Cny-3lkZ.js +41 -0
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.js +30 -0
  7. package/dist/codegen-BH3cUNuf.js +61 -0
  8. package/dist/compose-D5a8qHkg.js +233 -0
  9. package/dist/config-BUEMgFYN.js +89 -0
  10. package/dist/duration-D1ya1zLn.js +3 -0
  11. package/dist/duration-DUrbfMLK.js +30 -0
  12. package/dist/health-B36ufFzJ.js +62 -0
  13. package/dist/http-BZouO1Cj.js +187 -0
  14. package/dist/index.d.ts +119 -0
  15. package/dist/index.js +4 -0
  16. package/dist/init-BjTfn_-A.js +92 -0
  17. package/dist/logs-BCgur07G.js +191 -0
  18. package/dist/output-CHUjdVDf.js +38 -0
  19. package/dist/process-manager-CzexpFO4.js +229 -0
  20. package/dist/process-manager-zzltWvZ0.js +4 -0
  21. package/dist/ps-DuHF7vmE.js +39 -0
  22. package/dist/record-C4SmoPsT.js +140 -0
  23. package/dist/recordings-Cb31alos.js +158 -0
  24. package/dist/replay-Dg9PHNrg.js +171 -0
  25. package/dist/reporter-CqWc26OP.js +25 -0
  26. package/dist/restart-By3Edj5X.js +44 -0
  27. package/dist/snapshot-diff-CqXEVTAZ.js +51 -0
  28. package/dist/start-BClY6oJq.js +79 -0
  29. package/dist/state-DRTSIt_r.js +62 -0
  30. package/dist/stop-QAP6gbDe.js +47 -0
  31. package/package.json +72 -0
  32. package/skills/qprobe/SKILL.md +103 -0
  33. package/skills/qprobe/references/browser.md +201 -0
  34. package/skills/qprobe/references/compose.md +128 -0
  35. package/skills/qprobe/references/http.md +151 -0
  36. package/skills/qprobe/references/process.md +114 -0
  37. package/skills/qprobe/references/recording.md +194 -0
  38. package/skills/qprobe-browser/SKILL.md +87 -0
  39. package/skills/qprobe-compose/SKILL.md +81 -0
  40. package/skills/qprobe-http/SKILL.md +67 -0
  41. package/skills/qprobe-process/SKILL.md +58 -0
  42. package/skills/qprobe-recording/SKILL.md +63 -0
  43. package/skills/qprobe-ux/SKILL.md +250 -0
@@ -0,0 +1,250 @@
1
+ ---
2
+ name: qprobe-ux
3
+ description: "UX testing and evaluation using QUESTPIE Probe. Run heuristic evaluations, task completion tests, navigation audits, accessibility checks, and A/B comparisons on running web apps. Use when: evaluating usability, checking UX quality, auditing user flows, comparing two versions, finding UX issues, testing if users can complete tasks. Triggers: 'review the UX', 'is this usable', 'can a user find X', 'compare these two versions', 'UX audit', 'heuristic evaluation', 'test the onboarding flow', 'is the checkout intuitive', 'find usability problems', 'accessibility check'. Use even for 'does this make sense' or 'is this confusing' in context of a web UI."
4
+ ---
5
+
6
+ # qprobe-ux — UX Testing Skill
7
+
8
+ Run UX evaluations on running web apps using Probe's browser control. No external services, no subscriptions.
9
+
10
+ **Requires:** `@questpie/probe` installed, app running via `qprobe compose up` or `qprobe start`.
11
+
12
+ ---
13
+
14
+ ## Methods
15
+
16
+ ### 1. Heuristic Evaluation
17
+
18
+ Walk through the app and score against Nielsen's 10 usability heuristics.
19
+
20
+ **How to run:**
21
+ 1. Open the target page: `qprobe browser open <url>`
22
+ 2. Take interactive snapshot: `qprobe browser snapshot -i`
23
+ 3. Navigate each major section, take snapshots
24
+ 4. Check console for errors: `qprobe browser console --level error`
25
+ 5. Check network for failures: `qprobe browser network --failed`
26
+ 6. Evaluate each heuristic and write findings
27
+
28
+ **Heuristics to evaluate:**
29
+
30
+ | # | Heuristic | What to check |
31
+ |---|-----------|---------------|
32
+ | H1 | Visibility of system status | Loading states, progress indicators, feedback after actions. Click a button — does something visibly happen? |
33
+ | H2 | Match between system and real world | Labels use user language, not dev jargon. Icons are recognizable. Metaphors make sense. |
34
+ | H3 | User control and freedom | Can you go back? Undo? Cancel? Is there always a way out of a flow? |
35
+ | H4 | Consistency and standards | Same action, same pattern everywhere. Buttons look like buttons. Links look like links. |
36
+ | H5 | Error prevention | Required fields marked before submit. Destructive actions need confirmation. Inputs have constraints. |
37
+ | H6 | Recognition over recall | Options visible, not hidden. Current state obvious. No need to remember info between steps. |
38
+ | H7 | Flexibility and efficiency | Keyboard shortcuts? Bulk actions? Experienced users have fast paths? |
39
+ | H8 | Aesthetic and minimalist design | No clutter. Every element serves a purpose. Important things are prominent. |
40
+ | H9 | Help users recognize and recover from errors | Error messages are specific, plain language, suggest a fix. Not "Error 500" or "Something went wrong." |
41
+ | H10 | Help and documentation | Help is findable. Tooltips on complex fields. Empty states guide the user. |
42
+
43
+ **Output format:**
44
+ ```
45
+ ## Heuristic Evaluation: [page/flow name]
46
+
47
+ ### H1: Visibility of system status — PASS / ISSUE / CRITICAL
48
+ Finding: [what you observed]
49
+ Evidence: [snapshot ref, console output, or screenshot]
50
+ Recommendation: [specific fix]
51
+
52
+ ### H2: Match between system and real world — PASS / ISSUE / CRITICAL
53
+ ...
54
+ ```
55
+
56
+ Score each: PASS (no issues), ISSUE (minor, should fix), CRITICAL (blocks or confuses users).
57
+
58
+ ---
59
+
60
+ ### 2. Task Completion Test
61
+
62
+ Simulate a first-time user trying to complete a task. The agent has NO prior knowledge of the UI layout — it must discover the path using only what's visible.
63
+
64
+ **How to run:**
65
+ 1. Define the task in plain language (e.g., "Create a new account and set up a profile")
66
+ 2. Open the starting page: `qprobe browser open /`
67
+ 3. Use ONLY `snapshot -i` to see what's available — do NOT look at source code
68
+ 4. Navigate by choosing what seems most logical from visible elements
69
+ 5. Record every step: what you saw, what you chose, why
70
+ 6. Note dead-ends, confusion points, moments of hesitation
71
+
72
+ **Output format:**
73
+ ```
74
+ ## Task Completion: [task description]
75
+ Starting URL: /
76
+ Target: [expected end state]
77
+
78
+ ### Step 1
79
+ Saw: [interactive elements from snapshot]
80
+ Chose: [@e3 "Sign Up"] — seemed like the right entry point
81
+ Result: navigated to /register
82
+
83
+ ### Step 2
84
+ Saw: [elements]
85
+ Confusion: Two buttons both say "Next" — unclear which one to use
86
+ Chose: [@e5 "Next" — top one] — guessed based on position
87
+ Result: form validation error, no field highlighted
88
+
89
+ ...
90
+
91
+ ### Summary
92
+ - Completed: YES / NO
93
+ - Steps taken: 7 (expected: 4)
94
+ - Dead-ends: 1 (tried Settings instead of Profile)
95
+ - Confusion points: 2 (duplicate "Next" buttons, unclear error)
96
+ - Blockers: 0
97
+ - Recommendation: [top 3 fixes]
98
+ ```
99
+
100
+ ---
101
+
102
+ ### 3. Navigation Audit
103
+
104
+ Test whether information architecture makes sense. Can the user find things where they expect them?
105
+
106
+ **How to run:**
107
+ 1. Take snapshot of main navigation: `qprobe browser snapshot -i -s "nav"` or `qprobe browser snapshot -i -d 2`
108
+ 2. For each target item, ask: "Where would a user look for [X]?"
109
+ 3. Follow the most logical path based ONLY on labels
110
+ 4. Record if the item was found, how many clicks, any wrong turns
111
+
112
+ **Tasks to test (adapt to the app):**
113
+ - Where are account settings?
114
+ - Where do I see my orders/history?
115
+ - How do I contact support?
116
+ - Where do I change my password?
117
+ - How do I delete my account?
118
+
119
+ **Output format:**
120
+ ```
121
+ ## Navigation Audit
122
+
123
+ | Task | Expected path | Actual path | Clicks | Found? | Issue |
124
+ |------|--------------|-------------|--------|--------|-------|
125
+ | Find settings | Profile → Settings | Profile → Settings | 2 | YES | — |
126
+ | Change password | Settings → Security | Settings → ??? | 3 | NO | No "Security" section visible |
127
+ | Delete account | Settings → Account → Delete | Settings → Account | 2 | NO | No delete option found |
128
+ ```
129
+
130
+ ---
131
+
132
+ ### 4. Accessibility Quick Audit
133
+
134
+ Check common accessibility issues using Probe's browser tools.
135
+
136
+ **How to run:**
137
+ ```bash
138
+ # Check for console errors/warnings related to a11y
139
+ qprobe browser console --grep "aria\|accessibility\|role\|alt"
140
+
141
+ # Check if all interactive elements have labels
142
+ qprobe browser snapshot -i
143
+ # → Look for elements with empty text or missing labels
144
+
145
+ # Check keyboard navigation
146
+ qprobe browser press Tab
147
+ qprobe browser press Tab
148
+ qprobe browser press Tab
149
+ # → Take snapshot after each Tab: is focus visible? Logical order?
150
+
151
+ # Check contrast (via JS)
152
+ qprobe browser eval "getComputedStyle(document.body).color"
153
+ qprobe browser eval "getComputedStyle(document.body).backgroundColor"
154
+
155
+ # Check images for alt text
156
+ qprobe browser eval "document.querySelectorAll('img:not([alt])').length"
157
+
158
+ # Check form labels
159
+ qprobe browser eval "document.querySelectorAll('input:not([aria-label]):not([id])').length"
160
+ ```
161
+
162
+ **Checklist:**
163
+ - [ ] All images have alt text
164
+ - [ ] All form inputs have labels
165
+ - [ ] Focus is visible on Tab navigation
166
+ - [ ] Tab order is logical (follows visual layout)
167
+ - [ ] No empty buttons/links (text or aria-label)
168
+ - [ ] Color is not the only way to convey information
169
+ - [ ] Interactive elements are reachable by keyboard
170
+ - [ ] No console accessibility warnings
171
+
172
+ ---
173
+
174
+ ### 5. A/B Flow Comparison
175
+
176
+ Compare two versions of the same flow side by side.
177
+
178
+ **How to run:**
179
+ 1. Run the same task on version A, record steps and observations
180
+ 2. Run the same task on version B
181
+ 3. Compare structured output
182
+
183
+ ```bash
184
+ # Version A
185
+ qprobe browser open /checkout-v1
186
+ qprobe browser snapshot -i
187
+ # ... complete the flow, note steps, errors, confusion ...
188
+
189
+ # Version B
190
+ qprobe browser open /checkout-v2
191
+ qprobe browser snapshot -i
192
+ # ... same task, same criteria ...
193
+ ```
194
+
195
+ **Output format:**
196
+ ```
197
+ ## A/B Comparison: [flow name]
198
+
199
+ | Metric | Version A | Version B |
200
+ |--------|-----------|-----------|
201
+ | Steps to complete | 5 | 3 |
202
+ | Console errors | 1 | 0 |
203
+ | Network errors | 0 | 0 |
204
+ | Confusion points | 2 | 1 |
205
+ | Dead-ends | 1 | 0 |
206
+
207
+ ### Version A issues
208
+ - Step 3: unclear which "Continue" button to click
209
+ - Step 4: form resets on validation error
210
+
211
+ ### Version B improvements
212
+ - Combined steps 2-3 into single form
213
+ - Inline validation prevents submit errors
214
+
215
+ ### Recommendation: Version B — fewer steps, fewer confusion points
216
+ ```
217
+
218
+ ---
219
+
220
+ ### 6. Error State Audit
221
+
222
+ Systematically test how the app handles bad input and edge cases.
223
+
224
+ **How to run:**
225
+ 1. Find all forms: `qprobe browser snapshot -i` → look for textbox/select elements
226
+ 2. For each form, test:
227
+ - Submit empty
228
+ - Submit with invalid data (wrong email format, too short, special characters)
229
+ - Submit with extremely long input
230
+ - Double-click submit button
231
+ 3. Check: Are errors visible? Specific? Helpful? Does the form preserve valid input?
232
+
233
+ ```bash
234
+ qprobe browser fill @e1 ""
235
+ qprobe browser click @e3
236
+ qprobe browser snapshot --diff
237
+ qprobe browser console --level error
238
+ ```
239
+
240
+ ---
241
+
242
+ ## Tips
243
+
244
+ - **Always check logs first** — `qprobe browser console --level error` and `qprobe browser network --failed` reveal issues before you start evaluating visuals
245
+ - **Use snapshot -i** for every evaluation step — it's your primary "what does the user see" tool
246
+ - **Use snapshot --diff** after actions to see exactly what changed
247
+ - **Screenshot --annotate** when you need visual evidence for the report
248
+ - **Record important flows** while evaluating — `qprobe record start "ux-checkout"` gives you a free regression test as a bonus
249
+ - **Combine methods** — do a heuristic eval first (broad sweep), then task completion on the worst areas (deep dive)
250
+ - **Output as markdown** — all formats above are structured for easy sharing with team