원클릭으로
qa
Run the E2E QA test suite against the live application using Playwright MCP and nREPL. Use when testing the app end-to-end.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run the E2E QA test suite against the live application using Playwright MCP and nREPL. Use when testing the app end-to-end.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Give your AI agents something more useful than a prompt. Velocity through clarity.
Visual quality gate — screenshot each primary screen, critique it against the baseline rubric, and refine the components until it passes. Use before declaring a build done.
Implement command handlers that validate state, emit events, and return signals using the Grain framework
Create scheduled background jobs that run on cron schedules
Implement query handlers that read from event-sourced read models and render hiccup
Build read models by reducing events into queryable state with defreadmodel
| name | qa |
| description | Run the E2E QA test suite against the live application using Playwright MCP and nREPL. Use when testing the app end-to-end. |
| argument-hint | [script-number | range | comma-list | 'all' | 'next' | 'status'] |
Execute the structured QA test scripts in qa/scripts/ against the live application.
!cat qa/scripts/progress.md
The QA suite is split into 20 individually-executable test scripts in qa/scripts/. Each script:
/qa or /qa next — Run the next incomplete script (first — status in progress.md)/qa all — Run all scripts from the beginning (Session 1 through Session 5)/qa 03 or /qa 3 — Run a specific script by number (e.g., 03-owner-locations.md)/qa status — Show current progress.md without running anything/qa 03-08 — Run a range of scripts sequentially/qa 00,03,05,21 — Run a comma-separated list of specific scripts in the order given. Whitespace around commas is ignored./qa 00,03-05,21-23 — Mix ranges and single numbers in one invocation. Ranges are expanded left-to-right, duplicates are de-duped, and order of first appearance is preserved.Before running any script, read and internalize the rules in qa/scripts/EXECUTION-RULES.md. These are non-negotiable:
qa/scripts/progress.md with pass/fail/skip counts.--- break. Update progress.md as PARTIAL. Do NOT rush remaining items to "finish."Parse $ARGUMENTS:
next or empty: Read qa/scripts/progress.md, find the first row with Status —, that's the script to run.all: Start from script 00.3, 03, 15): Run that specific script. Zero-pad to 2 digits to find the file.03-08): Run scripts 03 through 08 sequentially.00,03,05,21): Split on ,, trim whitespace around each token, zero-pad each to 2 digits, and run them in the order given. Empty tokens are ignored.00,03-05,21-23): Each comma-separated token is parsed independently — a bare number becomes a single script, a NN-MM token expands to the contiguous range. Concatenate the results left-to-right, de-duplicate while preserving first appearance, and run in that final order.status: Print progress.md and stop.When the parsed input resolves to multiple scripts (range, comma list, or mixed), follow the same "Continue or stop" rules from step 5 — report progress between scripts and stop early if any individual script takes a long time. Do NOT rush later scripts in the list to finish the batch.
If running script 00, or if this is the first script in a session:
/nrepl-connect(resolve 'user/app) and whether it's bound.(require '[cjbarre.grain-todo-list :as app])(def app (app/start))tools/invoke-command!; see /verify-ui for the sign-up + verify-email flow).To restart cleanly, stop and start the Integrant system: (app/stop app) then
(def app (app/start)).
If the system is already running and seeded (script 00 shows completed in progress.md), skip to step 3.
qa/scripts/{NN}-{name}.mdqa/scripts/EXECUTION-RULES.mdbrowser_navigate or browser_click, verify URL/page titlebrowser_snapshot and verify expected elements/textbrowser_take_screenshot with the specified filenameAfter completing the script, append the results section to the script file:
---
## Results
**Date**: [today's date]
**Status**: PASS | PARTIAL | FAIL
**Pass**: X / Y
**Failures**:
- TEST X.Y: [description]
**Notes**: [anything relevant]
Then update qa/scripts/progress.md — change the row's Status, Pass, Fail, Skip, and Date columns.
all: proceed to the next script.browser_navigate, browser_snapshot, browser_click, browser_type, browser_fill_form, browser_select_option, browser_take_screenshot, browser_press_key, browser_wait_formcp__nrepl__eval_form for data verification and seedingcurl for webhook testing. For a clean restart, stop/start the system from the
REPL: (app/stop app) then (def app (app/start))Scripts are grouped into 5 sessions (see qa/scripts/RUN-ORDER.md). Each session is designed for one conversation. If running all, respect these boundaries — when you finish a session's scripts, report progress and suggest continuing in a new conversation to avoid context degradation.