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


Интеграция Test Engine и Playwright (предварительный просмотр)

Примечание.

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

Обзор

Power Apps Test Engine использует Playwright в качестве своей основной технологии автоматизации браузера. Эта интеграция обеспечивает Test Engine мощными, надежными и кроссбраузерными возможностями тестирования, а также добавляет несколько уровней абстракции для упрощения создания тестов для Power Platform приложений.

Как Test Engine улучшает работу Playwright

В то время как Playwright предлагает превосходные возможности автоматизации браузера, Test Engine расширяет эти возможности специально для Power Platform:

Улучшение тестового движка Описаниен
Абстракции уровня приложения Test Engine работает с объектами уровня приложения, а не с элементами DOM, что делает тесты более устойчивыми к изменениям пользовательского интерфейса.
Power Fx Интеграция Test Engine добавляет Power Fx поддержку, позволяющую использовать подход с минимальным написанием кода для разработки тестов
Встроенная аутентификация Встроенные механизмы аутентификации обрабатывают Microsoft Entra и сценарии условного доступа
Dataverse Интеграция Прямая интеграция с Dataverse позволяет проводить комплексное сквозное тестирование
Специализированные поставщики Оптимизированные поставщики для приложений Canvas и приложений на основе моделей

Техническая реализация

В следующих разделах описывается, как Test Engine строится на основе автоматизации браузера Playwright и интегрируется с Power Platformспецифичными абстракциями, обеспечивая надежную и поддерживаемую автоматизацию тестирования.

Основа автоматизации браузера

Test Engine использует основные возможности Playwright для последовательной автоматизации браузера:

  • Поддержка кросс-браузеров для Chrome, Firefox и Microsoft Edge
  • Надежные механизмы ожидания, которые автоматически ждут готовности элементов
  • Перехват сетевых запросов для имитации ответов API
  • Инструменты трассировки и отладки для диагностики сбоев тестов

Архитектурная интеграция Test Engine

  • Уровень поставщика: уровень поставщика в Test Engine напрямую взаимодействует с API Playwright для управления поведением браузера.
  • Объектная модель: вместо работы с необработанными элементами DOM, тестовый движок сопоставляет их с объектными моделями, специфичными для приложения.
  • Power Fx Уровень: Тестовые шаги, написанные на Power Fx , интерпретируются и выполняются через уровень поставщика

Основные технические характеристики

В следующих разделах описываются важные технические функции, которые Test Engine добавляет к Playwright, включая селекторы, специфичные для приложений, управление контекстом браузера и прямой доступ к функциям Playwright для расширенных сценариев.

Селекторы, специфичные для приложения

Тестовый движок использует селекторы, специфичные для приложения, вместо селекторов CSS или XPath :

# Test Engine (using app-level selectors)
- testSteps: |
    Select(Button1)

# Equivalent in raw Playwright (using DOM selectors)
    Select(Button1)
# page.locator('div[data-control-name="Button1"]').click();

Управление контекстом браузера

Test Engine управляет контекстами браузера для поддержки различных сценариев аутентификации:

# Test Engine handles browser context automatically
pac test run `
   --provider canvas `
   --test-plan-file testplan.te.yaml `
   --tenant $tenantId `
   --environment-id $environmentId

Функции прямого драматурга

Хотя Test Engine абстрагирует многие взаимодействия Playwright, существуют сценарии, в которых прямой доступ к возможностям Playwright может быть полезным. Test Engine предоставляет несколько функций предварительного просмотра, которые позволяют напрямую взаимодействовать с Playwright из Power Fx шагов теста.

Использование функций Playwright в Test Engine

Test Engine включает в себя следующие функции предварительного просмотра, которые позволяют применять возможности выбора элементов Playwright:

Function Описаниен Пример
Предварительный просмотр.Драматург.Действие Выполнение действия над элементами с использованием CSS или селекторов DOM Preview.PlaywrightAction("//button", "click")
См. Обычные операции драматургического действия
Предварительный просмотр.ДраматургДействиеЗначение Выполнить действие, требующее параметра значения Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
См. Операции со значениями общих действий драматурга
Предварительный просмотр.ДраматургСценарий Выполнить пользовательский скрипт C#, взаимодействующий с Playwright Preview.PlaywrightScript("sample.csx")
См. Дополнительно: Пользовательские сценарии драматурга
Предпросмотр.Пауза Приостановить выполнение теста и отобразить инспектора драматурга Preview.Pause()

