
Chromium, Firefox, WebKit용 단일 API를 제공하는 브라우저 자동화 프레임워크입니다. 웹 테스트, 스크래핑, 스크린샷 및 네트워크 인터셉션을 지원합니다.
Playwright는 웹 자동화 및 테스트를 위한 프레임워크입니다. 단일 API로 Chromium, Firefox, WebKit을 구동합니다 — 테스트와 스크립트, 그리고 AI 에이전트를 위한 도구로 활용할 수 있습니다.
워크플로에 맞는 경로를 선택하세요:
Playwright Test는 엔드 투 엔드 테스트를 위해 설계된 완전한 기능을 갖춘 테스트 러너입니다. 완전한 브라우저 격리, 자동 대기, 웹 우선 어서션을 바탕으로 Chromium, Firefox, WebKit에서 테스트를 실행합니다.
npm init playwright@latest
또는 직접 추가하려면:
npm i -D @playwright/test
npx playwright install
import { test, expect } from '@playwright/test';
test('has title', async ({ page }) => {
await page.goto('https://playwright.dev/');
await expect(page).toHaveTitle(/Playwright/);
});
test('get started link', async ({ page }) => {
await page.goto('https://playwright.dev/');
await page.getByRole('link', { name: 'Get started' }).click();
await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
});
npx playwright test
테스트는 구성된 모든 브라우저에서 기본적으로 헤드리스 모드로 병렬 실행됩니다. 각 테스트는 새로운 브라우저 컨텍스트를 받습니다 — 거의 제로에 가까운 오버헤드로 완전한 격리를 제공합니다.
자동 대기와 웹 우선 어서션. 인위적인 타임아웃이 없습니다. Playwright는 요소가 조작 가능한 상태가 될 때까지 대기하며, 어서션은 조건이 충족될 때까지 자동으로 재시도합니다.
로케이터. 사용자가 페이지를 보는 방식을 그대로 반영하는 탄력적인 로케이터로 요소를 찾습니다:
page.getByRole('button', { name: 'Submit' })
page.getByLabel('Email')
page.getByPlaceholder('Search...')
page.getByTestId('login-form')
테스트 격리. 각 테스트는 자체 브라우저 컨텍스트에서 실행됩니다 — 새 브라우저 프로필과 동일합니다. 인증 상태를 한 번 저장한 뒤 여러 테스트에서 재사용하세요:
// Save state after login
await page.context().storageState({ path: 'auth.json' });
// Reuse in other tests
test.use({ storageState: 'auth.json' });
트레이싱. 실패 시 실행 트레이스, 스크린샷, 비디오를 캡처합니다. Trace Viewer에서 모든 액션, DOM 스냅샷, 네트워크 요청, 콘솔 메시지를 살펴보세요:
// playwright.config.ts
export default defineConfig({
use: {
trace: 'on-first-retry',
},
});
npx playwright show-trace trace.zip
병렬성. 테스트는 기본적으로 구성된 모든 브라우저에서 병렬로 실행됩니다.
Playwright CLI는 코딩 에이전트를 위해 설계된 브라우저 자동화 명령줄 인터페이스입니다. MCP보다 토큰 효율이 더 높습니다 — 명령어가 모델 컨텍스트에 대규모 도구 스키마와 접근성 트리를 로드하지 않기 때문입니다.
npm install -g @playwright/cli@latest
선택적으로 더 풍부한 에이전트 통합을 위해 스킬을 설치할 수 있습니다:
playwright-cli install --skills
코딩 에이전트에 작업을 지정하세요:
Test the "add todo" flow on https://demo.playwright.dev/todomvc using playwright-cli.
Take screenshots for all successful and failing scenarios.
또는 명령어를 직접 실행하세요:
playwright-cli open https://demo.playwright.dev/todomvc/ --headed
playwright-cli type "Buy groceries"
playwright-cli press Enter
playwright-cli screenshot
playwright-cli show를 사용하면 실행 중인 모든 브라우저 세션의 라이브 스크린캐스트 미리보기를 제공하는 시각적 대시보드가 열립니다. 세션을 클릭하면 확대하여 원격 제어할 수 있습니다.
playwright-cli show
Playwright MCP 서버는 Model Context Protocol을 통해 AI 에이전트에게 완전한 브라우저 제어를 제공합니다. 에이전트는 구조화된 접근성 스냅샷을 사용하여 페이지와 상호작용합니다 — 비전 모델이나 스크린샷이 필요하지 않습니다.
MCP 클라이언트(VS Code, Cursor, Claude Desktop, Windsurf 등)에 추가하세요:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
VS Code 원클릭 설치:
Claude Code용:
claude mcp add playwright npx @playwright/mcp@latest
AI 어시스턴트에게 웹 페이지와 상호작용하도록 요청하세요:
Navigate to https://demo.playwright.dev/todomvc and add a few todo items.
에이전트는 페이지를 구조화된 접근성 트리로 인식합니다:
- heading "todos" [level=1]
- textbox "What needs to be done?" [ref=e5]
- listitem:
- checkbox "Toggle Todo" [ref=e10]
- text: "Buy groceries"
e5, e10과 같은 요소 참조를 사용하여 클릭, 입력, 상호작용을 수행합니다 — 결정적이며 시각적 모호함이 없습니다. 도구는 탐색, 양식 작성, 스크린샷, 네트워크 모킹, 저장소 관리 등을 지원합니다.
playwright를 브라우저 자동화 스크립트용 라이브러리로 사용하세요 — 웹 스크래핑, PDF 생성, 스크린샷 캡처, 그리고 테스트 러너 없이 프로그래밍 방식의 브라우저 제어가 필요한 모든 워크플로에 적합합니다.
npm i playwright
스크린샷 캡처:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://playwright.dev/');
await page.screenshot({ path: 'screenshot.png' });
await browser.close();
PDF 생성:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://playwright.dev/');
await page.pdf({ path: 'page.pdf', format: 'A4' });
await browser.close();
모바일 기기 에뮬레이션:
import { chromium, devices } from 'playwright';
const browser = await chromium.launch();
const context = await browser.newContext(devices['iPhone 15']);
const page = await context.newPage();
await page.goto('https://playwright.dev/');
await page.screenshot({ path: 'mobile.png' });
await browser.close();
네트워크 요청 가로채기:
import { chromium } from 'playwright';
const browser = await chromium.launch();
const page = await browser.newPage();
await page.route('**/*.{png,jpg,jpeg}', route => route.abort());
await page.goto('https://playwright.dev/');
await browser.close();
Playwright VS Code 확장 프로그램은 테스트 실행, 디버깅, 코드 생성을 편집기에서 바로 제공합니다.
테스트 실행 및 디버깅 — 편집기에서 한 번의 클릭으로 실행할 수 있습니다. 중단점을 설정하고, 변수를 검사하고, 라이브 브라우저 뷰로 테스트 실행을 단계별로 진행할 수 있습니다.
CodeGen으로 테스트 생성. "Record new"를 클릭하면 브라우저가 열립니다 — Playwright가 테스트 코드를 작성하는 동안 앱을 탐색하고 상호작용하세요.
로케이터 선택. 브라우저에서 요소 위에 마우스를 올리면 가장 적합한 로케이터가 표시되며, 클릭하면 클립보드에 복사됩니다.
Trace Viewer 통합. 사이드바에서 "Show Trace Viewer"를 활성화하면 각 테스트 실행 후 전체 실행 트레이스를 얻을 수 있습니다 — 모든 단계의 DOM 스냅샷, 네트워크 요청, 콘솔 로그, 스크린샷이 포함됩니다.
모든 플랫폼에서 헤드리스 및 헤드 모드 실행을 지원합니다. 1 기본적으로 Chrome for Testing을 사용합니다.
Playwright는 Python, .NET, Java에서도 사용할 수 있습니다.
| 적합한 용도 | 설치 |
|---|
| Playwright Test | 엔드 투 엔드 테스트 | npm init playwright@latest |
| Playwright CLI | 코딩 에이전트 (Claude Code, Copilot) | npm i -g @playwright/cli@latest |
| Playwright MCP | AI 에이전트 및 LLM 기반 자동화 | npx @playwright/mcp@latest |
| Playwright Library | 브라우저 자동화 스크립트 | npm i playwright |
| VS Code 확장 프로그램 | VS Code에서 테스트 작성 및 디버깅 | 마켓플레이스에서 설치 |
| Linux | macOS | Windows |
|---|
| Chromium1 152.0.7977.54 | ✅ | ✅ | ✅ |
| WebKit 26.5 | ✅ | ✅ | ✅ |
| Firefox 153.0 | ✅ | ✅ | ✅ |