Playwright와 CI/CD 통합

CI/CD는 소프트웨어 개발과 배포를 자동화하여 효율성을 높이는 방법론으로, 지속적 통합(CI)과 지속적 제공 또는 배포(CD)로 구성됩니다. CI는 코드 변경 사항을 자주 병합하고 자동 빌드·테스트를 통해 문제를 조기 발견하고 품질을 유지합니다. CD는 변경된 코드를 프로덕션 환경에 배포 준비하거나 자동 배포하여 릴리즈 속도를 개선합니다. Jenkins, GitHub Actions, GitLab CI/CD 등 다양한 도구로 테스트 자동화와 품질 관리를 효율적으로 수행할 수 있습니다.

Playwright와 CI/CD 통합

CI/CD란 무엇인가?

CI/CD는 Continuous Integration(지속적 통합)Continuous Delivery(지속적 제공) 또는 Continuous Deployment(지속적 배포)의 약어로, 소프트웨어 개발과 배포 프로세스를 자동화하고 효율화하는 방법론을 의미합니다. CI/CD는 개발자들이 더 빠르게 코드 변경 사항을 통합하고, 자동화된 테스트 및 배포 프로세스를 통해 품질과 안정성을 유지하면서 소프트웨어를 더 자주 릴리즈할 수 있도록 돕습니다.

CI (Continuous Integration, 지속적 통합)

  • 개념: 개발자들이 작성한 코드 변경 사항을 주기적으로 공유 저장소에 통합하고, 자동화된 빌드와 테스트 과정을 거치는 것을 의미합니다.
  • 목적: 코드 충돌을 빠르게 확인하고, 문제를 조기에 발견하며, 코드베이스의 품질을 유지하는 것입니다.
  • 주요 활동
    • 코드 변경 사항을 공유 저장소에 자주 병합.
    • 자동화된 빌드를 실행하여 코드가 정상적으로 작동하는지 확인.
    • 단위 테스트, 통합 테스트 등 자동화된 테스트 실행.

CD (Continuous Delivery, 지속적 제공)

  • 개념: CI 과정을 거친 이후, 코드 변경 사항을 프로덕션 환경에 배포할 준비가 된 상태로 유지하는 것을 의미합니다. 이 과정은 자동화되어 있으나 최종 배포는 사람의 승인이 필요할 수도 있습니다.
  • 목적: 안정적으로 배포 가능한 상태를 지속적으로 유지하여, 소프트웨어 릴리즈를 신속하고 쉽게 수행할 수 있도록 하는 것입니다.
  • 주요 활동
    • 자동화된 배포 파이프라인 설정.
    • 스테이징 환경에 배포하여 최종 확인.
    • 배포 준비 상태를 지속적으로 유지.

CD (Continuous Deployment, 지속적 배포)

  • 개념: 지속적 제공의 다음 단계로, 승인을 거치지 않고 코드 변경 사항을 자동으로 프로덕션 환경에 배포하는 것을 의미합니다.
  • 목적: 모든 코드 변경 사항을 신속하게 사용자에게 제공함으로써, 제품 업데이트를 즉각적으로 수행하는 것입니다.
  • 주요 활동
    • 프로덕션 환경에 대한 완전 자동화된 배포.
    • 모든 테스트를 통과한 코드만 배포.

CI/CD의 이점

  1. 빠른 피드백 루프: 코드 변경 사항에 대한 문제를 조기에 발견하고 해결할 수 있습니다.
  2. 품질 향상: 자동화된 테스트와 배포를 통해 오류를 최소화하고 안정성을 유지합니다.
  3. 릴리즈 속도 증가: 소프트웨어를 더 빠르고 빈번하게 릴리즈할 수 있습니다.
  4. 효율성 증대: 수작업을 줄이고, 개발 및 운영 팀 간 협업을 촉진합니다.

주요 도구

  • CI/CD 도구: Jenkins, GitHub Actions, GitLab CI/CD, CircleCI, Travis CI 등.
  • 버전 관리 도구: Git, Bitbucket 등.
  • 컨테이너 및 배포 관리 도구: Docker, Kubernetes 등.

