다음을 통해 공유


빠른 시작: Playwright 작업 영역을 사용하여 연속 엔드투엔드 테스트 설정

퀵스타트에서는 Playwright 작업 영역을 사용하여 지속적인 엔드투엔드 테스트를 설정합니다. 이를 통해 모든 코드 커밋이 이루어질 때마다 웹앱이 다양한 브라우저와 운영 체제에서 올바르게 실행되는지를 확인하고, 서비스 대시보드를 사용하여 테스트를 쉽게 문제 해결할 수 있습니다. GitHub Actions, Azure Pipelines 또는 기타 CI 플랫폼과 같은 CI(연속 통합) 워크플로에 Playwright 테스트를 추가하는 방법을 알아봅니다.

이 빠른 시작을 완료하면 Playwright 테스트 제품군을 대규모로 실행하고 Playwright 작업 영역을 사용하여 테스트 문제를 쉽게 해결할 수 있는 CI 워크플로가 있습니다.

필수 조건

서비스 지역 엔드포인트 URL 가져오기

서비스 구성에서는 지역별 서비스 엔드포인트를 제공해야 합니다. 엔드포인트는 작업 영역을 만들 때 선택한 Azure 지역에 따라 다릅니다.

서비스 엔드포인트 URL을 가져오고 CI 워크플로 비밀로 저장하려면 다음 단계를 수행합니다.

  1. Azure 계정으로 Azure Portal 에 로그인하고 작업 영역으로 이동합니다.

  2. 시작 페이지를 선택합니다.

    시작 페이지로 이동하는 방법을 보여 주는 스크린샷

  3. 설정에 지역 엔드포인트 추가에서 서비스 엔드포인트 URL을 복사합니다.

    엔드포인트 URL은 작업 영역을 만들 때 선택한 Azure 지역과 일치합니다.

  4. 서비스 엔드포인트 URL을 CI 워크플로 비밀에 저장합니다.

    비밀 이름 가치
    PLAYWRIGHT_SERVICE_URL 이전에 복사한 엔드포인트 URL을 붙여넣습니다.

서비스 구성 파일 추가

Playwright 테스트가 서비스와 함께 실행되도록 구성되지 않은 경우 리포지토리에 서비스 구성 파일을 추가합니다. 다음 단계에서는 Playwright CLI에서 이 서비스 구성 파일을 지정합니다.

  1. playwright.config.ts 파일과 함께 새 파일 playwright.service.config.ts를 만듭니다.

    필요에 따라 샘플 리포지토리playwright.service.config.ts 파일을 사용합니다.

  2. 다음 콘텐츠를 추가합니다.

    import { defineConfig } from '@playwright/test';
    import { createAzurePlaywrightConfig, ServiceOS } from '@azure/playwright';
    import { DefaultAzureCredential } from '@azure/identity';
    import config from './playwright.config';
    
    /* Learn more about service configuration at https://aka.ms/pww/docs/config */
    export default defineConfig(
      config,
      createAzurePlaywrightConfig(config, {
        exposeNetwork: '<loopback>',
        connectTimeout: 3 * 60 * 1000, // 3 minutes
        os: ServiceOS.LINUX,
        credential: new DefaultAzureCredential(),
      })
    );
    

    기본적으로 서비스 구성을 사용하면 클라우드 호스팅 브라우저를 사용하여 병렬로 테스트를 실행하여 빌드 파이프라인을 가속화할 수 있습니다.

  3. 파일을 저장하고 소스 코드 리포지토리에 커밋합니다.

package.json 파일 업데이트

리포지토리의 package.json 파일을 업데이트하여 섹션의 Playwright 작업 영역 패키지 devDependencies 에 대한 세부 정보를 추가합니다.

"devDependencies": {
    "@azure/playwright": "latest"
}

서비스 패키지 설치

프로젝트에서 Playwright 작업 영역 패키지를 설치합니다.

dotnet add package Azure.Developer.Playwright.NUnit

이 명령은 ItemGroup 섹션에 서비스 패키지 세부 정보를 추가하여 프로젝트의 csproj 파일을 업데이트합니다. 변경 내용을 커밋하는 것을 잊지 마세요.

  <ItemGroup>
    <PackageReference Include="Azure.Developer.Playwright.NUnit" Version="1.0.0" />
  </ItemGroup>

서비스 구성 설정

  1. 프로젝트의 루트 디렉터리에 새 파일 PlaywrightServiceNUnitSetup.cs를 만듭니다. 이 파일은 서비스를 통해 클라이언트의 인증을 용이하게 합니다.
  2. 다음 콘텐츠를 추가합니다.
using Azure.Developer.Playwright.NUnit;
using Azure.Identity;
using System.Runtime.InteropServices;
using System;

