플레이라이트
플레이라이트(Playwright)는 마이크로소프트가 개발·유지하는 오픈소스 웹 브라우저 자동화 및 엔드투엔드(End-to-End, E2E) 테스트 프레임워크로, Chromium, Firefox, WebKit을 단일 API로 제어할 수 있다.
플레이라이트는 현대 웹 애플리케이션의 자동화 테스트, 브라우저 기반 스크립팅, 웹 자동화, AI 에이전트의 브라우저 조작 등에 사용되는 프레임워크이다. 공식 문서는 Playwright를 “testing, scripting, AI agents를 위한 신뢰성 있는 웹 자동화” 도구로 설명하며, TypeScript, Python, .NET, Java를 지원한다고 안내한다.[1]
플레이라이트는 브라우저 엔진별 자동화 차이를 추상화하여 Chromium, Firefox, WebKit을 하나의 API로 제어한다. 이를 통해 Chrome, Edge, Firefox, Safari 계열 렌더링 동작을 하나의 테스트 코드베이스에서 검증할 수 있다.[2]
| 항목 | 내용 |
|---|---|
| 명칭 | Playwright |
| 한국어 표기 | 플레이라이트 |
| 개발·유지 | Microsoft |
| 성격 | 웹 자동화, 브라우저 자동화, E2E 테스트 프레임워크 |
| 주요 지원 언어 | TypeScript, JavaScript, Python, .NET, Java |
| 주요 지원 브라우저 엔진 | Chromium, Firefox, WebKit |
| 지원 운영체제 | Windows, Linux, macOS |
| 라이선스 | Apache License 2.0 |
| 최신 npm 패키지 | 2026년 6월 15일 확인 기준 playwright 1.60.0[3]
|
플레이라이트는 2020년 1월 마이크로소프트가 공개한 브라우저 자동화 라이브러리로 출발했다. 초기에는 Node.js 기반으로 Chromium, Firefox, WebKit을 자동화하는 단일 API를 제공하는 것이 핵심 목표였다.[4]
이후 Playwright Test라는 전용 테스트 러너가 발전하면서 단순 브라우저 자동화 라이브러리를 넘어 E2E 테스트 프레임워크로 자리잡았다. 공식 설치 문서에 따르면 Playwright Test는 테스트 러너, 단언(assertions), 격리(isolation), 병렬 실행, 리치 툴링을 포함한 현대 웹 앱용 E2E 테스트 프레임워크이다.[5]
2020년대 중반 이후에는 Playwright CLI와 Playwright MCP가 추가되면서 AI 에이전트가 브라우저를 제어하는 도구로도 활용 범위가 넓어졌다. 공식 홈페이지는 Playwright MCP를 Model Context Protocol 서버로 설명하며, VS Code, Cursor, Claude Desktop, Windsurf 등 MCP 클라이언트에서 브라우저 제어를 제공한다고 안내한다.[6]
| 구성 요소 | 설명 |
|---|---|
| Playwright Library | 브라우저를 실행하고 페이지와 상호작용하는 기본 자동화 API이다. 스크립트, 크롤링, 자동화 작업에 사용할 수 있다.[7] |
| Playwright Test | E2E 테스트용 전용 테스트 러너이다. 병렬 실행, 단언, 격리, 리포트, 추적 기능을 포함한다.[8] |
| Codegen | 사용자가 브라우저에서 수행한 동작을 기록해 테스트 코드를 생성하는 도구이다.[9] |
| Trace Viewer | 테스트 실행 중 기록된 DOM 스냅샷, 네트워크 요청, 콘솔 로그, 액션 순서를 시각적으로 분석하는 디버깅 도구이다.[10] |
| Playwright CLI | 브라우저 자동화 명령줄 도구로, 특히 코딩 에이전트가 브라우저를 제어하는 용도로도 안내된다.[11] |
| Playwright MCP | AI 에이전트와 LLM 기반 자동화가 브라우저를 구조화된 도구로 제어할 수 있게 하는 MCP 서버이다.[12] |
- 크로스 브라우저 테스트: Chromium, Firefox, WebKit을 지원하며, Chrome과 Microsoft Edge 같은 브랜드 브라우저도 사용할 수 있다.[13]
- 자동 대기: 요소가 보이고, 활성화되고, 안정적인 상태가 되는 등 액션 가능성 검사를 통과할 때까지 기다린 뒤 클릭·입력 같은 동작을 수행한다.[14]
- 로케이터:
getByRole,getByLabel,getByPlaceholder,getByTestId등 사용자 관점에 가까운 선택자를 제공한다.[15] - 테스트 격리: 각 테스트는 별도의 브라우저 컨텍스트에서 실행되어 쿠키, 세션, 로컬 스토리지 등 상태가 독립적으로 관리된다.[16]
- 병렬 실행: Playwright Test는 여러 워커 프로세스를 사용해 테스트 파일을 병렬 실행할 수 있다.[17]
- 네트워크 모킹: HTTP·HTTPS 요청을 추적, 수정, 차단, 모킹할 수 있으며 HAR 파일 기반 모킹도 지원한다.[18]
- 디바이스 에뮬레이션: 모바일 브라우저, 태블릿, 화면 크기, 사용자 에이전트, 터치 입력, 위치, 로케일, 시간대 등을 에뮬레이션할 수 있다.[19]
- 동영상·스크린샷·트레이스: 실패한 테스트의 화면, 영상, 실행 경로를 기록해 CI 환경에서 문제를 재현하고 분석할 수 있다.[20]
Node.js 환경에서는 다음 명령으로 Playwright Test를 설치하거나 기존 프로젝트에 추가할 수 있다.[21]
npm init playwright@latest
기존 프로젝트에 수동으로 추가할 때는 다음과 같이 설치할 수 있다.
npm i -D @playwright/test
npx playwright install
기본 테스트 코드는 다음과 같은 형태이다.
import { test, expect } from '@playwright/test';
test('문서 제목 확인', async ({ page }) => {
await page.goto('https://playwright.dev/');
await expect(page).toHaveTitle(/Playwright/);
});
test('Get started 링크 이동', 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
플레이라이트는 웹 브라우저 자동화 도구라는 점에서 셀레니움(Selenium)과 비교된다. 두 도구 모두 브라우저 자동화와 웹 애플리케이션 테스트에 사용되지만, 설계 철학에는 차이가 있다.
| 구분 | 플레이라이트 | 셀레니움 |
|---|---|---|
| 주요 설계 방향 | 현대 웹 앱의 E2E 테스트와 안정적인 브라우저 자동화에 초점 | 다양한 브라우저·언어·드라이버 생태계를 포괄하는 범용 웹 자동화 |
| 브라우저 제어 | Chromium, Firefox, WebKit을 단일 API로 직접 제어 | WebDriver 기반으로 브라우저별 드라이버를 통해 제어 |
| 대기 처리 | 자동 대기와 웹 우선 단언을 기본 제공 | 명시적 대기·암시적 대기 설정을 개발자가 직접 관리하는 경우가 많음 |
| 테스트 격리 | 브라우저 컨텍스트 기반 격리가 핵심 기능 | 세션과 드라이버 관리 방식에 따라 별도 설계 필요 |
| 언어 생태계 | TypeScript/JavaScript, Python, .NET, Java 중심 | Java, Python, C#, JavaScript, Ruby 등 더 넓은 언어 생태계 |
셀레니움은 더 오래된 표준과 광범위한 생태계를 가진 반면, 플레이라이트는 자동 대기, 격리, 트레이스, 코드 생성, 병렬 실행 같은 현대적인 테스트 경험을 기본 통합한 것이 강점이다. 다만 조직의 기존 테스트 자산, 브라우저 호환성 요구, 언어 선택, CI 환경에 따라 적합한 도구는 달라질 수 있다.
- E2E 테스트: 로그인, 결제, 검색, 폼 입력, 관리자 기능 등 실제 사용자 흐름 검증에 사용된다.
- 회귀 테스트: 배포 전 기존 기능이 깨지지 않았는지 자동 확인한다.
- 크로스 브라우저 테스트: Chromium, Firefox, WebKit에서 동일 기능을 검증한다.
- 시각적 회귀 테스트: 스크린샷과 시각 비교 기능을 이용해 UI 변경을 탐지한다.
- API 테스트:
APIRequestContext를 통해 REST API 요청을 만들고 서버 상태를 검증할 수 있다.[22] - 웹 자동화와 스크래핑: 동적 웹 페이지 조작, 인증이 필요한 페이지 탐색, 반복 작업 자동화에 쓰인다.
- AI 에이전트 브라우저 제어: Playwright CLI와 MCP를 통해 코딩 에이전트나 LLM 기반 에이전트가 브라우저를 조작하는 도구로 활용된다.[23]
플레이라이트의 장점은 브라우저 자동화와 테스트 실행에 필요한 기능을 하나의 도구 체계로 통합했다는 점이다. 자동 대기, 로케이터, 병렬 실행, 브라우저 컨텍스트 격리, 트레이스 뷰어, HTML 리포트, 코드 생성기가 기본 제공되므로 테스트 코드의 불안정성을 줄이고 CI 환경에서 실패 원인을 분석하기 쉽다.
또한 WebKit을 지원하기 때문에 macOS가 아닌 환경에서도 Safari 계열 렌더링 엔진을 어느 정도 검증할 수 있다. 공식 설치 문서는 Playwright가 Windows, Linux, macOS에서 Chromium, WebKit, Firefox를 지원하며, Chrome Android와 Mobile Safari의 네이티브 모바일 에뮬레이션도 제공한다고 설명한다.[24]
플레이라이트는 강력한 브라우저 자동화 도구이지만 모든 상황에서 최선의 선택은 아니다. 브라우저를 실제로 실행하므로 단순 HTTP 요청 기반 테스트보다 자원 사용량이 많고, 테스트 수가 많아질수록 병렬 실행과 브라우저 설치 캐시, CI 인프라 구성이 중요해진다.
또한 테스트가 실제 사용자 흐름과 너무 멀어지거나 내부 구현에 지나치게 의존하면 유지보수 비용이 높아질 수 있다. 공식 모범 사례는 견고한 테스트를 위해 사용자에게 보이는 역할, 레이블, 텍스트, 테스트 ID 기반 로케이터를 우선 사용하라고 권장한다.[25]
웹 스크래핑 목적으로 사용할 경우에는 대상 웹사이트의 이용약관, robots.txt, 접근 빈도 제한, 개인정보 보호, 저작권, 보안 정책을 반드시 고려해야 한다. Playwright가 기술적으로 브라우저 조작을 가능하게 하더라도, 모든 자동화가 법적·윤리적으로 허용되는 것은 아니다.
플레이라이트는 웹 애플리케이션 테스트 자동화가 단순 클릭 스크립트에서 실제 사용자 경험, 크로스 브라우저 검증, CI 기반 품질 관리, 디버깅 가능한 실행 기록 중심으로 발전했음을 보여주는 대표적인 도구이다. 특히 자동 대기, 브라우저 컨텍스트 격리, 트레이스 뷰어, 테스트 생성기 같은 기능은 E2E 테스트의 고질적 문제였던 불안정성, 느린 디버깅, 환경 의존성을 줄이는 데 초점을 둔다.
2020년대 중반 이후에는 Playwright MCP와 CLI를 통해 AI 에이전트가 브라우저를 제어하는 도구로도 확장되었다. 이 점에서 플레이라이트는 웹 테스트 프레임워크이면서 동시에 브라우저를 소프트웨어와 AI 에이전트가 조작할 수 있는 표준화된 실행 환경으로 제공하는 도구로 평가할 수 있다.
- ↑ Playwright, "Fast and reliable end-to-end testing for modern web apps", https://playwright.dev/, 확인한 날짜: 2026년 6월 15일.
- ↑ Microsoft GitHub, "microsoft/playwright", https://github.com/microsoft/playwright, 확인한 날짜: 2026년 6월 15일.
- ↑ npm, "playwright", https://www.npmjs.com/package/playwright, 확인한 날짜: 2026년 6월 15일.
- ↑ InfoQ, "Microsoft Announces Playwright Alternative to Puppeteer", https://www.infoq.com/news/2020/01/playwright-browser-automation/, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Installation", https://playwright.dev/docs/intro, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright, "Fast and reliable end-to-end testing for modern web apps", https://playwright.dev/, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Library", https://playwright.dev/docs/library, 확인한 날짜: 2026년 6월 15일.
- ↑ Microsoft GitHub, "microsoft/playwright", https://github.com/microsoft/playwright, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Test generator", https://playwright.dev/docs/codegen, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Trace viewer", https://playwright.dev/docs/trace-viewer, 확인한 날짜: 2026년 6월 15일.
- ↑ Microsoft GitHub, "microsoft/playwright", https://github.com/microsoft/playwright, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright, "Fast and reliable end-to-end testing for modern web apps", https://playwright.dev/, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Browsers", https://playwright.dev/docs/browsers, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Auto-waiting", https://playwright.dev/docs/actionability, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Best Practices", https://playwright.dev/docs/best-practices, 확인한 날짜: 2026년 6월 15일.
- ↑ Microsoft GitHub, "microsoft/playwright", https://github.com/microsoft/playwright, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Parallelism", https://playwright.dev/docs/test-parallel, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Mock APIs", https://playwright.dev/docs/mock, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Emulation", https://playwright.dev/docs/emulation, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Videos", https://playwright.dev/docs/videos, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Installation", https://playwright.dev/docs/intro, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "API testing", https://playwright.dev/docs/api-testing, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright, "Fast and reliable end-to-end testing for modern web apps", https://playwright.dev/, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Installation", https://playwright.dev/docs/intro, 확인한 날짜: 2026년 6월 15일.
- ↑ Playwright Docs, "Best Practices", https://playwright.dev/docs/best-practices, 확인한 날짜: 2026년 6월 15일.