CI/CD는 DevOps의 핵심적인 부분으로, 개발과 운영 간의 협업을 강화하고, 더 나은 소프트웨어를 더 빠르게 제공할 수 있도록 돕는 중요한 프로세스입니다.


Playwright와 CI/CD 연결

GitHub Actions

PlaywrightGitHub Actions를 사용해 CI/CD 파이프라인을 구축하면, 브라우저 기반의 테스트를 자동화하여 코드 변경 사항의 안정성을 지속적으로 확인할 수 있습니다. 아래에 Playwright와 GitHub Actions를 연동하여 CI/CD를 구성하는 방법을 단계별로 설명합니다.

1. Playwright 테스트 프로젝트 준비

Playwright를 프로젝트에 설치하고 테스트 환경을 설정해야 합니다.

Playwright 설치
npm init playwright@latest
  • 기본 설치를 진행하면 Playwright는 자동으로 테스트 파일, 설정 파일(playwright.config.js), 브라우저 등을 설정합니다.
테스트 스크립트 작성

tests/ 디렉토리 안에 Playwright 테스트 파일을 작성합니다.

// tests/example.spec.js
const { test, expect } = require('@playwright/test');

test('Google search test', async ({ page }) => {
  await page.goto('https://www.google.com');
  await page.fill('input[name="q"]', 'Playwright');
  await page.keyboard.press('Enter');
  await page.waitForSelector('#search');
  const results = await page.locator('#search .g').count();
  expect(results).toBeGreaterThan(0);
});

2. GitHub Actions 워크플로우 파일 설정

GitHub Actions는 .github/workflows/ 디렉토리에 YAML 파일로 워크플로우를 정의합니다.

워크플로우 파일 생성

.github/workflows/playwright.yml 파일을 생성하고 다음 내용을 추가합니다.

name: Playwright Tests

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      # 1. 리포지토리 체크아웃
      - name: Checkout code
        uses: actions/checkout@v3

      # 2. Node.js 설치
      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      # 3. 의존성 설치
      - name: Install dependencies
        run: npm install

      # 4. Playwright 브라우저 설치
      - name: Install Playwright browsers
        run: npx playwright install

      # 5. 테스트 실행
      - name: Run Playwright tests
        run: npx playwright test

3. GitHub Actions 실행 과정

  1. 트리거
    • 위 설정에서는 main 브랜치에 코드가 푸시되거나, pull_request 이벤트가 발생할 때 워크플로우가 실행됩니다.
  2. 작업 흐름
    • actions/checkout으로 리포지토리를 클론합니다.
    • Node.js를 설치하고 의존성을 다운로드합니다.
    • Playwright 브라우저와 필요한 리소스를 설치합니다.
    • Playwright 테스트를 실행합니다.
  3. 결과 확인
    • GitHub 리포지토리의 Actions 탭에서 실행 결과를 확인할 수 있습니다.
    • 테스트 성공/실패 여부가 표시되며, 실패 시 로그를 통해 디버깅할 수 있습니다.

4. 추가 구성

4.1 테스트 결과 보고서 생성

Playwright는 HTML 형식의 테스트 결과 보고서를 생성할 수 있습니다. playwright.config.js 파일에 다음을 추가합니다.

reporter: [['html', { outputFolder: 'playwright-report', open: 'never' }]],
4.2 GitHub Actions에서 결과 아티팩트 업로드

테스트 결과를 아티팩트로 저장하려면 다음 단계를 추가합니다.

      # 6. 테스트 결과를 아티팩트로 업로드
      - name: Upload test artifacts
        uses: actions/upload-artifact@v3
        with:
          name: playwright-report
          path: playwright-report
4.3 병렬 테스트 실행

GitHub Actions에서 병렬로 테스트를 실행하려면 Playwright의 sharding 기능과 GitHub Actions의 matrix 전략을 사용할 수 있습니다.