namespace PlaywrightService.SampleTests; // Remember to change this as per your project namespace

[SetUpFixture]
public class PlaywrightServiceNUnitSetup : PlaywrightServiceBrowserNUnit
{
    public PlaywrightServiceNUnitSetup() : base(
        credential: new DefaultAzureCredential(),
    )
    {
        // no-op
    }
}
  1. 파일을 저장하고 소스 코드 리포지토리에 커밋합니다.

인증 설정

Playwright 테스트를 실행하는 CI 컴퓨터는 브라우저가 테스트를 실행하도록 하기 위해 Playwright 작업 영역 서비스를 사용하여 인증해야 합니다.

이 서비스는 두 가지 인증 방법인 Microsoft Entra ID 및 액세스 토큰을 제공합니다. 파이프라인을 인증하려면 Microsoft Entra ID를 사용하는 것이 좋습니다.

Microsoft Entra ID를 사용하여 인증 설정

GitHub Actions를 사용하는 경우 GitHub OpenID Connect를 사용하여 서비스에 연결할 수 있습니다. 통합을 설정하려면 다음 단계를 따릅니다.

필수 조건

옵션 1: Microsoft Entra 애플리케이션

옵션 2: 사용자 할당 관리 ID

GitHub 비밀 만들기
  • 이전 단계에서 얻은 값을 GitHub 리포지토리에 비밀로 추가합니다. GitHub 작업 비밀 설정을 참조하세요. 이러한 변수는 후속 단계의 GitHub 작업 워크플로에서 사용됩니다.
GitHub 비밀 원본(Microsoft Entra 애플리케이션 또는 관리 ID)
AZURE_CLIENT_ID 클라이언트 ID
AZURE_SUBSCRIPTION_ID 구독 ID
AZURE_TENANT_ID 디렉터리(테넌트) ID

비고

보안을 강화하려면 워크플로 파일에 직접 포함하는 대신 GitHub Secrets를 사용하여 중요한 값을 저장하는 것이 좋습니다.

액세스 토큰을 사용하여 인증 설정

주의

서비스에 대한 인증에 Microsoft Entra ID를 사용하는 것이 좋습니다. 액세스 토큰을 사용하는 경우 액세스 토큰 관리 방법을 참조하세요.

Playwright 작업 영역에서 액세스 토큰을 생성하고 설정에서 사용할 수 있습니다. 그러나 보안이 강화된 Microsoft Entra ID를 인증에 사용하는 것이 좋습니다. 액세스 토큰은 편리하지만 수명이 긴 암호처럼 작동하며 손상되기 쉽습니다.

  1. 액세스 토큰을 사용하는 인증은 기본적으로 사용하지 않도록 설정됩니다. 사용하려면 액세스 토큰 기반 인증 사용하도록 합니다.

  2. 액세스 토큰을 사용한 인증 설정.

  3. 액세스 토큰을 CI 워크플로 비밀에 저장하고 GitHub Actions 워크플로 또는 Azure Pipeline YAML 파일에서 사용합니다.

비밀 이름 가치
PLAYWRIGHT_SERVICE_ACCESS_TOKEN 이전에 만든 액세스 토큰 값을 붙여넣습니다.

워크플로 정의 업데이트

Playwright CLI를 사용하여 Playwright 테스트를 실행하도록 CI 워크플로 정의를 업데이트합니다. 서비스 구성 파일을 Playwright CLI에 대한 입력 매개 변수로 전달합니다. 환경 변수를 지정하여 환경을 구성합니다.

  1. 워크플로 정의를 엽니다.

  2. 다음 단계를 추가하여 Playwright 작업 영역에서 Playwright 테스트를 실행합니다.

    다음 단계에서는 GitHub Actions 또는 Azure Pipelines의 워크플로 변경 내용을 설명합니다. 마찬가지로 다른 CI 플랫폼에서 Playwright CLI를 사용하여 Playwright 테스트를 실행할 수 있습니다.

    
      # This step is to sign-in to Azure to run tests from GitHub Action workflow. 
      # Choose how to set up authentication to Azure from GitHub Actions. This is one example. 
      name: Playwright Tests (Playwright Workspaces)
      on:
        push:
          branches: [main, master]
        pull_request:
          branches: [main, master]
    
      permissions: # Required when using Microsoft Entra ID to authenticate
        id-token: write
        contents: read
    
      jobs:
        test:
          timeout-minutes: 60
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v4
    
            - name: Login to Azure with AzPowershell (enableAzPSSession true)
              uses: azure/login@v2
              with:
                client-id: ${{ secrets.AZURE_CLIENT_ID }} # GitHub Open ID connect values copied in previous steps
                tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
                enable-AzPSSession: true
    
            - name: Install dependencies
              working-directory: path/to/playwright/folder # update accordingly
              run: npm ci
    
            - name: Run Playwright tests
              working-directory: path/to/playwright/folder # update accordingly
              env:
                # Regional endpoint for Playwright Workspaces
                PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
                # PLAYWRIGHT_SERVICE_ACCESS_TOKEN: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }} # Not recommended, use Microsoft Entra ID authentication. 
              run: npx playwright test -c playwright.service.config.ts --workers=20
    
            - name: Upload Playwright report
              uses: actions/upload-artifact@v3
              if: always()
              with:
                name: playwright-report
                path: path/to/playwright/folder/playwright-report/ # update accordingly
                retention-days: 10
    