Примечание.

Чтобы использовать эти функции предварительного просмотра, необходимо добавить функции предварительного просмотра в список разрешенных в разделе настроек теста.

Операции по общим драматургическим действиям

Следующие операции можно выполнить с помощью Preview.PlaywrightAction:

Действие Описаниен Пример
click Выбор элемента с помощью события клика Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Проверить, существует ли элемент Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Дождитесь, пока элемент станет доступен Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Операции по определению значения действия драматурга

Следующие операции можно выполнить с помощью Preview.PlaywrightActionValue:

Действие Описаниен Пример
fill Заполните поле формы текстом Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Выберите вариант из списка Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Установить атрибут элемента Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Когда использовать прямые функции драматурга

Хотя абстракции уровня приложения являются предпочтительными, прямые функции Playwright полезны в следующих сценариях:

  • Сложные взаимодействия с пользовательским интерфейсом не охватываются стандартными функциями Test Engine
  • Сторонние компоненты в Power Platform приложениях, требующие специальной обработки
  • Отладка сложных тестовых сценариев, где требуется больше контроля
  • Расширенная проверка состояний или свойств элементов

Пример: комбинированный подход

В этом примере демонстрируется объединение абстракций уровня приложения с прямыми действиями Playwright:

testSteps: |
  # Use app-level abstraction for Power Apps control
  Select(SubmitButton);
  
  # Use direct Playwright action for a third-party component
  Preview.PlaywrightAction("//div[@class='custom-calendar']//button[@data-day='15']", "click");
  
  # Wait for a specific condition using Playwright
  Preview.PlaywrightAction("//div[@data-status='complete']", "wait");
  
  # Resume using app-level abstractions
  Assert(Label1.Text = "Submission Complete");

Дополнительно: индивидуальные сценарии драматурга

Для узкоспециализированных сценариев вы можете создать индивидуальные сценарии драматурга:

  1. Создайте .csx файл с вашей собственной логикой Playwright
  2. Необходимые ссылки для собраний драматургов
  3. Реализуйте требуемую структуру классов
  4. Вызовите сценарий из ваших тестовых шагов
// sample.csx
#r "Microsoft.Playwright.dll"
#r "Microsoft.Extensions.Logging.dll"
using Microsoft.Playwright;
using Microsoft.Extensions.Logging;

public class PlaywrightScript {
    public static void Run(IBrowserContext context, ILogger logger) {
        Execute(context, logger).Wait();
    }

    public static async Task Execute(IBrowserContext context, ILogger logger) {
        var page = context.Pages.First();
        // Custom Playwright logic here
    }
}

Примечание.

Preview.PlaywrightScript реализован только для отладочных сборок Test Engine, собранных из исходного кода, а не в выпущенном pac test run инструменте.

Интеграция с процессом разработки

В следующих разделах описывается, как Test Engine и Playwright могут использоваться как в локальных средах разработки, так и в средах CI/CD, поддерживая широкий спектр рабочих процессов — от интерактивной отладки до автоматизированного выполнения конвейера.

Местное развитие

Для локальной разработки Test Engine предоставляет полноценную среду:

  • Локальное выполнение браузера с видимостью пользовательского интерфейса
  • Пошаговое выполнение теста
  • Подробные журналы и диагностика

Интеграция CI/CD

В средах CI/CD Test Engine может запускать Playwright в автономном режиме:

# Example Azure DevOps pipeline step
- task: PowerShell@2
  displayName: 'Run Test Engine Tests'
  inputs:
    script: |
      pac test run `
        --provider canvas `
        --test-plan-file "$(Build.SourcesDirectory)/tests/testplan.te.yaml" `
        --tenant "$(TenantId)" `
        --environment-id "$(EnvironmentId)"

Рекомендации

При работе с интеграцией Playwright Test Engine:

  • Сосредоточьтесь на объектах уровня приложения , а не на элементах DOM
  • Используйте Power Fx функции для сложной логики вместо чистого JavaScript
  • Воспользуйтесь преимуществами встроенных механизмов аутентификации
  • Резервируйте прямые функции Playwright для сценариев, где абстракций уровня приложения недостаточно
  • Проверьте созданные тесты , чтобы оптимизировать их для удобства чтения и обслуживания.