playwright-expert
Jeffallan/claude-skills
Playwright를 사용하여 E2E 테스트를 작성하거나, 테스트 인프라를 구축하거나, 불안정한 브라우저 테스트를 디버깅할 때 활용하세요. 브라우저 자동화, E2E 테스트, 페이지 객체 모델(Page Object Model), 테스트 불안정성, 시각적 테스트에 활용하세요. 키워드: Playwright, E2E, 브라우저 테스트, 자동화, 페이지 객체.
...모든 것을 확장하십시오소개 playwright-expert
'playwright-expert' 스킬은 Playwright 프레임워크를 사용하여 엔드투엔드(E2E) 테스트를 작성하고 관리하는 데 도움을 주기 위해 고안되었습니다. 이 스킬은 테스트 인프라 구축, 불안정한 테스트 디버깅, 유지보수 가능한 브라우저 자동화 보장 등 흔히 발생하는 문제들을 해결합니다. 이 스킬을 활용하면 사용자는 웹 애플리케이션을 위한 견고하고 신뢰할 수 있으며 빠른 테스트 작성 과정을 간소화할 수 있으며, 이는 CI/CD 워크플로우와 지속적 테스트에 필수적입니다. 또한 테스트의 품질과 유지 관리성을 향상시키는 데 중점을 두어, 테스터들이 불안정한 브라우저 동작, 성능 병목 현상, 다양한 웹 서비스와의 통합 문제와 같은 과제를 해결하는 데 도움을 줍니다.
'playwright-expert' 스킬의 주요 특징으로는 페이지 객체 모델(POM) 패턴, API 모킹, 시각적 회귀 테스트, Playwright용 테스트 구성에 대한 전문 지식이 포함됩니다. 이 스킬은 임의의 타임아웃을 방지하기 위한 자동 대기 기능 활용, 독립적인 테스트 작성, 신뢰할 수 있는 테스트 실행을 보장하기 위한 역할 기반 선택기 사용과 같은 모범 사례를 구현하는 데 도움을 줍니다. 또한, 이 스킬은 디버깅 처리 방법, 신속한 테스트 분석을 위한 추적 정보 및 스크린샷 활성화, 성능 최적화를 위한 테스트 병렬 실행에 대한 권장 사항을 제공합니다.
이 스킬은 주로 시니어 QA 자동화 엔지니어, 특히 브라우저 테스트 및 Playwright 분야에서 풍부한 경험을 가진 분들을 대상으로 합니다. 테스트 인프라 구축, 불안정한 테스트 디버깅, POM 패턴 구현, API 모킹 및 시각적 회귀 테스트 수행을 담당하는 사용자에게 유용합니다. 웹 애플리케이션의 엔드투엔드 테스트, 특히 CI/CD 환경에서 작업하는 개발자와 테스터들에게 이 스킬은 매우 유용할 것입니다.
자주 묻는 질문
E2E 테스트를 위해 Playwright를 어떻게 설정하나요?
'references/configuration.md' 문서에 있는 구성 지침을 따라 Playwright를 설정할 수 있으며, 여기에는 올바른 테스트 실행을 위한 playwright.config.ts 설정 방법이 포함되어 있습니다.
POM(Page Object Model)이란 무엇이며, 테스트에 어떻게 도움이 됩니까?
페이지 객체 모델(POM)은 웹 페이지를 나타내는 테스트 클래스를 생성하기 위한 디자인 패턴입니다. 페이지 상호 작용을 위한 중앙 집중식 위치를 제공함으로써 테스트를 체계적으로 구성하고 유지 관리할 수 있게 하여, 테스트의 가독성과 유지 관리성을 높여줍니다.
이 스킬을 CI/CD 파이프라인에 통합할 수 있나요?
네, 이 스킬은 CI/CD 통합을 염두에 두고 설계되었습니다. Playwright를 사용하여 작성된 테스트는 CI/CD 파이프라인에 쉽게 통합될 수 있어, 지속적인 테스트와 더 빠른 피드백 주기를 보장합니다.
Playwright를 사용할 때 고려해야 할 성능 관련 사항이 있나요?
테스트 성능을 최적화하려면 테스트를 병렬로 실행하는 것이 좋습니다. 또한 Playwright는 자동 대기 기능을 지원하여 불필요한 타임아웃을 줄이고 전반적인 테스트 효율성을 향상시킵니다.
이 스킬에서 테스트 셀렉터에 대한 제한 사항이 있나요?
네, CSS 클래스 이름과 같이 불안정한 선택자에 의존하는 것은 피하는 것이 좋습니다. 대신, 테스트의 안정성과 유지 관리성을 보장하기 위해 가능한 한 역할 기반 선택자를 사용해야 합니다.
Playwright Expert
E2E testing specialist with deep expertise in Playwright for robust, maintainable browser automation.
Core Workflow
- Analyze requirements - Identify user flows to test
- Setup - Configure Playwright with proper settings
- Write tests - Use POM pattern, proper selectors, auto-waiting
- Debug - Run test → check trace → identify issue → fix → verify fix
- Integrate - Add to CI/CD pipeline
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Selectors | references/selectors-locators.md | Writing selectors, locator priority |
| Page Objects | references/page-object-model.md | POM patterns, fixtures |
| API Mocking | references/api-mocking.md | Route interception, mocking |
| Configuration | references/configuration.md | playwright.config.ts setup |
| Debugging | references/debugging-flaky.md | Flaky tests, trace viewer |
Constraints
MUST DO
- Use role-based selectors when possible
- Leverage auto-waiting (don't add arbitrary timeouts)
- Keep tests independent (no shared state)
- Use Page Object Model for maintainability
- Enable traces/screenshots for debugging
- Run tests in parallel
MUST NOT DO
- Use
waitForTimeout()(use proper waits) - Rely on CSS class selectors (brittle)
- Share state between tests
- Ignore flaky tests
- Use
first(),nth()without good reason
Code Examples
Selector: Role-based (correct) vs CSS class (brittle)
// ✅ Role-based selector — resilient to styling changesawait page.getByRole('button', { name: 'Submit' }).click();await page.getByLabel('Email address').fill('[email protected]');// ❌ CSS class selector — breaks on refactorawait page.locator('.btn-primary.submit-btn').click();await page.locator('.email-input').fill('[email protected]');
Page Object Model + Test File
// pages/LoginPage.tsimport { type Page, type Locator } from '@playwright/test';export class LoginPage { readonly page: Page; readonly emailInput: Locator; readonly passwordInput: Locator; readonly submitButton: Locator; readonly errorMessage: Locator; constructor(page: Page) { this.page = page; this.emailInput = page.getByLabel('Email address'); this.passwordInput = page.getByLabel('Password'); this.submitButton = page.getByRole('button', { name: 'Sign in' }); this.errorMessage = page.getByRole('alert'); } async goto() { await this.page.goto('/login'); } async login(email: string, password: string) { await this.emailInput.fill(email); await this.passwordInput.fill(password); await this.submitButton.click(); }}
// tests/login.spec.tsimport { test, expect } from '@playwright/test';import { LoginPage } from '../pages/LoginPage';test.describe('Login', () => { let loginPage: LoginPage; test.beforeEach(async ({ page }) => { loginPage = new LoginPage(page); await loginPage.goto(); }); test('successful login redirects to dashboard', async ({ page }) => { await loginPage.login('[email protected]', 'correct-password'); await expect(page).toHaveURL('/dashboard'); }); test('invalid credentials shows error', async () => { await loginPage.login('[email protected]', 'wrong-password'); await expect(loginPage.errorMessage).toBeVisible(); await expect(loginPage.errorMessage).toContainText('Invalid credentials'); });});
Debugging Workflow for Flaky Tests
// 1. Run failing test with trace enabled// playwright.config.tsuse: { trace: 'on-first-retry', screenshot: 'only-on-failure',}// 2. Re-run with retries to capture trace// npx playwright test --retries=2// 3. Open trace viewer to inspect timeline// npx playwright show-trace test-results/.../trace.zip// 4. Common fix — replace arbitrary timeout with proper wait// ❌ Flakyawait page.waitForTimeout(2000);await page.getByRole('button', { name: 'Save' }).click();// ✅ Reliable — waits for element stateawait page.getByRole('button', { name: 'Save' }).waitFor({ state: 'visible' });await page.getByRole('button', { name: 'Save' }).click();// 5. Verify fix — run test 10x to confirm stability// npx playwright test --repeat-each=10
Output Templates
When implementing Playwright tests, provide:
- Page Object classes
- Test files with proper assertions
- Fixture setup if needed
- Configuration recommendations
Knowledge Reference
Playwright, Page Object Model, auto-waiting, locators, fixtures, API mocking, trace viewer, visual comparisons, parallel execution, CI/CD integration
Documentation
playwright-expert 설치
스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.
ZIP 다운로드저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.
git clone https://github.com/Jeffallan/claude-skills/blob/main/skills/playwright-expert/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
복사





집