5. 최종 구조

위 과정을 적용하면 Playwright와 GitHub Actions가 연결되어 다음을 자동으로 수행합니다.

  • 코드 변경 시 자동으로 테스트 실행.
  • 테스트 성공 여부를 Pull Request와 Actions 탭에서 즉시 확인.
  • 테스트 실패 시 로그 제공으로 빠른 디버깅 가능.

이를 통해 지속적인 품질 관리를 효율적으로 구현할 수 있습니다.


Jenkins

PlaywrightJenkins를 연동하여 CI/CD 파이프라인을 구축하면 브라우저 기반의 테스트를 자동화하고 코드 품질을 지속적으로 확인할 수 있습니다. 아래는 Jenkins를 활용해 Playwright 테스트를 실행하는 방법을 단계별로 설명합니다.

1. Playwright 프로젝트 준비

Jenkins와 연동하기 전에 Playwright 프로젝트를 설정합니다.

Playwright 설치
npm init playwright@latest
테스트 파일 작성

Playwright 프로젝트에 tests/ 디렉토리를 생성하고 테스트 파일을 작성합니다.

// tests/example.spec.js
const { test, expect } = require('@playwright/test');

test('Google search test', async ({ page }) => {
  await page.goto('https://www.google.com');
  await page.fill('input[name="q"]', 'Playwright');
  await page.keyboard.press('Enter');
  await page.waitForSelector('#search');
  const results = await page.locator('#search .g').count();
  expect(results).toBeGreaterThan(0);
});

2. Jenkins 설치 및 플러그인 준비

  1. Jenkins 설치
    • Jenkins를 설치하고 실행합니다. (로컬 또는 서버 환경)
    • Jenkins 설치 방법은 Jenkins 공식 문서를 참조하세요.
  2. 필수 플러그인 설치
    • Jenkins 관리 페이지에서 Manage Jenkins > Manage Plugins로 이동.
    • 아래 플러그인을 설치
      • NodeJS Plugin (Node.js 환경 설정용)
      • Pipeline Plugin (파이프라인 구성용)
      • Git Plugin (Git 리포지토리 연동용)

3. Jenkins Job 생성

3.1 Freestyle Job 생성
  1. Jenkins 대시보드에서 New Item을 클릭하고, Freestyle Project를 선택합니다.
  2. 프로젝트 이름을 입력하고 생성합니다.
3.2 Git 리포지토리 연결
  1. Source Code Management에서 Git을 선택합니다.
  2. Repository URL에 Playwright 프로젝트가 저장된 Git 리포지토리 URL을 입력합니다.
  3. 필요시 인증 정보(Credentials)를 추가합니다.
3.3 Build Steps 추가
  1. Build Environment에서 Provide Node & npm bin/ folder to PATH를 선택합니다.
    • Node.js 환경은 Manage Jenkins > Global Tool Configuration에서 설정해야 합니다.
    • Node.js 버전을 선택하거나 새로 추가합니다.
  2. Build Steps에서 Execute Shell을 추가하고, 아래 명령어를 입력합니다.
# 1. 의존성 설치
npm install

# 2. Playwright 브라우저 설치
npx playwright install

# 3. Playwright 테스트 실행
npx playwright test

4. Jenkins Pipeline으로 구성 (권장)

Jenkins의 Pipeline Job을 사용하면 파이프라인 스크립트를 작성하여 테스트를 더 효율적으로 관리할 수 있습니다.

Pipeline 구성
  1. New Item에서 Pipeline 프로젝트를 생성합니다.
  2. Pipeline Script를 다음과 같이 작성합니다.
