퀵스타트에서는 Playwright 작업 영역을 사용하여 지속적인 엔드투엔드 테스트를 설정합니다. 이를 통해 모든 코드 커밋이 이루어질 때마다 웹앱이 다양한 브라우저와 운영 체제에서 올바르게 실행되는지를 확인하고, 서비스 대시보드를 사용하여 테스트를 쉽게 문제 해결할 수 있습니다. GitHub Actions, Azure Pipelines 또는 기타 CI 플랫폼과 같은 CI(연속 통합) 워크플로에 Playwright 테스트를 추가하는 방법을 알아봅니다.
이 빠른 시작을 완료하면 Playwright 테스트 제품군을 대규모로 실행하고 Playwright 작업 영역을 사용하여 테스트 문제를 쉽게 해결할 수 있는 CI 워크플로가 있습니다.
필수 조건
활성 구독이 있는 Azure 계정. Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
극작가 작업 영역입니다. 빠른 시작: 대규모 Playwright 테스트 실행을 완료하고 작업 영역을 만듭니다.
- GitHub 계정. GitHub 계정이 없으면 무료 계정을 만들 수 있습니다.
- Playwright 테스트 사양 및 GitHub Actions 워크플로가 포함된 GitHub 리포지토리입니다. 리포지토리를 만들려면 새 리포지토리 만들기를 참조하세요.
- GitHub Actions 워크플로입니다. GitHub Actions를 시작하는 데 도움이 필요한 경우 첫 번째 워크플로 만들기를 참조하세요.
- GitHub Actions에서 Azure로의 인증을 설정합니다. GitHub Actions를 사용하여 Azure에 연결하는 방법을 참조하세요.
서비스 지역 엔드포인트 URL 가져오기
서비스 구성에서는 지역별 서비스 엔드포인트를 제공해야 합니다. 엔드포인트는 작업 영역을 만들 때 선택한 Azure 지역에 따라 다릅니다.
서비스 엔드포인트 URL을 가져오고 CI 워크플로 비밀로 저장하려면 다음 단계를 수행합니다.
Azure 계정으로 Azure Portal 에 로그인하고 작업 영역으로 이동합니다.
시작 페이지를 선택합니다.
설정에 지역 엔드포인트 추가에서 서비스 엔드포인트 URL을 복사합니다.
엔드포인트 URL은 작업 영역을 만들 때 선택한 Azure 지역과 일치합니다.
서비스 엔드포인트 URL을 CI 워크플로 비밀에 저장합니다.
비밀 이름 가치 PLAYWRIGHT_SERVICE_URL 이전에 복사한 엔드포인트 URL을 붙여넣습니다.
서비스 구성 파일 추가
Playwright 테스트가 서비스와 함께 실행되도록 구성되지 않은 경우 리포지토리에 서비스 구성 파일을 추가합니다. 다음 단계에서는 Playwright CLI에서 이 서비스 구성 파일을 지정합니다.
playwright.config.ts파일과 함께 새 파일playwright.service.config.ts를 만듭니다.필요에 따라 샘플 리포지토리의
playwright.service.config.ts파일을 사용합니다.다음 콘텐츠를 추가합니다.
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(), }) );기본적으로 서비스 구성을 사용하면 클라우드 호스팅 브라우저를 사용하여 병렬로 테스트를 실행하여 빌드 파이프라인을 가속화할 수 있습니다.
파일을 저장하고 소스 코드 리포지토리에 커밋합니다.
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>
서비스 구성 설정
- 프로젝트의 루트 디렉터리에 새 파일
PlaywrightServiceNUnitSetup.cs를 만듭니다. 이 파일은 서비스를 통해 클라이언트의 인증을 용이하게 합니다. - 다음 콘텐츠를 추가합니다.
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
}
}
- 파일을 저장하고 소스 코드 리포지토리에 커밋합니다.
인증 설정
Playwright 테스트를 실행하는 CI 컴퓨터는 브라우저가 테스트를 실행하도록 하기 위해 Playwright 작업 영역 서비스를 사용하여 인증해야 합니다.
이 서비스는 두 가지 인증 방법인 Microsoft Entra ID 및 액세스 토큰을 제공합니다. 파이프라인을 인증하려면 Microsoft Entra ID를 사용하는 것이 좋습니다.
Microsoft Entra ID를 사용하여 인증 설정
GitHub Actions를 사용하는 경우 GitHub OpenID Connect를 사용하여 서비스에 연결할 수 있습니다. 통합을 설정하려면 다음 단계를 따릅니다.
필수 조건
옵션 1: Microsoft Entra 애플리케이션
Azure Portal, Azure CLI 또는 Azure PowerShell에서 서비스 주체를 사용하여 Microsoft Entra 애플리케이션을 만듭니다.
클라이언트 ID, 구독 ID 및 디렉터리(테넌트) ID의 값을 복사하여 나중에 GitHub Actions 워크플로에서 사용합니다.
이전 단계에서 만든 서비스 주체에
Owner또는Contributor역할을 할당합니다. 이러한 역할은 극작가 작업 영역에 할당되어야 합니다. 자세한 내용은 액세스 관리 방법을 참조하세요.GitHub Actions에서 발급한 토큰을 GitHub 리포지토리에 신뢰하도록 Microsoft Entra 애플리케이션 에서 페더레이션 ID 자격 증명을 구성합니다.
옵션 2: 사용자 할당 관리 ID
클라이언트 ID, 구독 ID 및 디렉터리(테넌트) ID의 값을 복사하여 나중에 GitHub Actions 워크플로에서 사용합니다.
이전 단계에서 만든 사용자가 할당한 관리 ID에
Owner또는Contributor역할을 할당합니다. 이러한 역할은 극작가 작업 영역에 할당되어야 합니다. 자세한 내용은 액세스 관리 방법을 참조하세요.GitHub Actions에서 발급한 토큰을 GitHub 리포지토리에 신뢰하도록 사용자 할당 관리 ID에서 페더레이션 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를 인증에 사용하는 것이 좋습니다. 액세스 토큰은 편리하지만 수명이 긴 암호처럼 작동하며 손상되기 쉽습니다.
액세스 토큰을 사용하는 인증은 기본적으로 사용하지 않도록 설정됩니다. 사용하려면 액세스 토큰 기반 인증 사용하도록 합니다.
액세스 토큰을 CI 워크플로 비밀에 저장하고 GitHub Actions 워크플로 또는 Azure Pipeline YAML 파일에서 사용합니다.
| 비밀 이름 | 가치 |
|---|---|
| PLAYWRIGHT_SERVICE_ACCESS_TOKEN | 이전에 만든 액세스 토큰 값을 붙여넣습니다. |
워크플로 정의 업데이트
Playwright CLI를 사용하여 Playwright 테스트를 실행하도록 CI 워크플로 정의를 업데이트합니다. 서비스 구성 파일을 Playwright CLI에 대한 입력 매개 변수로 전달합니다. 환경 변수를 지정하여 환경을 구성합니다.
워크플로 정의를 엽니다.
다음 단계를 추가하여 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 워크플로 정의를 업데이트합니다. 환경 변수를 지정하여 환경을 구성합니다.
워크플로 정의를 엽니다.
다음 단계를 추가하여 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
변경 내용을 저장하고 커밋합니다.
CI 워크플로가 트리거되면 20명의 병렬 작업자에 걸쳐 클라우드 호스팅 브라우저의 Playwright 작업 영역에서 Playwright 테스트가 실행됩니다. 결과는 서비스에 게시되며 Azure Portal에서 볼 수 있습니다.
주의
Playwright 작업 영역을 사용하면 사용된 총 테스트 시간(분)에 따라 요금이 청구됩니다. 처음 사용자이거나 무료 평가판을 시작하는 경우 전체 테스트 제품군 대신 대규모로 단일 테스트를 실행하여 무료 테스트 시간(분)이 소모되지 않도록 할 수 있습니다.
테스트가 성공적으로 실행되었는지 유효성을 검사한 후 서비스에 대해 더 많은 테스트를 실행하여 테스트 로드를 점진적으로 늘릴 수 있습니다.
다음 명령줄을 사용하여 서비스에서 단일 테스트를 실행할 수 있습니다.
npx playwright test {name-of-file.spec.ts} --config=playwright.service.config.ts
테스트 실행 및 결과 보기
Playwright는 모든 테스트 실행에서 로그, 추적 및 스크린샷과 같은 풍부한 테스트 아티팩트 수집할 수 있습니다. CI 파이프라인 내에서 테스트 아티팩트 보기 방법을 알아보려면 Playwright 설명서를 참조하세요.
관련 콘텐츠
클라우드 호스팅 브라우저에서 대규모로 Playwright 테스트를 실행하도록 연속 엔드투엔드 테스트 워크플로를 올바르게 설정했습니다.