Поделиться через


Краткое руководство. Настройка непрерывного сквозного тестирования с помощью рабочих областей Playwright

В этом кратком руководстве вы настраиваете непрерывное комплексное тестирование с помощью рабочих областей Playwright, чтобы проверить правильность работы веб-приложения в разных браузерах и операционных системах при каждом фиксе кода и легко устранять неполадки с помощью панели инструментов сервиса. Узнайте, как добавить тесты Playwright в рабочий процесс непрерывной интеграции (CI), например GitHub Actions, Azure Pipelines или другие платформы CI.

После выполнения этого краткого руководства у вас есть рабочий процесс CI, который запускает набор тестов Playwright в большом масштабе и помогает легко устранять неполадки с помощью рабочих областей Playwright.

Это важно

Рабочие области Playwright в настоящее время находятся в бета-версии. Юридические условия, применимые к функциям Azure, которые находятся в бета-версии, предварительной версии или в противном случае еще не выпущены в общедоступную версию, см . в дополнительных условиях использования для предварительных версий Microsoft Azure.

Предпосылки

Получение URL-адреса конечной точки региона службы

В конфигурации службы необходимо предоставить конечную точку службы для конкретного региона. Конечная точка зависит от региона Azure, выбранного при создании рабочей области.

Чтобы получить URL-адрес конечной точки службы и сохранить его в виде секрета рабочего процесса CI, выполните следующие действия:

  1. Войдите на портал Azure с помощью учетной записи Azure и перейдите в рабочую область.

  2. Выберите страницу "Начало работы ".

    Снимок экрана: переход на страницу

  3. Чтобы добавить конечную точку региона в настройке, скопируйте URL-адрес конечной точки службы.

    URL-адрес конечной точки соответствует региону Azure, выбранному при создании рабочей области.

  4. Сохраните URL-адрес конечной точки службы в секрете рабочего процесса CI:

    Имя секрета Ценность
    PLAYWRIGHT_SERVICE_URL Вставьте URL-адрес конечной точки, скопированный ранее.

Добавление файла конфигурации службы

Если у вас нет тестов Playwright, настроенных для запуска со службой, добавьте файл конфигурации службы в репозиторий. На следующем шаге необходимо указать этот файл конфигурации службы в интерфейсе командной строки playwright.

  1. Создайте файл playwright.service.config.ts вместе с файлом playwright.config.ts .

    При необходимости используйте playwright.service.config.ts файл в примере репозитория.

  2. Добавьте в него следующее содержимое:

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

    По умолчанию конфигурация службы позволяет ускорить конвейеры сборки, выполняя тесты параллельно с помощью браузеров, размещенных в облаке.

  3. Сохраните и закоммитьте файл в репозиторий исходного кода.

Обновление файла package.json

Обновите файл package.json в вашем репозитории, чтобы добавить сведения о пакете Playwright Workspaces в разделе devDependencies.

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

Установка пакета службы

Установите в своем проекте пакет Playwright Workspaces.

dotnet add package Azure.Developer.Playwright.NUnit --prerelease

Эта команда обновляет файл проекта csproj , добавив сведения о пакете службы в ItemGroup раздел. Не забудьте зафиксировать эти изменения.

  <ItemGroup>
    <PackageReference Include="Azure.Developer.Playwright.NUnit" Version="1.0.0-beta.2" />
  </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. Сохраните и закоммитьте файл в репозиторий исходного кода.

Настройка проверки подлинности

Компьютер CI, на котором выполняются тесты Playwright, должен пройти проверку подлинности с помощью службы Playwright Workspaces, чтобы получить браузеры для выполнения тестов.

Служба предлагает два метода проверки подлинности: идентификатор Microsoft Entra и маркеры доступа. Настоятельно рекомендуется использовать идентификатор Microsoft Entra для проверки подлинности конвейеров.

Настройка проверки подлинности с помощью идентификатора Microsoft Entra

Если вы используете GitHub Actions, вы можете подключиться к службе с помощью GitHub OpenID Connect. Выполните действия, чтобы настроить интеграцию:

Предпосылки

Вариант 1. Приложение Microsoft Entra

Вариант 2. Управляемое удостоверение, назначаемое пользователем