pipeline {
    agent any
    stages {
        stage('Checkout Code') {
            steps {
                // Git 리포지토리 체크아웃
                git url: 'https://github.com/your-repo-url.git', branch: 'main'
            }
        }
        stage('Install Dependencies') {
            steps {
                // Node.js 및 Playwright 브라우저 설치
                sh 'npm install'
                sh 'npx playwright install'
            }
        }
        stage('Run Playwright Tests') {
            steps {
                // Playwright 테스트 실행
                sh 'npx playwright test'
            }
        }
    }
    post {
        always {
            // 테스트 결과 보고서 아티팩트 저장 (선택 사항)
            archiveArtifacts artifacts: 'playwright-report/**/*', allowEmptyArchive: true
        }
        failure {
            // 테스트 실패 시 로그 표시
            echo 'Tests failed. Check logs for details.'
        }
    }
}

5. Playwright 테스트 결과 보고서 확인

Playwright는 HTML 형식의 보고서를 생성할 수 있습니다. playwright.config.js에 다음을 추가하여 결과 보고서를 설정합니다.

reporter: [['html', { outputFolder: 'playwright-report', open: 'never' }]],
Jenkins에 테스트 보고서 통합

테스트 보고서를 Jenkins에서 직접 확인하려면 HTML Publisher Plugin을 설치하고 아래와 같이 설정합니다.

  1. Post-build Actions에서 Publish HTML Reports를 추가합니다.
  2. HTML Directory Path에 playwright-report를 입력합니다.

6. 병렬 테스트 및 확장

Playwright의 sharding 기능을 활용하면 Jenkins에서 병렬 테스트를 실행할 수 있습니다. 이를 Jenkins 파이프라인에 통합하려면 matrix 전략을 사용할 수도 있습니다.

최종 구조

  • Jenkins는 Git에서 코드 변경 사항을 자동으로 가져와 Playwright 테스트를 실행.
  • 테스트 결과를 Jenkins UI 또는 보고서를 통해 확인.
  • 실패한 테스트는 디버깅을 위한 로그를 제공.

이 방식은 Playwright의 브라우저 기반 테스트를 Jenkins CI/CD 환경에서 효과적으로 자동화하여, 품질 관리와 배포 주기를 최적화합니다.


GitLab CI/CD

PlaywrightGitLab CI/CD를 연동하면 브라우저 기반의 테스트를 자동화하고 코드 변경 시 지속적인 통합과 배포를 구현할 수 있습니다. GitLab CI/CD는 .gitlab-ci.yml 파일을 통해 파이프라인을 정의하며, 이를 Playwright 프로젝트에 설정하는 방법을 단계별로 설명합니다.

1. Playwright 프로젝트 준비

GitLab과 연동하기 전에 Playwright 프로젝트를 준비해야 합니다.

Playwright 설치

Playwright 프로젝트를 초기화하고 테스트 환경을 구성합니다.

npm init playwright@latest
테스트 파일 작성

Playwright 테스트 파일을 작성합니다.

const { test, expect } = require('@playwright/test');

test('Google search test', async ({ page }) => {
  await page.goto('https://www.google.com');
  await page.fill('input[name="q"]', 'Playwright');
  await page.keyboard.press('Enter');
  await page.waitForSelector('#search');
  const results = await page.locator('#search .g').count();
  expect(results).toBeGreaterThan(0);
});

2. GitLab CI/CD 파이프라인 파일 생성

GitLab의 CI/CD 파이프라인은 .gitlab-ci.yml 파일에서 정의합니다. 프로젝트 루트에 .gitlab-ci.yml 파일을 생성하고 다음 내용을 추가합니다.

기본 구성
stages:
  - install
  - test

cache:
  paths:
    - node_modules/

install_dependencies:
  stage: install
  script:
    - npm ci
    - npx playwright install
  artifacts:
    paths:
      - node_modules/

run_playwright_tests:
  stage: test
  script:
    - npx playwright test
  artifacts:
    when: always
    paths:
      - playwright-report/
    reports:
      junit: playwright-report/junit.xml

3. GitLab CI/CD 파이프라인 상세 설명

3.1 단계 정의 (stages)
  • install: 의존성 설치 및 Playwright 브라우저 다운로드.
  • test: Playwright 테스트 실행.
3.2 캐시 설정
  • cachenode_modules를 캐싱하여 빌드 속도를 최적화합니다.
