Community코딩 & 개발github.com

alinaqi/playwright-testing

Playwright를 활용한 E2E 테스트 - 페이지 객체, 교차 브라우저, CI/CD

playwright-testing란 무엇인가요?

이 스킬은 Playwright를 사용하여 엔드투엔드(E2E) 테스트를 손쉽게 수행할 수 있도록 도와줍니다. 페이지 객체 모델(Page Object Model), 교차 브라우저 테스트, 그리고 CI/CD 통합을 지원하여 실제 사용자 시나리오를 자동화하고, 여러 브라우저에서 일관된 동작을 보장합니다. 주로 Node.js 환경에서 동작하며, VS Code, Cursor, Windsurf 등 다양한 AI 코딩 에이전트에서 활용할 수 있습니다. 스킬은 설정 파일(`playwright.config.ts`) 생성, 브라우저 실행, 페이지 객체 정의, 테스트 스크립트 작성 및 실행을 자동화하여 개발자가 테스트 작성에 집중할 수 있게 합니다. 내부적으로는 Playwright의 API와 CLI를 직접 호출하며, 테스트 결과 리포트와 트러블슈팅 가이드를 제공합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/alinaqi/claude-bootstrap/tree/main/skills/playwright-testing

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

playwright-testing은(는) 무엇을 하나요?

Playwright를 활용한 E2E 테스트 - 페이지 객체, 교차 브라우저, CI/CD

개요

이 스킬은 Playwright를 사용하여 웹 애플리케이션의 엔드투엔드(E2E) 테스트를 생성하고 실행하는 방법을 설명합니다. 페이지 객체 모델(Page Object Model), 교차 브라우저 테스트, CI/CD 파이프라인 통합을 중점적으로 다룹니다.

지원 플랫폼

  • Claude Code
  • Cursor
  • Codex CLI
  • Windsurf

사전 요구사항

  • Node.js 18 이상
  • npm 또는 yarn
  • Playwright 설치: npm init playwright@latest

사용 방법

  1. Playwright 설정

    playwright.config.ts 파일을 프로젝트 루트에 생성합니다.

    import { defineConfig } from '@playwright/test';
    
    export default defineConfig({
      testDir: './tests',
      fullyParallel: true,
      forbidOnly: !!process.env.CI,
      retries: process.env.CI ? 2 : 0,
      workers: process.env.CI ? 1 : undefined,
      reporter: 'html',
      use: {
        baseURL: 'http://localhost:3000',
        trace: 'on-first-retry',
      },
      projects: [
        {
          name: 'chromium',
          use: { browserName: 'chromium' },
        },
        {
          name: 'firefox',
          use: { browserName: 'firefox' },
        },
        {
          name: 'webkit',
          use: { browserName: 'webkit' },
        },
      ],
    });
    
  2. 페이지 객체 작성

    tests/pages/LoginPage.ts

    import { Page } from '@playwright/test';
    
    export class LoginPage {
      constructor(private page: Page) {}
    
      async navigate() {
        await this.page.goto('/login');
      }
    
      async fillUsername(username: string) {
        await this.page.fill('#username', username);
      }
    
      async fillPassword(password: string) {
        await this.page.fill('#password', password);
      }
    
      async submit() {
        await this.page.click('button[type="submit"]');
      }
    
      async login(username: string, password: string) {
        await this.fillUsername(username);
        await this.fillPassword(password);
        await this.submit();
      }
    }
    
  3. 테스트 작성

    tests/login.spec.ts

    import { test, expect } from '@playwright/test';
    import { LoginPage } from './pages/LoginPage';
    
    test('유효한 자격 증명으로 로그인', async ({ page }) => {
      const loginPage = new LoginPage(page);
      await loginPage.navigate();
      await loginPage.login('testuser', 'password123');
      await expect(page).toHaveURL('/dashboard');
    });
    
  4. 테스트 실행

    npx playwright test
    

    특정 브라우저에서만 실행하려면:

    npx playwright test --project=chromium
    
  5. CI/CD 통합 (GitHub Actions 예시)

    .github/workflows/playwright.yml

    name: Playwright Tests
    on:
      push:
        branches: [ main, master ]
      pull_request:
        branches: [ main, master ]
    jobs:
      test:
        timeout-minutes: 60
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v4
        - uses: actions/setup-node@v4
          with:
            node-version: lts/*
        - name: Install dependencies
          run: npm ci
        - name: Install Playwright Browsers
          run: npx playwright install --with-deps
        - name: Run Playwright tests
          run: npx playwright test
        - uses: actions/upload-artifact@v4
          if: always()
          with:
            name: playwright-report
            path: playwright-report/
            retention-days: 30
    

주요 기능

  • 페이지 객체 모델: 테스트 유지보수성을 높이기 위해 UI 요소와 상호작용을 페이지 객체로 캡슐화합니다.
  • 교차 브라우저 테스트: Chromium, Firefox, WebKit에서 동일한 테스트를 실행합니다.
  • 자동 재시도: 실패한 테스트를 CI 환경에서 자동으로 재시도합니다.
  • 리포터: HTML 리포터를 통해 테스트 결과를 시각적으로 확인할 수 있습니다.
  • 트레이스: 첫 번째 재시도 시 트레이스를 캡처하여 디버깅을 용이하게 합니다.

환경 변수

변수명설명기본값
BASE_URL테스트 대상 URLhttp://localhost:3000
CICI 환경 여부false

주의사항

  • 테스트 전에 대상 애플리케이션이 실행 중이어야 합니다.
  • Playwright 브라우저가 설치되어 있어야 합니다 (npx playwright install).
  • CI 환경에서는 retries와 workers 설정이 자동으로 조정됩니다.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