Інтеграція Test Engine та Playwright (застаріла)

Нотатка

Test Engine застарілий і буде видалений у майбутньому випуску. Використовуйте Power Platform Playwright samples для можливостей автоматизації тестування в Power Platform та Dynamics 365 сервісах.

Огляд

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 підтримку, що дозволяє використовувати low-code підхід до створення тестів
Вбудована автентифікація Готові механізми автентифікації обробляють сценарії 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, Test Engine відображає моделі об’єктів для конкретного застосування
  • Power Fx Шар: записані Power Fx кроки тестування інтерпретуються та виконуються через рівень провайдера.

Ключові технічні особливості

У наступних розділах висвітлено важливі технічні функції, які Test Engine додає поверх Playwright, включаючи селектори для конкретних програм, керування контекстом браузера та прямий доступ до функцій Playwright для складних сценаріїв.

Селектори для конкретних додатків

Test Engine використовує селектори для конкретних додатків замість 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 абстрагує багато взаємодій драматургів, існують сценарії, в яких прямий доступ до можливостей драматурга може бути цінним. Test Engine надає кілька функцій попереднього перегляду, які дають змогу безпосередньо взаємодіяти з Playwright на Power Fx етапах тестування.

Використання функцій Playwright у Test Engine

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

Function Опис Приклад
Прев’ю.Дія драматурга Виконання дії над елементами за допомогою CSS селекторів DOM Preview.PlaywrightAction("//button", "click")
Дивись Поширені дії драматурга
Preview.PlaywrightActionValue Виконання дії, для якої потрібен параметр value 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'")

Коли використовувати прямі функції драматурга

У той час як перевага віддається абстракціям на рівні додатка, прямі функції драматурга корисні в таких сценаріях:

  • Складна взаємодія з інтерфейсом користувача, на яку не поширюються стандартні функції Test Engine
  • Компоненти сторонніх виробників у Power Platform програмах, які потребують особливого поводження
  • Налагодження складних тестових сценаріїв, де потрібен більший контроль
  • Розширена перевірка станів або властивостей елементів

Приклад: комбінований підхід

Цей приклад демонструє поєднання абстракцій на рівні додатка з прямими діями драматурга:

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");

Додатково: Користувацькі сценарії драматургів

Для вузькоспеціалізованих сценаріїв можна створювати власні сценарії Playwright:

  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 для сценаріїв, де абстракцій на рівні програми недостатньо
  • Переглядайте згенеровані тести для оптимізації для читабельності та обслуговування