3.3 Artifacts 생성
  • 테스트 보고서나 결과를 저장합니다.
  • Playwright는 HTML 형식의 보고서를 생성하며, 이를 playwright-report 디렉토리에 저장합니다.
3.4 JUnit 보고서
  • reports 섹션에서 JUnit 형식의 테스트 결과를 정의하여 GitLab의 CI/CD 테스트 리포트 기능을 사용할 수 있습니다.

Playwright에서 JUnit 결과를 생성하려면 playwright.config.js에 다음을 추가합니다.

reporter: [
  ['html', { outputFolder: 'playwright-report', open: 'never' }],
  ['junit', { outputFile: 'playwright-report/junit.xml' }]
],

4. 파이프라인 실행

4.1 GitLab Push
  • 프로젝트의 .gitlab-ci.yml 파일을 GitLab 리포지토리에 푸시합니다.
git add .gitlab-ci.yml
git commit -m "Add GitLab CI/CD for Playwright"
git push
4.2 파이프라인 확인
  • GitLab 리포지토리의 CI/CD > Pipelines 메뉴에서 파이프라인 실행 상태를 확인할 수 있습니다.
  • 각 단계(install, test)의 로그를 확인하여 빌드 및 테스트 상태를 검토합니다.

5. 추가 설정

5.1 환경별 테스트 실행

여러 환경에서 테스트를 실행하려면 GitLab의 환경 변수를 사용할 수 있습니다.

run_playwright_tests:
  stage: test
  script:
    - npx playwright test --project=${BROWSER}
  variables:
    BROWSER: chromium

GitLab의 CI/CD Settings에서 환경 변수를 설정하여, 테스트 브라우저(Chromium, Firefox, WebKit)를 변경하거나 다른 환경에 맞춘 실행을 구성할 수 있습니다.

5.2 병렬 테스트 실행

GitLab CI/CD의 parallel 키를 활용해 병렬로 테스트를 실행할 수 있습니다.

run_playwright_tests:
  stage: test
  parallel:
    matrix:
      - BROWSER: chromium
      - BROWSER: firefox
      - BROWSER: webkit
  script:
    - npx playwright test --project=${BROWSER}
5.3 HTML 테스트 보고서 보기
  • HTML 보고서를 확인하려면 GitLab Pages를 사용해 보고서를 호스팅할 수 있습니다.
