Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Предварительные версии функций не предназначены для использования в производственной среде, а их функциональность может быть ограничена. Они доступны перед официальным выпуском, чтобы клиенты могли досрочно получить доступ и предоставить отзывы.
Обзор
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");
Дополнительно: индивидуальные сценарии драматурга
Для узкоспециализированных сценариев вы можете создать индивидуальные сценарии драматурга:
- Создайте
.csxфайл с вашей собственной логикой Playwright - Необходимые ссылки для собраний драматургов
- Реализуйте требуемую структуру классов
- Вызовите сценарий из ваших тестовых шагов
// 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 для сценариев, где абстракций уровня приложения недостаточно
- Проверьте созданные тесты , чтобы оптимизировать их для удобства чтения и обслуживания.