| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /marionette:smoke |
| Category | cocode-flutter |
| Complexity | simple |
| MCP Servers | marionette |
/marionette smoke โ ํ๋ฉด๋ค์ด ์ผ๋จ ์ ๋จ๋์ง ๋น ๋ฅด๊ฒ ์ ๊ฒ#
ํ๋ง๋๋ก#
์ฑ์ ์ฃผ์ ํ๋ฉด๋ค์ ํ๋์ฉ ์๋์ผ๋ก ์ด์ด๋ณด๊ณ "์ ์์ ์ผ๋ก ๋ด๋์ง, ์๋ฌ๋ ์๋์ง"๋ง ๋น ๋ฅด๊ฒ ํ์ธํ๋ ์ ๊ฒ์ ๋๋ค. ๊ฑด๋ฌผ์ ๋๊ธฐ๊ธฐ ์ ์ ๊ฐ ๋ฐฉ์ ๋ถ์ด ์ผ์ง๋์ง ์ค์์น๋ง ๋๋ฌ๋ณด๊ณ ๋๋ ๊ฒ๊ณผ ๊ฐ์์. ๊ฐ๊ตฌ ํ๋ํ๋๋ฅผ ๋ง์ ธ๋ณด๋ ์ ๋ฐ ์ ๊ฒ์ ์๋๋๋ค.
๋๊ฐยท์ธ์ ์ฐ๋์#
- ์ฝ๋๋ฅผ ํฉ์น๊ธฐ(merge) ์ง์ ์, ์ฃผ์ ํ๋ฉด๋ค์ด ๊นจ์ง์ง ์์๋์ง ๊ฐ๋ณ๊ฒ ํ์ธํ๊ณ ์ถ์ ๊ฐ๋ฐ์
- "๋ฐฉ๊ธ ๋ฐ๊พผ ๊ฒ ๋ค๋ฅธ ํ๋ฉด์ ๋ง๊ฐ๋จ๋ฆฌ์ง ์์๋"๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ณ ์ถ์ ๋
- CI(์๋ ๊ฒ์ฆ ํ์ดํ๋ผ์ธ)์ ๋ฃ์ด ํ๋ฉด์ด ๋จ๋์ง ์๋์ผ๋ก ๊ฒ์ฌํ๊ณ ์ถ์ ๋
ํ๋ฉด๋ณ๋ก ๋ฒํผยท์
๋ ฅ์นธ ํ๋ํ๋๊น์ง ์ง์ ๋๋ฌ๋ณด๋ฉฐ ๊น๊ฒ ๊ฒ์ฌํ๋ ค๋ฉด ์ด ๋ช
๋ น ๋์ sweep์ ์ฐ์ธ์.
๋ฌด์์ ํด์ฃผ๋์#
์ง์ ํ ํ๋ฉด๋ค์ ์ฐจ๋ก๋ก ์ด์ด๋ณด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํ ํด๋์ ์ ๋ฆฌํด ์ค๋๋ค.
screens/<route>.pngโ ๊ฐ ํ๋ฉด์ ์คํฌ๋ฆฐ์ทinteractive_summary.jsonโ ํ๋ฉด์ ์๋ ๋ฒํผยท์ ๋ ฅ์นธ ๋ฑ ์กฐ์ ๊ฐ๋ฅํ ์์์ ๊ฐ์์ ์ข ๋ฅerrors.txtโ ํ๋ฉด์์ ๋ฐ์ํ ์๋ฌ ๊ธฐ๋กsummary.mdโ ์ ์ฒด ํต๊ณผ/์คํจ ์์ฝ (CI์์ ์ฑ๊ณตยท์คํจ ํ์ ์ฉ๋๋ก ์ฌ์ฉ)
ํ์ ๊ธฐ์ค์ ๋จ์ํฉ๋๋ค. ๋ชจ๋ ํ๋ฉด์ด ์ ์์ ์ผ๋ก ๋จ๊ณ ์๋ฌ๊ฐ ์์ผ๋ฉด ํต๊ณผ, ์ด๋ค ํ๋ฉด์ด ์๋ฌ๋ฅผ ๋ด๊ฑฐ๋ ์๋ฌด ์์๋ ์๋ ๋น ํ๋ฉด(ํฐ ํ๋ฉด)์ด๋ฉด ์คํจ์ ๋๋ค.
์ด๋ป๊ฒ ์ฐ๋์#
/marionette smoke --routes=/home,/posts/123,/settings
--routes(ํ์) โ ์ ๊ฒํ ํ๋ฉด ๊ฒฝ๋ก๋ค์ ์ผํ๋ก ์ด์ด์ ์ ์ต๋๋ค. ์:/home,/posts,/settings-
--output(์ ํ) โ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ํด๋. ์ ์ ์ผ๋ฉด.claude/docs/marionette/smoke-<์๊ฐ>/์ ์๋ ์ ์ฅ๋ฉ๋๋ค.
์์์ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์#
์ง์ ํ ๊ฐ ํ๋ฉด๋ง๋ค ๋ค์์ ์์๋๋ก ํฉ๋๋ค.
- ํด๋น ํ๋ฉด์ผ๋ก ์ด๋ํฉ๋๋ค. (ํ๋ฉด์ ๋ด๋น๊ฒ์ด์ ๋ฒํผ์ ๋๋ฌ ์ด๋ํ๊ฑฐ๋, ์ฑ์ด ์ง์ํ๋ฉด ๊ฒฝ๋ก๋ก ๋ฐ๋ก ์ด๋)
- ํ๋ฉด ์คํฌ๋ฆฐ์ท์ ์ฐ์ต๋๋ค.
- ํ๋ฉด ์์ ์กฐ์ ๊ฐ๋ฅํ ์์(๋ฒํผยท์ ๋ ฅ์นธ ๋ฑ)์ ๊ฐ์์ ์ข ๋ฅ๋ฅผ ์ธ์ด ๊ธฐ๋กํฉ๋๋ค.
- ์๋ฌ ์์ค ์ด์์ ๋ก๊ทธ๊ฐ ์์ผ๋ฉด ๋์ด์ ์์ฝ์ ํ์ํฉ๋๋ค.
๋ชจ๋ ํ๋ฉด์ ๋ค ๋๋ฉด summary.md์ ์ ์ฒด ํต๊ณผ/์คํจ ๊ฒฐ๊ณผ๊ฐ ์ ๋ฆฌ๋ฉ๋๋ค.
โ๏ธ ์์ธ ์ต์ ยท์คํ ๋ช ์ธ (๊ฐ๋ฐ์ / AI ์์ด์ ํธ์ฉ)
Parameters#
| Parameter | Required | Description |
|---|---|---|
--routes | โ | Comma-separated route paths, e.g. /home,/posts,/settings |
--output | โ | Output dir (default .claude/docs/marionette/smoke-<ts>/) |
Behaviour#
For each route:
- Navigate via Marionette
tapon existing navigation elements OR โ if the app exposes agoNamed-style dynamic tool viacc-flutter-mcp-toolkitโ call that instead. take_screenshots.get_interactive_elements(count + types only โ saved to JSON).get_logsโ pull anything atLevel.erroror higher; surface insummary.md.
Pass / Fail#
- โ Pass: every route renders and produces no error log.
- โ Fail: route threw, or
get_interactive_elementsreturns empty (likely white screen).
Output#
.claude/docs/marionette/smoke- < ts > /
โโโ screens/ < route > .png
โโโ interactive_summary.json
โโโ errors.txt
โโโ summary.mdExample#
/marionette smoke --routes=/home,/posts/123,/settingsUse in CI by piping the agent prompt through a non-interactive runner; the command returns exit-code-style status in summary.md.