| name | playwright-parallel-test |
| description | Run parallel UI tests using 3 subagents with Playwright CLI. Tests form validation, navigation/routing, and responsive layout simultaneously. Use when the user wants to run comprehensive UI tests, parallel browser tests, or says "UI ํ
์คํธ", "ํผ ํ
์คํธ", "parallel test". |
| context | fork |
| model | sonnet |
์ญํ : ๋น์ ์ 3๊ฐ ์๋ธ์์ด์ ํธ๋ก UI๋ฅผ ๋ณ๋ ฌ ํ
์คํธํ๋ ํ๋ก ํธ์๋ QA ์๋ํ ์ ๋ฌธ๊ฐ์
๋๋ค.
์ปจํ
์คํธ: ์ข
ํฉ UI ํ
์คํธ, ๋ณ๋ ฌ ๋ธ๋ผ์ฐ์ ํ
์คํธ ์์ฒญ ๋๋ "UI ํ
์คํธ", "ํผ ํ
์คํธ", "parallel test" ์ธ๊ธ ์ ํธ์ถ๋ฉ๋๋ค.
์ถ๋ ฅ: ํผ ๊ฒ์ฆยท๋ค๋น๊ฒ์ด์
/๋ผ์ฐํ
ยท๋ฐ์ํ ๋ ์ด์์ 3๊ฐ ์์ญ ๋ณ๋ ฌ ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ํตํฉ ๋ณด๊ณ ์๋ก ๋ฐํํฉ๋๋ค.
Playwright Parallel UI Test
3๊ฐ ์๋ธ์์ด์ ํธ๊ฐ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ด์ ์์ ๋์์ UI๋ฅผ ํ
์คํธํ๋ ๋ฉํ์คํฌ.
์ฌ์ ์กฐ๊ฑด
playwright-cli๊ฐ ์ค์น๋์ด ์์ด์ผ ํจ (npx playwright-cli --help)
- ํ
์คํธ ๋์ dev ์๋ฒ๊ฐ ์คํ ์ค์ด์ด์ผ ํจ (๊ธฐ๋ณธ:
http://localhost:3000)
- ํ๋ก์ ํธ ๋ฃจํธ์์ ์คํ
์คํ ์ ์ฐจ
Step 1: ๋์ ํ์ธ
์ฌ์ฉ์์๊ฒ ์๋๋ฅผ ํ์ธํ๋ค:
- ํ
์คํธ URL: dev ์๋ฒ ์ฃผ์ (๊ธฐ๋ณธ:
http://localhost:3000)
- ํ
์คํธ ๋ฒ์: ํน์ ํ์ด์ง/ํผ ๋๋ ์ ์ฒด ์ฌ์ดํธ
- ํค๋๋ ์ฌ๋ถ: ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ณด๋ฉด์ ํ ์ง (๊ธฐ๋ณธ: ํค๋๋ฆฌ์ค)
์ฌ์ฉ์๊ฐ URL๋ง ์ ๊ณตํ๋ฉด ๋๋จธ์ง๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์งํํ๋ค.
Step 2: 3-Agent ๋ณ๋ ฌ ์คํฐ
์๋ 3๊ฐ ์๋ธ์์ด์ ํธ๋ฅผ ๋์์ Agent ๋๊ตฌ๋ก ์คํฐํ๋ค.
Agent A: ํผ/์
๋ ฅ ๊ฒ์ฆ (Form Validation)
ํ๋กฌํํธ:
"playwright-cli๋ก {URL}์ ๋ชจ๋ ํผ์ ํ
์คํธํ๋ผ.
ํ
์คํธ ์๋๋ฆฌ์ค:
1. ๋น ๊ฐ ์ ์ถ โ ์๋ฌ ๋ฉ์์ง ํ์ธ
2. ์ ํจํ์ง ์์ ์ด๋ฉ์ผ ํ์ โ ๊ฒ์ฆ ์๋ฌ
3. ์ต์/์ต๋ ๊ธธ์ด ์๋ฐ โ ๊ฒ์ฆ ์๋ฌ
4. ์ ์ ๊ฐ ์ ์ถ โ ์ฑ๊ณต ํ์ธ
5. ํน์๋ฌธ์ ์
๋ ฅ โ XSS ๋ฐฉ์ง ํ์ธ
๊ฐ ํ
์คํธ:
- playwright-cli open {URL}
- playwright-cli snapshot โ ํผ ์์ ์๋ณ
- ์๋๋ฆฌ์ค๋ณ fill + click + snapshot
- ๊ฒฐ๊ณผ๋ฅผ ๋งํฌ๋ค์ด ํ
์ด๋ธ๋ก ์ ๋ฆฌ
- playwright-cli close
{ํค๋๋ ์ต์
: --headed ๋๋ ์๋ต}
๊ฒฐ๊ณผ ํ์: PASS/FAIL ํ
์ด๋ธ + ์คํฌ๋ฆฐ์ท ๊ฒฝ๋ก"
Agent B: ๋ค๋น๊ฒ์ด์
/๋ผ์ฐํ
(Navigation & Routing)
ํ๋กฌํํธ:
"playwright-cli๋ก {URL}์ ๋ค๋น๊ฒ์ด์
๊ณผ ๋ผ์ฐํ
์ ํ
์คํธํ๋ผ.
ํ
์คํธ ์๋๋ฆฌ์ค:
1. ๋ฉ์ธ ๋ค๋น๊ฒ์ด์
๋งํฌ ์ ์ฒด ํด๋ฆญ โ ์ฌ๋ฐ๋ฅธ ํ์ด์ง ๋๋ฌ ํ์ธ
2. 404 ํ์ด์ง โ ์กด์ฌํ์ง ์๋ ๊ฒฝ๋ก ์ ๊ทผ
3. ๋ค๋ก๊ฐ๊ธฐ/์์ผ๋ก๊ฐ๊ธฐ โ ํ์คํ ๋ฆฌ ์ ์ ๋์
4. ์ธ๋ถ ๋งํฌ โ target=_blank ํ์ธ
5. ์ต์ปค ๋งํฌ โ ์คํฌ๋กค ์์น ํ์ธ
๊ฐ ํ
์คํธ:
- playwright-cli open {URL}
- playwright-cli snapshot โ ๋ค๋น ์์ ์๋ณ
- ๋งํฌ๋ณ click + goto + snapshot
- ํ์ด์ง ํ์ดํ/URL ํ์ธ
- playwright-cli close
๊ฒฐ๊ณผ ํ์: ๋ผ์ฐํธ๋ณ PASS/FAIL ํ
์ด๋ธ"
Agent C: ๋ฐ์ํ ๋ ์ด์์ (Responsive Layout)
ํ๋กฌํํธ:
"playwright-cli๋ก {URL}์ ๋ฐ์ํ ๋ ์ด์์์ ํ
์คํธํ๋ผ.
๋ทฐํฌํธ 3์ข
:
1. Mobile: 375x812 (iPhone 14)
2. Tablet: 768x1024 (iPad)
3. Desktop: 1920x1080
๊ฐ ๋ทฐํฌํธ์์:
- playwright-cli open {URL}
- playwright-cli resize {width} {height}
- playwright-cli snapshot โ ๋ ์ด์์ ๊นจ์ง ํ์ธ
- playwright-cli screenshot --filename=responsive-{viewport}.png
- ํ๋ฒ๊ฑฐ ๋ฉ๋ด ๋์ ํ์ธ (๋ชจ๋ฐ์ผ)
- ํ
์คํธ ์๋ฆผ/์ค๋ฒํ๋ก์ฐ ํ์ธ
- playwright-cli close
๊ฒฐ๊ณผ ํ์: ๋ทฐํฌํธ๋ณ PASS/FAIL + ์คํฌ๋ฆฐ์ท ๊ฒฝ๋ก"
Step 3: ๊ฒฐ๊ณผ ์ข
ํฉ
3๊ฐ ์์ด์ ํธ ๊ฒฐ๊ณผ๋ฅผ ์์งํ์ฌ ์ข
ํฉ ๋ฆฌํฌํธ๋ฅผ ์์ฑํ๋ค:
# UI ํ
์คํธ ๊ฒฐ๊ณผ โ {URL}
> ์ผ์: {date} | ๋ฐฉ์: 3-Agent ๋ณ๋ ฌ
## ์์ฝ
| ์์ญ | ํ
์คํธ ์ | PASS | FAIL | ๋น์จ |
|------|:-------:|:----:|:----:|:----:|
| ํผ ๊ฒ์ฆ | N | N | N | N% |
| ๋ค๋น๊ฒ์ด์
| N | N | N | N% |
| ๋ฐ์ํ | N | N | N | N% |
| **ํฉ๊ณ** | **N** | **N** | **N** | **N%** |
## FAIL ํญ๋ชฉ ์์ธ
(์๋ ๊ฒฝ์ฐ๋ง)
## ์คํฌ๋ฆฐ์ท
(๋ฐ์ํ ํ
์คํธ ์คํฌ๋ฆฐ์ท ๊ฒฝ๋ก)
Step 4: ๋ฆฌํฌํธ ์ ์ฅ
- Trine ์ธ์
์ค:
docs/reviews/{date}-ui-test-results.md
- ๋
๋ฆฝ ์คํ: stdout ์ถ๋ ฅ๋ง (ํ์ผ ์ ์ฅ ์ ํจ)
์ฌ์ฉ ์์
์ฌ์ฉ์: "/playwright-parallel-test http://localhost:3000"
์ฌ์ฉ์: "UI ํ
์คํธ ๋๋ ค์ค"
์ฌ์ฉ์: "ํผ ํ
์คํธ + ๋ฐ์ํ ํ
์คํธ ๋ณ๋ ฌ๋ก"
์ฃผ์์ฌํญ
- dev ์๋ฒ๊ฐ ์คํ ์ค์ด์ง ์์ผ๋ฉด ํ
์คํธ ์์ ์ ์๋ด
- WSL ํ๊ฒฝ์์๋ ํค๋๋ฆฌ์ค ๊ธฐ๋ณธ (WSLg ์ค์ ์์ผ๋ฉด ํค๋๋ ๋ถ๊ฐ)
- ์ธ์ฆ์ด ํ์ํ ํ์ด์ง๋ ์ฌ์ ์ state-save๋ก ์ธ์
์ ์ฅ ํ์
์คํจ ์ [[pev-self-correction]] ์ ์ฉ
Workflow ํตํฉ (๊ณํ์ P1)
๋ณ๋ ฌ/๋ค๋จ๊ณ ์คํ = Workflow ๋๊ตฌ๋ก ์ปจํ
์คํธ ๊ฒฉ๋ฆฌ + resume ์ง์. ํจํด: 3๊ฐ parallel() ๋์ (form/nav/layout).
์คํ: Workflow({ script: Bash("cat ~/.claude/skills/playwright-parallel-test/workflow.js") })
CLAUDE_CODE_DISABLE_WORKFLOWS=1 ์ ๊ธฐ์กด ๋ฐฉ์ fallback.