
Code-as-action์ ์๋ ฅ๐ฅ Webwright ๋์ ์ผ๋ก 3์ผ ๊ท๋ชจ์ E2E ํ ์คํธ ์คํ์ด 30๋ถ์ด ๋์๋คโ๏ธ
์์ฝ
Webwright๋ฅผ ํ์ฉํ์ฌ E2E ํ ์คํธ ์๊ฐ์ 3์ผ์์ 30๋ถ์ผ๋ก ๋จ์ถํ ์ฌ๋ก๋ฅผ ์๊ฐํฉ๋๋ค. ์ขํ ์์ธก ๋ฐฉ์ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ AI๊ฐ ์ค์ค๋ก ๊ฒ์ฆํ๋ 'Code-as-action' ์ค๊ณ์ ๊ฐ๋ ฅํจ์ ๊ฐ์กฐํฉ๋๋ค.
ํต์ฌ ํฌ์ธํธ
- Code-as-action ๋ฐฉ์์ด ๊ธฐ์กด์ ์ขํ ์์ธก ๋ฐฉ์๋ณด๋ค ์๋์ ์ผ๋ก ๊ฐ๋ ฅํจ
- Webwright๋ Claude Code์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋์ํ๋ฉฐ ๋์ ์ ๋ฐ๋๋ฅผ ์ ๊ณตํจ
- AI๊ฐ ์ฝ๋๋ฅผ ์์ฑ, ์คํ, ๊ฒ์ฆ, ์์ ํ๋ ๋ฃจํ๋ฅผ ํตํด ํ ์คํธ ์์ฑ๋๋ฅผ ๋์
- ์์ธํ ์ง์ ์์ด๋ ์์คํ ์ ์ดํดํ๊ณ ์๋ฒฝํ Playwright ์คํฌ๋ฆฝํธ ์์ฑ ๊ฐ๋ฅ
๊ฒฐ๋ก
E2E ํ ์คํธ๋ฅผ ํธํ๊ฒ ํ๊ณ ์ถ์ด์ Webwright๋ฅผ ๋ง์ ธ๋ณด๋ค๊ฐ, ํ ์คํธ์ ํ์ ๋์ด์ โ๊นจ๋ฌ์โ์ ๋๋ฌํ์ต๋๋ค.
- Web ์์ด์ ํธ์ ์ ๋ฐ๋๋ ใAI์๊ฒ ๋ฌด์์ ์ํฌ ๊ฒ์ธ๊ฐใ๊ฐ ์ค์ํ ์์์ธ ๊ฒ ๊ฐ์ต๋๋ค.
- Web ์์ด์ ํธ๋ ํ๋ฉด์ ๋ณด๊ณ ใ๋ค์์ ์ด๋๋ฅผ ๋๋ฅผ์งใ๋ฅผ ์์ธกํ๋
**์ขํ ์์ธก (coordinate prediction)**๋ณด๋ค, ์กฐ์์ ์ฝ๋๋ก ์์ฑํ์ฌ ์คํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ AI ์ค์ค๋ก ๊ฒ์ฆํ๊ฒ ํ๋ ๊ฒ์ด ์๋์ ์ผ๋ก ๊ฐ๋ ฅํฉ๋๋ค.
๊ทธ๊ฒ์ ํ๋ฅญํ๊ฒ ์ฒด๊ฐํ๊ฒ ํด์ค ๊ฒ์ด Webwright๋ผ๋ ํฐ๋ฏธ๋ ๋ค์ดํฐ๋ธ Web ์์ด์ ํธ์
๋๋ค. ๊ณต์์์๋ "Code-as-action beats coordinate prediction" (์ฝ๋๋ฅผ ์ก์
์ผ๋ก ๋ง๋๋ ๋ฐฉ์์ด ์ขํ ์์ธก์ ์ด๊ธด๋ค)๋ผ๊ณ ๋งํ๊ณ ์์ต๋๋ค. - ๊ทธ ๊ฐ๋ ฅํจ์ ์ ์ฒด๋ ํน๋ณํ ๋ชจ๋ธ์ด ์๋๋ผ
์ค๊ณ์ ์์์ต๋๋ค. ํจ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฒ์ ใ์ฝ๋๋ฅผ ์์ฑํ๋ค โ ์คํํ๋ค โ AI ์ค์ค๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ค โ ํต๊ณผํ ๋๊น์ง ์์ ํ๋คใ๋ผ๋ ์ผ๋ จ์ ๋ฃจํ, Code-as-action์
๋๋ค. - AI์๊ฒ ์ง์ ์ํค๋ ๊ฒ์ด ์๋๋ผ ใ
๋์ํ๋ ๊ฒ์ ๋ง๋ค๊ฒ ํ๊ณ , AI์๊ฒ ๊ฒ์ฆํ๊ฒ ํ๋ฉฐ, ์ฑ๊ณตํ ๋๊น์ง ์์ ํ๊ฒ ํ๋ค". ์ด ์ฌ๊ณ ๋ฐฉ์์ E2E ํ
์คํธ๋ฅผ ๋์ด ๊ด๋ฒ์ํ๊ฒ ํ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์งํ, ์ง๊ธ๊น์ง Web ์์ด์ ํธ์๋ ๋ณ๋ก ๊ธฐ๋ํ์ง ์์๋ค
E2E ํ ์คํธ์ ์ผ์ด์ค ์์ฑ์ ์์ํ๊ณ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ์ ๋๋ค. ํนํ ๋์ ์์คํ ์ ๋ํด ์ ๋ชจ๋ฅด๋ ์ฌ๋์๊ฒ ๋งก๊ธธ ๊ฒฝ์ฐ์๋ ์์ฃผ ์์ธํ๊ฒ ์กฐ์์ ์ง์ํด์ผ ํฉ๋๋ค.
์ค์ํ๋ ๊ฒ๋ ํ๋ญ๋๋ค. ํ๋ฉด์ ์กฐ์ํ๊ณ , ํผ์ ์ฑ์ฐ๊ณ โฆ, ๊ธฐ๋ํ ๋๋ก์ ์ํ๊ฐ ๋์๋์ง๋ฅผ ์๋น๋์ค(evidence)๋ก ๋จ๊ธด๋ค. ์ด๊ฒ์ ์ฌ๋์ด ์ํํ๋ฉด ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
๊ทธ๋ ๋ค๊ณ Playwright๋ก ์ฎ๊ฒจ ์ ๋ ๊ฒ๋ ๋ํ ํ๋ ์ผ์ ๋๋ค.
ใ๊ทธ๋ผ AI (Web ์์ด์ ํธ)์๊ฒ ์์ผ๋ณผ๊นใ โโ ๊ทธ๋ ๊ฒ ์๊ฐํ์ฌ ์ด์ ๋ถํฐ ์๋ํด ๋ณด์์ต๋๋ค๋ง, ๊ฒฐ๊ณผ๋ ๊ทธ์ ๊ทธ๋ฌ์ต๋๋ค.
- ๋ชฉํํ ์ฅ๋ฉด์์ ์๋น๋์ค์ฉ ์คํฌ๋ฆฐ์ท์ด ์ฐํ์ง ์์
- ํ๋ฉด ์ ํ์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ์ฌ ใ๋ค์์ ์ด๋ ํ๋ฉด์ผ๋ก ์งํํด์ผ ํ๋์งใ๋ฅผ ์๋ชป ํ์ ํจ
- ๋ฆฌ์นํ UI (์ ๋๋ฉ์ด์ ์ด๋ ๋์ ๋ฌ์ฌ)๊ฐ ์๋์ผ ๊ฒฝ์ฐ, ๊ฐ์๊ธฐ ๊ฑฐ๋์ด ์์ํด์ง
- ์คํ ๊ฒฐ๊ณผ๋ฅผ Playwright ์คํฌ๋ฆฝํธ๋ก ๋จ๊ฒจ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ง๋ง, ์ ์ ์ค์ํ ๊ฑฐ๋์ด ๋ถ์์ ํ์ฌ ์ผ์ด์ค๋๋ก ๋์ง ์์
ใ์์ฌ์ด ๋ถ๋ถ๊น์ง๋ ๊ฐ ์ ์๋ค. ํ์ง๋ง ํ๋์ด๋ ์์ ์ด ๋๋ฌด ํ๋ค๋คใ๋ผ๋ ์ํ. ์ด๊ฒ์ด ์์งํ ์ฒด๊ฐ์ด์๋ค.
Webwright์ ๋งก๊ฒผ๋๋, ํ ์คํธ๊ฐ "๊ทธ๋๋ก" ์์ฑ๋์๋ค
๊ทธ๋ฐ ์ํฉ ์์์ Webwright (ClaudeCode์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ด์ฉ)๋ฅผ ์๋ํด ๋ณด์์ต๋๋ค.
ใ๋ญ, ์ด๋ ์ ๋ ๊ด์ฐฎ์ ๊ฒ์ ๋ง๋ค์ด์ง๊ฒ ์ง (์ด์ฐจํผ ๋์ค์ ์์ ์ ํ์ํ๊ฒ ์ง๋ง...)ใ ์ ๋๋ก ์๊ฐํ๊ณ ์์์ต๋๋ค.
ํ์ง๋ง ์ํ ์ผ์ ์คํํด ๋ณด์์ ๋, ์กฐ๊ธ ๋๋์ต๋๋ค.
์ ๊ฐ ์ ๋ฌํ ํ ์คํธ ์ ์ฐจ๋, "์๊ณ ์๋ ์ฌ๋"์ด ํ๋ค๋ ์ ์ ๋ก ๋ง๋ค์ด์ง ํ ์ค์ง๋ฆฌ ํ ์คํธ ์ผ์ด์ค์์ต๋๋ค.
ใ๊ณ์ ์ด ์์ฑ๋์ง ์์ ์ด๋ฉ์ผ ์ฃผ์๋ก, ๊ฒฐ์ ๋ด์ฉ ํ์ธ ํ๋ฉด๊น์ง ์ ํํ๋คใ
์ด๊ฒ๋ฟ์ ๋๋ค. ใ์ ์ข ์ ํ โ ํ๋ ์ ํ โ ๊ณ์ฝ์ ์ ๋ณด ์ ๋ ฅ โ ๋์ฝ ์ฒดํฌ โ ์นด๋ ์ ๋ณด ์ ๋ ฅ โ ๊ฒฐ์ ๋ด์ฉ ํ์ธ ํ๋ฉด์ ๋๋ฌใ์ด๋ผ๋ ๋์ ์ ์ผ์ ์ค๋ช ํ์ง ์์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ๋ ์์ฑ๋ ์คํฌ๋ฆฝํธ๋, ใ์์คํ ์ ์ดํดํ๊ณ ์๋ ์ฌ๋์ด ์ํํ ํ ์คํธใ ๊ทธ ์์ฒด์์ต๋๋ค.
- ๊ฐ ํ๋ฉด์ ํ์ ํญ๋ชฉ์ ์ฌ๋๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ฉด์ ๋ณด๋ฉด์ AI๊ฐ ์ฑ์ ๋๊ฐ๋ค
- ๋จ๊ณ๋ง๋ค ์คํฌ๋ฆฐ์ท๊ณผ ๋๋ฌ URL์ ์๋น๋์ค๋ก ๋จ๊ธด๋ค
- ใ๊ฒฐ์ ์๋ฃ ํ๋ฉด๊น์ง ์งํํ์ง ์๋๋ค (ํ์ ๋ฒํผ์ ๋๋ฅด์ง ์๋๋ค)ใ๋ผ๋, ์ง์์ ์๋ ์๋ฌต์ ์ธ ์ ์ฝ๋ ์งํจ๋ค
์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ๋ค ์ถ์ด ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต์งธ๋ก ๋์ ธ ๋ฃ์์ต๋๋ค.
๋ฌผ๋ก ์์ ์ ํ์ํ์ง๋ง, ๊ฑฐ์ ์๋ฒฝํ ํ ์คํธ ์ฝ๋๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค.
์์ฑ๋ Playwright ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ฆฌ๋ ๋ฐ ํ์ํ ์๊ฐ์ ์ฝ 30๋ถ๊ฐ. ์ง๊ธ๊น์ง ์ฌ๋์ด 3์ผ ๋์ ์ํํ๋ ๋ถ๋์ ํ ์คํธ์ ๋๋ค.
์ด์ ์ ใ์์ฌ์ดใ ๋๋์ด ๊ฑฐ์ง๋ง ๊ฐ์์ต๋๋ค. ๋๊ฐ์ Playwright๊ฐ ๋ฒ ์ด์ค์ผ ํ ๋ฐ, ์ ์ด๋ ๊ฒ๊น์ง ๋ค๋ฅธ ๊ฒ์ผ๊น.
ํต์ฌ์ "Code-as-action"์ด์๋ค
Webwright์ README๋ฅผ ์ฝ์ด ๋ด๋ ค๊ฐ๋ค ๋ณด๋ ใ์, ์ด๊ฑฐ๋คใ๋ผ๊ณ ์๊ฐํ ๋ฌธ์ฅ์ด ์์์ต๋๋ค.
๊ฐ์ง๊ณ ์๋ Web ์์ด์ ํธ๊ฐ ๊ทธ์ ๊ทธ๋ฌ๋ ์ด์ ๊ฐ ๋ฉ๋๋์์ต๋๋ค.
๐ง Code-as-action์ด ์ขํ ์์ธก (coordinate prediction)์ ์๋ํ๋ค: Webwright๋ ๋ชจ๋ ๋์ด๋ ๊ตฌ๋ถ์์ ์ฌํ๋ GPT-5.4์ ใ์คํฌ๋ฆฐ์ท + xy ์ขํใ ๋ฒ ์ด์ค๋ผ์ธ์ ์ค์ง์ ์ผ๋ก ํฌ๊ฒ ์ํํ๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
์กฐ๊ธ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. ์ง๊ธ๊น์ง์ Web ์์ด์ ํธ๋ ํฌ๊ฒ ๋ ๊ฐ์ง ํ์ ์ด ์์ต๋๋ค.
์ค๋ ์ทํ (Snapshot type): ํ๋ฉด์ ์ ๊ทผ์ฑ ํธ๋ฆฌ (Accessibility Tree)๋ฅผ ๋ณด๊ณ , ์ค๋น๋ ์กฐ์ (click / type) ์ค์์ ใ๋ค์์ ๋ง์ง ์์ใ๋ฅผ ํ๋์ฉ ์ ํํจ
์ขํ ์์ธก (coordinate prediction)ํ: ์คํฌ๋ฆฐ์ท (์ด๋ฏธ์ง)์ ๋ณด๊ณ , ใ๋ค์์ ๋๋ฅผ ์์น (xy ์ขํ)ใ๋ฅผ ์์ธกํจ
๋ถ๋ฅด๋ ๋ฐฉ์์ ๋ฌ๋ผ๋, ๋ ๋ค ๋ณธ์ง์ **ใ๋ค์ ์กฐ์์ "์์ธกํ๋" ๊ฒใ**์ ๋๋ค. ์์ธก์ด ํ๋ฆฌ๊ฑฐ๋ ํ๋ฉด์ด ์กฐ๊ธ๋ง ์์ง์ฌ๋ ๊ธ์ธ ์ทจ์ฝํด์ง๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ ์ ์ ๊ฐ ใ์์ฝ๋คใ๊ณ ๋๊ผ๋ ๊ฒ๋ ๋ฐ๋ก ์ด "์์ธก์ ์์กดํ๋" ๋๋ ๋๋ฌธ์ด์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ธก์ ์์กดํ์ง ์์ผ๋ ค๋ฉด ์กฐ์์ ์์ฃผ ์์ธํ๊ฒ ์ง์ ํด์ผ๋ง ํฉ๋๋ค...
๋ฐ๋ฉด Webwright๋ ๋ฐ์์ด ๋ฐ๋์ ๋๋ค. ใ๋ค์์ ์ด๋๋ฅผ ๋๋ฅผ์งใ๋ฅผ ์์ธกํ๋ ๋์ , ์กฐ์์ Playwright ์ฝ๋๋ก ์์ฑํ์ฌ ์คํํฉ๋๋ค. AI์๊ฒ๋ ํฐ๋ฏธ๋์ด ์ฃผ์ด์ง๊ณ , ์ฝ๋๋ฅผ ์ฐ๊ณ ์คํํ๊ณ , ์ถ๋ ฅ์ ๋ณด๊ณ ์์ ํ๊ณ , ๋ค์ ์คํํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
"์กฐ์"์ ์ฝ๋๋ก ํํํ๊ณ ์คํ๊ณผ ์์ ์ ๋ฃจํ๋ฅผ ๋ฐ๋ณตํ๋ ๊ฒ. ์ด๊ฒ์ด Webwright๊ฐ ๋งํ๋ Code-as-action์ ๋๋ค. ๊ณต์ ๋ฒค์น๋งํฌ์ ๋ฐ๋ฅด๋ฉด, ์ด ๋ฐฉ์์ ์ขํ ์์ธกํ ๋ฒ ์ด์ค๋ผ์ธ์ ๋ชจ๋ ๋์ด๋์ ์ผ์ด์ค์์ ์์ง๋ ๋ค๊ณ ํฉ๋๋ค.
์์๋ค์ํผ ์ฝ๋ฉ ์์ด์ ํธ๋ ์๋ ใ์ฝ๋๋ฅผ ์ฐ๊ณ , ์คํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ , ์์ ํ๋ใ ๋ฃจํ์ ๋งค์ฐ ๋ฅ์ํฉ๋๋ค. Webwright๋ ๋ธ๋ผ์ฐ์ ์กฐ์์ AI๊ฐ ๊ฐ์ฅ ์ํ๋ ์์ญ์ผ๋ก ๋์ด๋ค์ธ ๊ฒ์ ๋๋ค.
์์ธก์ผ๋ก ์์ง์ด๋ ๋์ , ์ฝ๋๋ฅผ ์์ฑํด ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ฉฐ ์์ ์ ๋ฐ๋ณตํ๋ค.
๋ฃ๊ณ ๋ณด๋ ๋น์ฐํ ์ด์ผ๊ธฐ์ ๋๋ค. ํ์ง๋ง ์ค์ ๋ก ๊ตฌํ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณด๊ณ ๋๋, ๋ง์น ์ฝ๋ผ๋ฒ์ค์ ๋ฌ๊ฑ์ ๋ณธ ๊ฒ ๊ฐ์์ต๋๋ค.
๊ฒ์ฆ: ๋ณธ์ง์ด "์ฝ๋๋ฅผ ์ฐ๊ฒ ํ๋ ๊ฒ"์ด๋ผ๋ฉด, ์์ฒด Skill๋ก๋ ์ฌํํ ์ ์์ง ์์๊น?
์ฌ๊ธฐ์ ์ ์ ์ฌ์ ๊ถ์ ํ๊ตฌ์ฌ์ด ๋ฐ๋ํฉ๋๋ค.
ใWebwright์ ๋ณธ์ง์ด ํฐ๋ฏธ๋์ ๋๊ฒจ์ฃผ์ด ์ฝ๋๋ฅผ ์ฐ๊ฒ ํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ค์ค๋ก ๊ฒ์ฆํ๊ฒ ํ๋ ์ค๊ณ์ ์๋ค๋ฉด,
ClaudeCode + Playwright + ์์ฒด Skill ์ ๋๋ง์ผ๋ก๋ ๋น์ทํ ๋์์ ํ๋๋ก ์ง์ํ๋ฉด ๊ฑฐ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์๊น?ใ
์ํํด๋ณด๊ณ ์ถ์ด์ ์ง์ ํด๋ดค์ต๋๋ค. Webwright ๋์ microsoft/playwright-cli๋ฅผ ์ฌ์ฉํ๊ณ , ๋ช
๋ น์ด ํ๋(=์กฐ์ ํ๋)๋ฅผ ์คํํ ๋๋ง๋ค ์ถ๋ ฅ์ด๋ ์คํฌ๋ฆฐ์ท์ Claude๊ฐ ์ง์ ์ฝ์ด ์ฑํจ๋ฅผ ํ์ธํ๊ณ , ์คํจํ๋ฉด ๋ฐฉ๋ฒ์ ๋ฐ๊ฟ ๋ค์ ์กฐ์์ ๊ฒฐ์ ํ๋ ๋ํํ ๋ฃจํ(dialogue loop)๋ก ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ตฌ๋ํ๋๋ก ํ์ต๋๋ค.
๊ทธ๋ ๊ฒ ๋ค๋ฌ์ ์ ์ฐจ๋
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Python ์คํฌ๋ฆฝํธ๋ก ๋จ๊ธฐ๊ณ , ์ด ์ญ์ ์คํ๊ณผ ๊ฒ์ฆ์ ๋ฐ๋ณตํ๋ฉฐ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์์ ํ ์ฌ์คํํ๋ค. ์ ๋ถ ํต๊ณผํ ๋๊น์ง ์ด๋ฅผ ๋ฐ๋ณตํ๋ค.
์ด๋ฐ Skill์ ์ง์ ์ ์ํ์ต๋๋ค.
๋ํ ๋น๊ตํ๊ธฐ ์ฝ๋๋ก ๊ฒฐ๊ณผ๋ฌผ์ Webwright์ ๋์ผํ๊ฒ ๋ง์ท์ต๋๋ค.
plan.md: ํ
์คํธ ์คํ ๊ณํ. **Parameters (ํ๋ผ๋ฏธํฐ ํ)**์ **Critical Points (๊ฒ์ฆ ์ฒดํฌ๋ฆฌ์คํธ)**๋ฅผ ๊ธฐ์ฌ
final_script.py: ์ต์ข
๊ฒฐ๊ณผ๋ฌผ. ์ธ์๋ก ๊ฐ์ ๊ต์ฒดํ์ฌ ์ฌ์คํํ ์ ์๋ ํ๋ผ๋ฏธํฐํ๋ Python ์คํฌ๋ฆฝํธ (๊นจ์ง๊ธฐ ์ฌ์ด ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด **์์ ์ ์ธ ์
๋ ํฐ (stable selector)**๋ฅผ ์ฌ์ด๋ )
final_runs/run_<id>/: ์คํ ์๋ง๋ค ๊ฒฉ๋ฆฌ๋๋ ์์
๋๋ ํ ๋ฆฌ. ํ์์ **์คํฌ๋ฆฐ์ท ์ฆ์ (screenshots/)**๊ณผ **์ก์
๋ก๊ทธ (final_script_log.txt)**๋ฅผ ๋จ๊น
๋น๊ต ์คํ: ๋ ํจํด์ ๋๋ํ ๋๊ณ ๋น๊ตํด ๋ณด์๋ค
์ผ์ด์ค 1: ์ฌํํ ์ ์๊ณ (ํ๋ก์ ํธ E2E์ ๋๋ถ๋ถ์ ์ด๊ฒ)
์ฃผ์ ๋ ์์ฌ์ ๋ณดํ ์ธํฐ๋ท ๋ชจ์ง ์ฌ์ดํธ์ ๋๋ค. ๊ฐ์ ๋์ ์ ์ดํ์ ๋ฐฉ์งํ๊ธฐ ์ํด ใSimple is bestใ ์์น์ ๋ฐ๋ผ ์ฒ ์ ํ ์ค๊ณ๋์ด ์์ผ๋ฉฐ, ์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ๋ E2E ์ผ์ด์ค์ ๋๋ถ๋ถ์ด ์ด ์์งํ ์ ์๊ณ์ ๋๋ค.
์๋ฅผ ๋ค์ด ใ๊ณ์ ๋ฏธ์์ฑ ์ด๋ฉ์ผ ์ฃผ์๋ก ๊ฒฐ์ ๋ด์ฉ ํ์ธ ํ๋ฉด๊น์ง ์ด๋ํ๋ใ ์ผ์ด์ค๋ฅผ ์์ฒด Skill๋ก๋ ๋๋ ค ๋น๊ตํด ๋ณด์์ต๋๋ค. ๊ฒฐ๊ณผ๋ โโ ๊ฑฐ์ ๋์ผํ์ต๋๋ค.
ํ ์ค์ ๊ฐ๊น์ด ์ง์๋ก๋ถํฐ ใ์
์ข
์ ํ ~ ๊ฒฐ์ ๋ด์ฉ ํ์ธ ํ๋ฉดใ๊น์ง์ ๋์ ์ ๊ตฌ์ฑํ๊ณ , ใํ์ ๋ฒํผ์ ๋๋ฅด์ง ์๊ณ ์ดํใ์ด๋ผ๋ ์ ์ฝ๋ ์ค์ํ๋ฉฐ, ๊ฐ CP(Checkpoint, ์ฒดํฌํฌ์ธํธ)๋ฅผ ์คํฌ๋ฆฐ์ท + ๋ก๊ทธ๋ก ๊ฒ์ฆํ ์ํ์์ final_script.py๊ฐ ์์ฑ๋์์ต๋๋ค.
์ผ์ด์ค 2: ์๊ฐ์ ์ธ ํ๋จ์ด ํ์ํ, ์ฝ๊ฐ ๋ฆฌ์นํ ์ ์๊ณ
๋ค์์ ใ์๊ฐใ์ด ํ์ํ ์ผ์ด์ค์ ๋๋ค. ์ ์๊ณ์ด๊ธด ํ์ง๋ง, ๋์ ์ผ๋ก ๊ทธ๋ ค์ง๋ ๋ฆฌ์นํ UI๋ฅผ ๊ฐ์ง ์ฌ์ดํธ์์ ํฉ๋ถ ํ์ ์กฐ๊ฑด์ด **ใ์กฐ์์ ๋ฐ๋ผ ํ์๋๋ ์ด๋ฏธ์ง์ ๋ชจ์ต์ด ๋ฐ๋๊ณ ์์ ๊ฒใ**์ด๋ผ๋, ์ด๋ฏธ์ง๋ฅผ ๋ณด๊ณ ํ๋จํ ์๋ฐ์ ์๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ด๋ฅผ Webwright์ ์์ฒด Skill ์์ชฝ์ผ๋ก ๊ตฌํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋๋ํ ๋น๊ตํ์ต๋๋ค.
| ๊ด์ | Webwright | ์์ฒด Skill (playwright-cli) |
|---|---|---|
| ํ ์คํธ ์คํ ๊ณํ ๋ด์ฉ | ์ฒดํฌํฌ์ธํธ๋ฅผ ์ค์ ํ์ฌ ํ์คํ ๊ฒ์ฆ | ๊ฑฐ์ ๋์ผ |
| ์์ฑ ์คํฌ๋ฆฝํธ์ ์ง | ๋์ | ๊ฑฐ์ ๋๋ฑ. ์ฐ์ด์ ๊ฐ๋ฆฌ๊ธฐ ์ด๋ ค์ |
| ์คํฌ๋ฆฐ์ท ์ดฌ์ ๋ฐฉ์ | ๊น๋ํจ | ์ฝ๊ฐ ๊ฑฐ์น ์ง๋ง ์ค์ฉ ๋ฒ์ ๋ด |
| ์ปจํ ์คํธ ์๋น | โโ | ๊ฑฐ์ ๋์ผ |
| ์ฒ๋ฆฌ ์๋ | ์ฝ๊ฐ ๋น ๋ฆ | ์ฝ๊ฐ ๋๋ฆฐ ์ ๋ (์ค์ฐจ ๋ฒ์ ์์ค) |
์ข ํฉ์ ์ผ๋ก, ๋ง๋ฆ์์ ๊ฑฐ์น ๋ถ๋ถ(ํ๋์ ์ฌ์ง)์ ๋๊ปด์ง์ง๋ง, ๋ณธ์ง์ ์ธ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ ๋์ผํ์ต๋๋ค. ์๊ฐ์ ํ๋จ์ด ํ์ํ ์ผ์ด์ค์์๋ ์์ชฝ ๋ชจ๋ ใ์ฒดํฌํฌ์ธํธ๋ฅผ ์ค์ ํ๊ณ , ์คํฌ๋ฆฐ์ท์ ์ง์ ๋ณด๊ณ ๊ฒ์ฆํ๋คใ๋ ๋์ผํ ์ ๋ต์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์๋ ดํ์ต๋๋ค.
์ฐธ๊ณ ๋ก ๋์ค์ Webwright์ ๋ฆฌํฌ์งํ ๋ฆฌ(Repository)๋ฅผ ์ดํด๋ณด๋, ํ๋ฌ๊ทธ์ธ์ ์ ์ฒด๋ ์ด ๋ฐ์๊ณผ ์ ์ฌํ ๊ฒ ๊ฐ์์ต๋๋ค. ์ญ์ ํต์ฌ์ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ํ์ฌ ์ค์ค๋ก ๊ฒ์ฆํ๊ฒ ๋ง๋๋ ๋ฃจํ(Loop)์๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ Skill์ ์๊ธฐ์ ์ด ์๋๋ผ, ใ์ค๊ณ์ ์ ํใ์ด์๋ค
์ฌ๊ธฐ์ ๊ฐ์กฐํ๊ณ ์ถ์ ์ ์, ์์ฒด Skill๋ก ์ฌํํ ์ ์์๊ธฐ ๋๋ฌธ์ Webwright๊ฐ ๋๋จํ๋ค๋ ์ด์ผ๊ธฐ๊ฐ ๊ฒฐ์ฝ ์๋๋ผ๋ ๊ฒ์ ๋๋ค. ์คํ๋ ค ๋ฐ๋์ ๋๋ค.
Webwright๊ฐ ๋ณด์ฌ์ค ๊ฒ์ ํ๋กฌํํธ(Prompt)์ ๋ฏธ์ธํ ํ๋์ด ์๋๋ผ, **์์ด์ ํธ(Agent)์๊ฒ ๋ฌธ์ ๋ฅผ ์ฃผ๋ ๋ฐฉ์ ์์ฒด๋ฅผ ๋ฐ๊พธ๋ ใ์ค๊ณ์ ์ ํใ**์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
AI์๊ฒ ์ขํ๋ฅผ ์์ธกํ๊ฒ ํ๋ ๊ฒ์ด ์๋๋ผ, ์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ํ๊ณ ์ค์ค๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๊ฒ ํ๋ค. ๊ทธ๋ ๊ธฐ์ ์์ด์ ํธ์ ๋ฅ๋ ฅ์ ์ต๋ํ์ผ๋ก ๋์ด๋ผ ์ ์์ต๋๋ค.
๊ณต์์์ ๊ณต๊ฐํ ํ๊ฐ ๊ฒฐ๊ณผ โโ ์ขํ ์์ธกํ ๋ฒ ์ด์ค๋ผ์ธ(Baseline)๊ณผ ๋น๊ตํ์ฌ Online-Mind2Web 86.7%, Odysseys 60.8%, ์๋์ ์ผ๋ก 35.1% ๊ฐ์ โโ ๊ฐ ๊ทธ ์ ๋น์ฑ์ ๋ท๋ฐ์นจํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"Code-as-action beats coordinate prediction"์ ์บ์นํ๋ ์ด์ฆ๊ฐ ์๋๋ผ ์ค์ธก๋ ๊ฒฐ๋ก ์ด์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณธ์ง์ด ์ค๊ณ์ ์๊ธฐ ๋๋ฌธ์, ๊ฐ์ ๋ฐ์์ผ๋ก ๊ฐ์ ๊ฒฐ๊ณผ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ ์ ๊ฒ์ฆ์ ๊ทธ ใ๋ณธ์ง์ ์ค๊ณ์ ์๋คใ๋ ๊ฐ์ค์ ์ฐ๋ฆฌ ์์ผ๋ก๋ ํ์ธํ ์ ์์๋ค๋ ์ ์ ๊ฐ์น๊ฐ ์์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ผ๋ฐํํ๋ฉด: ใAI๋ฅผ ์์ง์ด๊ฒ ํ๋ ๊ฒใ์ด ์๋๋ผ ใ์์ง์ด๋ ๊ฒ์ ๋ง๋ค๊ฒ ํ์ฌ ๊ฒ์ฆํ๊ฒ ํ๋ ๊ฒใ
์ด๋ฒ์๋ E2E ํ ์คํธ์ ๊ดํ ์ด์ผ๊ธฐ์์ง๋ง, ์ด ๋ฐ์์ ํจ์ฌ ๋ ๋๊ฒ ์ ์ฉ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ ๊ฐ์ฅ ํฐ ๋ฐฐ์์ด๋ผ๊ณ ๋๋ ์ ์ ๋ฐ๋ก ์ด๊ฒ์ ๋๋ค.
AI์๊ฒ ์ง์ ํ์คํฌ(Task)๋ฅผ "์คํ"ํ๊ฒ ํ๋ ๊ฒ์ด ์๋๋ผ, AI์๊ฒ "์์ง์ด๋ ์คํฌ๋ฆฝํธ"๋ฅผ ๋ง๋ค๊ฒ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ AI ์ค์ค๋ก ๊ฒ์ฆํ๊ฒ ํ๋ฉฐ, ์ฑ๊ณตํ ๋๊น์ง ๋ค์ ๋ง๋ค๊ฒ ํ๋ค.
๋ธ๋ผ์ฐ์ ์กฐ์์ ๊ตญํ๋์ง ์๊ณ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ , ์ธํ๋ผ ์กฐ์์ด๋ , ์ด๋ ํ ใ์ ๋ต์ ๊ด์ธกํ ์ ์๋ใ ํ์คํฌ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฃจํ๋ ์์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ฝ๋๋ก ์์ฑํ๊ฒ ํ๋ค
- ์คํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ด์ธกํ๋ค
- AI ์ค์ค๋ก ์ฑํจ๋ฅผ ๊ฒ์ฆํ๋ค
- ์ ๋๋ฉด ์์ ํ์ฌ ์ฌ์คํํ๋ค
ใAI๋ฅผ ์ ๋ค๋ฃจ๋ ๊ฒใ์ ๊ณ ๋ฏผํ๊ณ ์๋ ๋ถ๋ค์, ์ ์ด์ AI์๊ฒ ๋ฌด์์ ์ํค๊ณ ์๋์ง๋ฅผ ํ ๋ฒ ์ ๊ฒํด ๋ณด๋ฉด ๋ํ๊ตฌ๋ฅผ ์ฐพ์ ์ ์์์ง๋ ๋ชจ๋ฆ ๋๋ค.
Discussion

AI ์๋ ์์ฑ ์ฝํ ์ธ
๋ณธ ์ฝํ ์ธ ๋ Zenn AI์ ์๋ฌธ์ AI๊ฐ ์๋์ผ๋ก ์์ฝยท๋ฒ์ญยท๋ถ์ํ ๊ฒ์ ๋๋ค. ์ ์ ์๊ถ์ ์์ ์์์๊ฒ ์์ผ๋ฉฐ, ์ ํํ ๋ด์ฉ์ ๋ฐ๋์ ์๋ฌธ์ ํ์ธํด ์ฃผ์ธ์.
์๋ฌธ ๋ฐ๋ก๊ฐ๊ธฐ