.play DSL
선언적 한 줄로 브라우저·데스크톱을 조립. Python보다 짧고, Playwright보다 명시적이고, AI가 직접 쓸 수 있는 syntax. 자체 VM에서 바이트코드로 실행.
page.click("로그인 버튼")
page.fill("이메일", env("USER_EMAIL"))
result = page.smart_submit("#login-form")Technology
스크래이핑·자동화·증거 기록은 "열심히"로는 안 됩니다. 다섯 가지 엔진이 받쳐주기 때문에 ScreenPlay가 가능합니다.
Cypress·Playwright·Testim·Mabl은 "사람이 매주 selector 고치는" 전제 위에 설계됐습니다. ScreenPlay는 셀렉터를 AI가 다시 찾고, 차단되면 우회 경로를 자동 생성합니다. 같은 비용으로 10배 어려운 사이트를 잡고, 같은 사람으로 10배 많은 워크플로우를 굴립니다.
다섯 가지 엔진
선언적 한 줄로 브라우저·데스크톱을 조립. Python보다 짧고, Playwright보다 명시적이고, AI가 직접 쓸 수 있는 syntax. 자체 VM에서 바이트코드로 실행.
page.click("로그인 버튼")
page.fill("이메일", env("USER_EMAIL"))
result = page.smart_submit("#login-form")고정 CSS·XPath가 사이트 개편으로 깨지면 Vision LLM이 "같은 의도" 요소를 다시 찾고, 셀렉터 캐시를 자동 갱신합니다. 사람이 매주 fix할 필요 없음.
// 원래 셀렉터 깨짐
page.click(".btn-submit-v2")
// → AI가 "제출 버튼"으로 재인식 → 새 셀렉터 학습L1~L8까지 막히면 자동으로 L9 연구 모드 진입. 네트워크 트래픽·DOM 변경·콘솔 로그·쿠키 흐름을 LLM이 읽어 우회 경로를 만들고, 그 경로의 .play 스크립트를 자동 생성. Cloudflare·Imperva·Akamai 통과.
// 1초로 안 되면 단계적으로 비용 추가
// L1: 단순 HTTP → L4: stealth Chrome → L8: 실제 데스크톱 + AI vision
// → L9: 새 경로 발굴 + .play 자동 생성Claude Code · Codex 같은 에이전트 harness 안에서 직접 호출. 에이전트가 행동 한 단계마다 ScreenPlay에 "이거 진짜 됐나?"를 물어 증거로 답을 받음. 자기보고 신뢰 문제 해소.
// agent.tools에 screenplay-verify 등록
// agent.step("checkout 했어") → screenplay가 실제 확인 → 결과 JSON모든 실행이 스크린샷·트레이스·해시·타이밍·실패 사유로 묶인 "증거 번들"로 끝남. fail-closed 기본값 — 막히면 빈손 응답 대신 명확한 실패 코드.
{ bundle_id, status: ok, artifacts: [
{ name: "final.png", sha256: "abc..." },
{ name: "trace.json", duration_ms: 4210 }
], verdict: "ok" }compute-only 마이크로벤치마크 (single-run, dev machine). I/O·네트워크 제외. .play VM의 release build 기준.
| Benchmark | Python 3.12 | .play VM | Verdict |
|---|---|---|---|
loop_arithmetic(1M) | 45 ms | 30 ms | 1.5x faster than Python |
nested_loop(1K×1K) | 42 ms | 37 ms | 1.1x faster than Python |
fib_recursive(30) | 46 ms | 330 ms | 7.2x slower (stack-VM recursion) |
string_concat(10K) | 0.8 ms | 15 ms | 19x slower (string mutation cost) |
정직한 측정값입니다. 압도 영역(arithmetic·nested loops)이 있고, 약한 영역(deep recursion·heavy string mutation)도 있습니다. 스크래이핑 워크로드의 90%는 페이지 대기·네트워크 — 거기서 VM 속도는 거의 영향 없습니다. 자세한 측정 방법은 benchmark-report-038에.
주요 자동화 / 에이전트 도구와 ScreenPlay의 포지셔닝 차이. "기능 있다/없다" 단순 매트릭스 — 자세한 분석은 COMPETITORS.md.
| 항목 | Playwright | Browser-Use | Stagehand | Skyvern | ScreenPlay |
|---|---|---|---|---|---|
| 언어 | TypeScript | Python | TypeScript | Python | Rust + .play DSL |
| AI 통합 | ❌ 없음 | 🟢 코어 | 🟢 레이어 | 🟢 코어(Vision) | 🟢 코어 + 3-level fallback |
| 셀렉터 self-healing | ❌ | 🟡 watchdog | 🟢 자동 적응 | 🟢 AI agent | 🟢 ai.act + heal cache |
| 차단 사이트 우회 | ❌ 수동 | 🟡 watchdog | 🟡 stealth | 🟡 stealth | 🟢 L1-L9 ladder + Research Mode |
| 데스크톱 자동화 | ❌ | ❌ | ❌ | ❌ | 🟢 (winclaw, OS input) |
| 증거 모델 | ❌ 사용자 책임 | 🟡 log | 🟡 log | 🟡 log | 🟢 proof bundle (해시+트레이스) |
| Agent harness | ❌ | 🟢 native | 🟢 native | 🟡 | 🟢 Claude Code/Codex tool |
| 자체 VM/언어 | ❌ | ❌ | ❌ | ❌ | 🟢 .play + bytecode VM |
| 성능 | Node 속도 | Python 속도 | Node 속도 | Python 속도 | Rust + 바이트코드 캐시 |
비싸고 깨지는 UI 테스트·스크래이핑 도구 갱신비를 줄이고, 사람을 갈아 넣지 않고 가능한 일을 늘려 보세요. 파일럿 온보딩으로 API · CLI · CI · 호스팅 소스 접근을 한 번에 받습니다.