Создавайте секреты GitHub
  • Добавьте значения, которые вы получили на предыдущем шаге в качестве секретов в репозиторий GitHub. См . раздел "Настройка секрета действия GitHub". Эти переменные используются в рабочем процессе GitHub Action в последующих шагах.
Секрет Github Источник (приложение Microsoft Entra или управляемое удостоверение)
AZURE_CLIENT_ID Идентификатор клиента
AZURE_SUBSCRIPTION_ID ID подписки
AZURE_TENANT_ID Идентификатор каталога (клиента)

Замечание

Для повышения безопасности настоятельно рекомендуется использовать секреты GitHub для хранения конфиденциальных значений вместо того, чтобы включать их напрямую в файле рабочего процесса.

Настройка проверки подлинности с помощью токенов доступа

Осторожность

Настоятельно рекомендуется использовать идентификатор Microsoft Entra для проверки подлинности в службе. Если вы используете маркеры доступа, см. инструкции по управлению маркерами доступа

Вы можете создать маркер доступа из рабочей области Playwright и использовать его в настройке. Однако настоятельно рекомендуется использовать идентификатор Microsoft Entra для проверки подлинности из-за повышенной безопасности. Маркеры доступа, хотя и удобны, действуют как долговременные пароли и более подвержены компрометации.

  1. Проверка подлинности с помощью маркеров доступа по умолчанию отключена. Чтобы использовать, включите проверку подлинности на основе маркера доступа.

  2. Настройте проверку подлинности, используя токены доступа.

  3. Сохраните маркер доступа в секрете рабочего процесса CI и используйте его в рабочем процессе GitHub Actions или yaml-файле Azure Pipeline.

Имя секрета Ценность
PLAYWRIGHT_SERVICE_ACCESS_TOKEN Вставьте значение созданного ранее токена доступа.

Обновление определения рабочего процесса

Обновите определение рабочего процесса CI, чтобы запустить тесты Playwright с помощью интерфейса командной строки Playwright. Передайте файл конфигурации службы в качестве входного параметра для интерфейса командной строки Playwright. Вы настраиваете среду, указывая переменные среды.

  1. Откройте определение рабочего процесса CI.

  2. Добавьте следующие шаги, чтобы запустить тесты Playwright в рабочих областях Playwright.

    Ниже описаны изменения рабочего процесса для действий GitHub или Azure Pipelines. Аналогичным образом можно выполнять тесты Playwright с помощью интерфейса командной строки Playwright на других платформах CI.

    
      # 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
    

Обновите определение рабочего процесса CI, чтобы запустить тесты Playwright с помощью интерфейса командной строки Playwright NUnit. Вы настраиваете среду, указывая переменные среды.

  1. Откройте определение рабочего процесса CI.

  2. Добавьте следующие шаги, чтобы запустить тесты Playwright в рабочих областях Playwright.

    Ниже описаны изменения рабочего процесса для действий GitHub или Azure Pipelines. Аналогичным образом можно выполнять тесты Playwright с помощью интерфейса командной строки Playwright на других платформах CI.

    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 тесты Playwright выполняются в среде Playwright на облачных браузерах в 20 параллельных рабочих процессах. Результаты публикуются в службе и могут просматриваться на портале Azure.

Осторожность

При использовании Playwright Workspaces плата взимается на основе общего количества используемых минут тестирования. Если вы являетесь первоначальным пользователем или начинаете пользоваться бесплатной пробной версией, вы можете начать с запуска одного теста в большем масштабе вместо полного набора тестов для предотвращения исчерпания бесплатных минут тестирования.

После успешного выполнения теста можно постепенно увеличить тестовую нагрузку, выполнив дополнительные тесты со службой.

Вы можете выполнить один тест со службой с помощью следующей командной строки:

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

Просмотр тестов и результатов

Playwright может собирать подробные артефакты теста, такие как журналы, трассировки и снимки экрана при каждом тестовом запуске. Сведения о том, как просматривать тестовые артефакты в конвейере CI, см. в документации по Playwright.

Вы успешно настроили непрерывный комплексный рабочий процесс тестирования для выполнения тестов Playwright в большом масштабе в облачных браузерах.