| name | playwright-testing |
| description | Test web applications and games using Playwright on MiniPC. Use when verifying frontend functionality, debugging UI behavior, capturing screenshots, or QA testing games. Supports headless browser automation via nodes.run or browser.proxy. |
| metadata | {"author":"misskim","version":"1.0","origin":"Concept from Anthropic webapp-testing, adapted for Clawdbot + MiniPC environment"} |
Playwright Testing (MiniPC)
MiniPC์ ์ค์น๋ Playwright๋ฅผ ํ์ฉํ ์น์ฑ/๊ฒ์ ํ
์คํธ.
ํ๊ฒฝ
- ์คํ ์์น: MiniPC (nodes.run ๋๋ browser.proxy)
- ๋ธ๋ผ์ฐ์ : Chromium headless
- ์ฉ๋: ๊ฒ์ QA, ์น์ฑ ๊ธฐ๋ฅ ํ
์คํธ, ์คํฌ๋ฆฐ์ท, ์ฝ์ ๋ก๊ทธ ์บก์ฒ
ํ๋จ ํธ๋ฆฌ
ํ
์คํธ ๋์ โ ์ ์ HTML์ธ๊ฐ?
โโ Yes โ ํ์ผ ๋ด์ฉ ์ง์ ์ฝ์ด ์
๋ ํฐ ํ์
โ โ Playwright ์คํฌ๋ฆฝํธ๋ก ์๋ํ
โโ No (๋์ ์น์ฑ) โ ์๋ฒ ์คํ ์ค์ธ๊ฐ?
โโ No โ ์๋ฒ ๋จผ์ ์คํ (MiniPC์์)
โโ Yes โ ์ ์ฐฐ-ํ๋ ํจํด:
1. ํ์ด์ง ์ด๋ + networkidle ๋๊ธฐ
2. ์คํฌ๋ฆฐ์ท ๋๋ DOM ๊ฒ์ฌ
3. ์
๋ ํฐ ํ์
4. ๋์ ์คํ
ํต์ฌ ํจํด
์ ์ฐฐ-ํ๋ (Reconnaissance-Then-Action)
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('http://localhost:PORT')
page.wait_for_load_state('networkidle')
page.screenshot(path='/tmp/inspect.png', full_page=True)
buttons = page.locator('button').all()
page.click('text=Start Game')
browser.close()
๊ฒ์ QA ํ
์คํธ
page.goto('http://localhost:9877/game.html')
page.wait_for_load_state('networkidle')
canvas = page.locator('canvas')
assert canvas.is_visible()
page.click('canvas', position={'x': 400, 'y': 300})
page.wait_for_timeout(1000)
score = page.locator('#score').inner_text()
page.screenshot(path='/tmp/game-test.png')
errors = []
page.on('console', lambda msg: errors.append(msg.text) if msg.type == 'error' else None)
โ ๏ธ ํต์ฌ ์ฃผ์์ฌํญ
- networkidle ๋จผ์ ! ๋์ ์ฑ์ ๋ฐ๋์ JS ์คํ ์๋ฃ ํ DOM ๊ฒ์ฌ
- headless=True ํ์ (MiniPC์ ๋ชจ๋ํฐ ์์)
- MiniPC์์ ์คํ โ ๋งฅ ์คํ๋์ค์์ ์ง์ ๋ธ๋ผ์ฐ์ ๊ธ์ง
- ์ฝ๋ ๋ฆฌ๋ทฐ๋ง์ผ๋ก QA ๋ถ์ถฉ๋ถ โ ์ค์ ํ๋ ์ด ํ
์คํธ ํ์
- browser.proxy ๋๋ nodes.run ํ์ฉ
Clawdbot์์ ์คํ ๋ฐฉ๋ฒ
# ๋ฐฉ๋ฒ 1: browser tool (proxy)
browser action=navigate target=node node=MiniPC targetUrl="http://localhost:9877/game.html"
browser action=screenshot target=node node=MiniPC
# ๋ฐฉ๋ฒ 2: nodes.run์ผ๋ก Python ์คํฌ๋ฆฝํธ ์คํ
nodes.run node=MiniPC command=["python3", "test_script.py"]