pages:
  stage: deploy
  script:
    - mkdir -p public
    - cp -r playwright-report/* public
  artifacts:
    paths:
      - public
  only:
    - main

6. 최종 구조

이 설정으로 Playwright와 GitLab CI/CD를 완전히 통합하여 다음을 수행할 수 있습니다.

  • 코드 변경 시 자동 테스트: GitLab에서 푸시 또는 머지 요청 이벤트에 따라 테스트 실행.
  • 자동화된 보고: JUnit 보고서와 HTML 보고서를 통해 테스트 결과 제공.
  • 병렬 및 다중 환경 지원: 다양한 브라우저나 환경에서 테스트 실행.

GitLab CI/CD를 통해 Playwright 테스트를 자동화하면 개발 효율성을 극대화하고 코드 품질을 유지할 수 있습니다.


테스트 결과 보고서 생성

Allure Reports

Playwright에서 Allure Reports를 생성하면 테스트 실행 결과를 직관적으로 시각화할 수 있습니다. Allure Reports는 테스트의 성공/실패 현황, 테스트 단계별 상세 로그, 스크린샷, 비디오 등의 정보를 포함하는 풍부한 보고서를 제공합니다. Playwright와 Allure Reports를 연동하는 과정을 단계별로 설명하겠습니다.

1. Playwright 프로젝트 준비

Playwright 프로젝트가 설정되어 있어야 합니다. 아래는 Playwright 설치 및 초기화 명령어입니다.

npm init playwright@latest

2. Allure Reporter 설치

Allure Reports와 Playwright를 통합하기 위해 allure-playwrightallure-commandline 패키지를 설치합니다.

설치 명령어
npm install --save-dev allure-playwright allure-commandline
  • allure-playwright: Playwright와 Allure Reports의 통합을 지원합니다.
  • allure-commandline: Allure CLI를 사용하여 보고서를 생성하고 열 수 있습니다.

3. Playwright 설정 파일 수정

playwright.config.js 또는 playwright.config.ts 파일에 Allure Reporter를 추가합니다.

설정 예시
const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
  reporter: [
    ['list'], // 기본 콘솔 출력
    ['allure-playwright'] // Allure Reporter 추가
  ],
  use: {
    screenshot: 'only-on-failure', // 실패 시 스크린샷 생성
    video: 'retain-on-failure',   // 실패 시 비디오 기록
    trace: 'on-first-retry'       // 첫 번째 재시도 시 Trace 파일 생성
  }
});

4. Allure Reports 실행

4.1 테스트 실행

Playwright 테스트를 실행합니다.

npx playwright test

테스트 실행 후 allure-results라는 디렉토리가 생성됩니다. 이 디렉토리에는 Allure Reports에 필요한 데이터 파일이 저장됩니다.

4.2 Allure Report 생성

Allure CLI를 사용해 HTML 형식의 보고서를 생성합니다.

npx allure generate allure-results --clean
  • allure-results: 테스트 실행 후 생성된 Allure 데이터 파일의 경로.
  • --clean: 기존에 생성된 보고서를 삭제하고 새로 생성.
4.3 Allure Report 열기

생성된 Allure Report를 웹 브라우저에서 엽니다.

npx allure open

5. GitHub Actions 또는 CI/CD 환경에서 Allure Reports 생성

CI/CD 환경에서 Allure Reports를 생성하려면 보고서를 아티팩트로 저장하거나 외부에서 확인할 수 있도록 설정합니다.

GitHub Actions 예시

.github/workflows/playwright-allure.yml

name: Playwright Allure Reports

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install dependencies
        run: |
          npm ci
          npx playwright install

      - name: Run Playwright tests
        run: npx playwright test

      - name: Generate Allure Reports
        run: npx allure generate allure-results --clean

      - name: Upload Allure Reports as artifact
        uses: actions/upload-artifact@v3
        with:
          name: allure-report
          path: allure-report

이 설정으로 Playwright 테스트가 실행된 후, Allure Reports가 생성되고 GitHub Actions의 아티팩트로 저장됩니다.

6. Allure Reports에 포함되는 추가 정보

  • 스크린샷: 테스트 실패 시 use: { screenshot: 'only-on-failure' } 설정으로 캡처된 이미지를 포함.
  • 비디오: use: { video: 'retain-on-failure' }로 실패한 테스트의 실행 비디오를 포함.
  • Trace 파일: use: { trace: 'on-first-retry' }로 테스트 단계별 실행 데이터를 포함.

7. Allure Reports의 주요 기능

  1. 테스트 현황 시각화: 성공, 실패, 스킵된 테스트의 요약 제공.
  2. 상세 단계별 기록: 각 테스트의 단계별 결과와 로그 확인 가능.
  3. 첨부 파일 제공: 스크린샷, 비디오, Trace 파일 등 첨부.
  4. 플랫폼별 결과 확인: 브라우저별, 환경별 테스트 결과 비교 가능.

Allure Reports와 Playwright를 연동하면 테스트 실행 결과를 직관적이고 시각적으로 확인할 수 있습니다. 이를 통해 개발자는 테스트 실패 원인을 쉽게 분석하고, QA 팀은 전체 테스트 상태를 효율적으로 관리할 수 있습니다. CI/CD 환경에서 Allure Reports를 자동 생성하면, 팀 전체의 협업 효율성이 더욱 높아질 것입니다.


HTML Reporter

Playwright의 HTML Reporter는 테스트 결과를 직관적이고 시각적으로 확인할 수 있는 웹 기반 보고서를 생성합니다. HTML Reporter는 Playwright에서 기본적으로 제공되며, 추가 설치 없이 사용할 수 있습니다. 아래는 Playwright의 HTML Reporter를 설정하고 사용하는 방법을 단계별로 설명합니다.

1. HTML Reporter 활성화

Playwright의 playwright.config.js 또는 playwright.config.ts 파일에서 HTML Reporter를 설정합니다.

설정 예시
const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
  reporter: [
    ['html', { outputFolder: 'playwright-report', open: 'never' }]
  ],
  use: {
    screenshot: 'only-on-failure', // 실패 시 스크린샷 저장
    video: 'retain-on-failure',   // 실패 시 비디오 기록
    trace: 'on-first-retry'       // 첫 번째 재시도 시 Trace 파일 생성
  }
});
주요 옵션
  • outputFolder: HTML 보고서 파일이 저장될 디렉토리. 기본값은 playwright-report.
  • open:
    • 'always': 테스트 실행 후 자동으로 보고서 열기.
    • 'on-failure': 테스트가 실패한 경우에만 보고서 열기.
    • 'never': 자동으로 열지 않음(기본값).

2. 테스트 실행

Playwright 테스트를 실행하면 HTML 보고서가 자동으로 생성됩니다.

실행 명령어
npx playwright test
실행 결과
  • 테스트 실행 후 playwright-report 디렉토리가 생성됩니다.
  • 디렉토리 안에는 HTML 형식의 보고서와 관련 데이터 파일이 저장됩니다.

3. HTML Report 확인

로컬에서 HTML 보고서 열기

HTML 보고서를 로컬에서 열려면 다음 명령어를 사용합니다.

npx playwright show-report
  • 기본적으로 브라우저가 열리고 playwright-report/index.html 파일이 표시됩니다.
  • 보고서는 테스트의 성공, 실패, 스킵 상태를 요약하고 각 테스트의 상세 정보를 제공합니다.

4. CI/CD에서 HTML Reporter 사용

4.1 GitHub Actions에서 HTML Report 생성

GitHub Actions 파이프라인에서 HTML 보고서를 생성하고 업로드하려면 다음 .github/workflows/playwright.yml 파일을 설정합니다.

name: Playwright HTML Reports

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install dependencies
        run: |
          npm ci
          npx playwright install

      - name: Run Playwright tests
        run: npx playwright test

      - name: Upload HTML report as artifact
        uses: actions/upload-artifact@v3
        with:
          name: html-report
          path: playwright-report
결과
  • HTML 보고서는 GitHub Actions의 아티팩트로 업로드됩니다.
  • GitHub Actions 대시보드에서 다운로드하거나 공유할 수 있습니다.

5. HTML Report의 주요 기능

  • 테스트 상태 요약: 성공, 실패, 스킵된 테스트를 시각적으로 보여줍니다.
  • 상세 정보 제공: 각 테스트의 실행 로그, 실패한 테스트의 스크린샷, 비디오, Trace 파일 등 확인 가능.
  • 필터 기능: 브라우저, 테스트 파일, 태그 등을 기준으로 결과를 필터링.
  • Trace 통합: Trace 파일이 활성화된 경우, 보고서에서 Trace Viewer로 바로 연결됩니다.

6. HTML Reporter 커스터마이징

Playwright는 HTML Reporter의 경로나 열기 동작을 커스터마이징할 수 있습니다.

보고서 출력 경로 변경
['html', { outputFolder: 'custom-report-folder' }]
테스트 실패 시 자동 열기
['html', { open: 'on-failure' }]

Playwright의 HTML Reporter는 설치나 복잡한 설정 없이 테스트 결과를 시각화할 수 있는 간단하고 강력한 도구입니다. 특히 테스트 실패 시 자동으로 스크린샷, 비디오, Trace 정보를 확인할 수 있어 디버깅 과정이 쉬워집니다. CI/CD 파이프라인과 연동하면 팀 전체가 손쉽게 결과를 공유하고 분석할 수 있습니다.