Playwright NUnit CLI로 Playwright 테스트를 실행하도록 CI 워크플로 정의를 업데이트합니다. 환경 변수를 지정하여 환경을 구성합니다.

  1. 워크플로 정의를 엽니다.

  2. 다음 단계를 추가하여 Playwright 작업 영역에서 Playwright 테스트를 실행합니다.

    다음 단계에서는 GitHub Actions 또는 Azure Pipelines의 워크플로 변경 내용을 설명합니다. 마찬가지로 다른 CI 플랫폼에서 Playwright CLI를 사용하여 Playwright 테스트를 실행할 수 있습니다.

    on:
      push:
        branches: [ main, master ]
      pull_request:
        branches: [ main, master ]
    permissions: # Required when using AuthType as EntraId
      id-token: write
      contents: read
    jobs:
      test:
        timeout-minutes: 60
        runs-on: ubuntu-latest
          steps:
          - uses: actions/checkout@v4
        # This step is to sign-in to Azure to run tests from GitHub Action workflow. 
        # Choose how to set up authentication to Azure from GitHub Actions. This is one example. 
    
          - name: Login to Azure with AzPowershell (enableAzPSSession true) 
            uses: azure/login@v2 
            with: 
              client-id: ${{ secrets.AZURE_CLIENT_ID }} # GitHub Open ID connect values copied in previous steps
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}  
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}  
              enable-AzPSSession: true 
    
          - name: Setup .NET
            uses: actions/setup-dotnet@v4
            with:
              dotnet-version: 8.0.x
    
          - name: Restore dependencies
            run: dotnet restore
            working-directory: path/to/playwright/folder # update accordingly
    
          - name: Build
            run: dotnet build --no-restore
            working-directory: path/to/playwright/folder # update accordingly
    
          - name: Run Playwright tests
              working-directory: path/to/playwright/folder # update accordingly
            env:
              # Regional endpoint for Playwright Workspaces
              PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
              # PLAYWRIGHT_SERVICE_ACCESS_TOKEN: ${{ secrets.PLAYWRIGHT_SERVICE_ACCESS_TOKEN }} # Not recommended, use Microsoft Entra ID authentication. 
            run: dotnet test -- NUnit.NumberOfTestWorkers=20
    
          - name: Upload Playwright report
            uses: actions/upload-artifact@v3
            if: always()
            with:
              name: playwright-report
              path: path/to/playwright/folder/playwright-report/ # update accordingly
              retention-days: 10
    
  1. 변경 내용을 저장하고 커밋합니다.

    CI 워크플로가 트리거되면 20명의 병렬 작업자에 걸쳐 클라우드 호스팅 브라우저의 Playwright 작업 영역에서 Playwright 테스트가 실행됩니다. 결과는 서비스에 게시되며 Azure Portal에서 볼 수 있습니다.

주의

Playwright 작업 영역을 사용하면 사용된 총 테스트 시간(분)에 따라 요금이 청구됩니다. 처음 사용자이거나 무료 평가판을 시작하는 경우 전체 테스트 제품군 대신 대규모로 단일 테스트를 실행하여 무료 테스트 시간(분)이 소모되지 않도록 할 수 있습니다.

테스트가 성공적으로 실행되었는지 유효성을 검사한 후 서비스에 대해 더 많은 테스트를 실행하여 테스트 로드를 점진적으로 늘릴 수 있습니다.

다음 명령줄을 사용하여 서비스에서 단일 테스트를 실행할 수 있습니다.

npx playwright test {name-of-file.spec.ts} --config=playwright.service.config.ts

테스트 실행 및 결과 보기

Playwright는 모든 테스트 실행에서 로그, 추적 및 스크린샷과 같은 풍부한 테스트 아티팩트 수집할 수 있습니다. CI 파이프라인 내에서 테스트 아티팩트 보기 방법을 알아보려면 Playwright 설명서를 참조하세요.

클라우드 호스팅 브라우저에서 대규모로 Playwright 테스트를 실행하도록 연속 엔드투엔드 테스트 워크플로를 올바르게 설정했습니다.