Testovací modul a integrace playwrightu (zastaralé)

Note

Test Engine je zastaralý a v budoucí verzi se odebere. Ukázky Power Platform Playwright slouží k testování možností automatizace v Power Platform a Dynamics 365 službách.

Přehled

Power Apps Test Engine používá jako základní technologii automatizace prohlížeče Playwright. Tato integrace poskytuje Test Engine výkonné a spolehlivé testovací funkce pro různé prohlížeče a zároveň přidává několik vrstev abstrakce pro zjednodušení vytváření testů pro aplikace. Power Platform

Jak Test Engine vylepšuje Playwright

Zatímco Playwrit nabízí vynikající možnosti automatizace prohlížeče, Test Engine tyto možnosti rozšiřuje speciálně pro Power Platform:

Vylepšení testovacího enginu Description
Abstrakce na úrovni aplikace Testovací engine pracuje s objekty na úrovni aplikace namísto prvků DOM, což dělá testy odolnějšími vůči změnám v uživatelském rozhraní.
Integrace Power Fx Test Engine přidává podporu, která umožňuje tvorbu testů s nízkým kódem Power Fx
Vestavěné ověřování Předpřipravené mechanismy ověřování zpracovávají scénáře Microsoft Entra a podmíněného přístupu.
Integrace Dataverse Přímá integrace s Dataverse umožňuje komplexní end-to-end testování
Specializovaní poskytovatelé Optimalizovaní poskytovatelé pro aplikace Canvas a aplikace řízené modelem

Technická implementace

Následující části popisují, jak Test Engine staví na základech automatizace prohlížeče od Playwrightu a integruje je s abstrakcemi specifickými pro daný prohlížeč, což umožňuje robustní a udržovatelnou automatizaci testování. Power Platform

Nadace pro automatizaci prohlížečů

Testovací engine využívá základní funkce Playwrightu pro konzistentní automatizaci prohlížeče:

  • Podpora napříč prohlížeči pro Chrome, Firefox a Microsoft Edge
  • Spolehlivé čekací mechanismy, které automaticky čekají na připravenost prvků
  • Zachycení síťových požadavků pro simulaci odpovědí API
  • Nástroje pro trasování a ladění pro diagnostiku selhání testů

Architektonická integrace testovacího enginu

  • Vrstva poskytovatele: Vrstva poskytovatele v Test Engine přímo komunikuje s rozhraními API Playwright a řídí chování prohlížeče.
  • Objektový model: Testovací engine se místo práce se surovými prvky DOM mapuje na objektové modely specifické pro danou aplikaci.
  • Vrstva Power Fx: Kroky testování napsané v Power Fx jsou interpretovány a prováděny prostřednictvím vrstvy zprostředkovatele

Klíčové technické vlastnosti

Následující části zdůrazňují důležité technické funkce, které Test Engine přidává nad rámec Playwrightu, včetně selektorů specifických pro aplikaci, správy kontextu prohlížeče a přímého přístupu k funkcím Playwrightu pro pokročilé scénáře.

Selektory specifické pro aplikaci

Testovací engine používá selektory specifické pro danou aplikaci místo selektorů CSS nebo 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();

Správa kontextu prohlížeče

Testovací engine spravuje kontexty prohlížeče pro podporu různých scénářů ověřování:

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

Funkce Direct Playwright

I když Test Engine abstrahuje mnoho interakcí s Playwritery, existují scénáře, kdy může být přímý přístup k funkcím Playwriteru cenný. Test Engine nabízí několik funkcí náhledu, které umožňují přímou interakci s Playwrightem v rámci kroků testování pomocí Power Fx.

Používání funkcí Playwrightu v Test Engine

Testovací engine obsahuje následující funkce náhledu, které vám umožňují aplikovat možnosti výběru prvků v Playwrightu:

Funkce Description Příklad
Náhled.PlaywrightAkce Provedení akce s prvky pomocí selektorů CSS nebo DOM Preview.PlaywrightAction("//button", "click")
Viz Běžné operace dramatiků
Preview.PlaywrightActionValue Provedení akce, která vyžaduje parametr hodnoty Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Viz Běžné operace s hodnotami akcí Playwright
Preview.PlaywrightScript Spusťte vlastní skript C#, který komunikuje s Playwrightem Preview.PlaywrightScript("sample.csx")
Viz Pokročilé: Vlastní scénáře dramatiků
Preview.Pause Pozastavte provádění testu a zobrazte Playwright Inspector. Preview.Pause()

Note

Chcete-li tyto funkce náhledu používat, musíte je přidat do seznamu povolených funkcí v sekci nastavení testu.

Běžné operace Playwrightu

Následující operace lze provádět pomocí Preview.PlaywrightAction:

Action Description Příklad
click Výběr elementu pomocí události click Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Zkontrolujte, zda prvek existuje Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Počkejte, až bude prvek k dispozici Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Běžné operace s hodnotami akcí v Playwrightu

Následující operace lze provádět s Preview.PlaywrightActionValue:

Action Description Příklad
fill Vyplnění pole formuláře textem Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Vyberte možnost ze seznamu výběru Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Nastavení atributu u elementu Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Kdy použít přímé funkce pro dramatika

I když jsou preferovány abstrakce na úrovni aplikace, přímé funkce Playwrightu jsou užitečné v těchto scénářích:

  • Složité interakce uživatelského rozhraní nepokryté standardními funkcemi testovacího enginu
  • Komponenty třetích stran v Power Platform aplikacích, které vyžadují speciální zacházení
  • Ladění složitých testovacích scénářů, kde je potřeba větší kontrola
  • Pokročilé ověřování stavů nebo vlastností prvků

Příklad: Kombinovaný přístup

Tento příklad demonstruje kombinaci abstrakcí na úrovni aplikace s přímými akcemi Playwrightu:

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

Pokročilé: Scénáře pro dramatiky na míru

Pro vysoce specializované scénáře si můžete vytvořit vlastní scénáře pro dramatiky:

  1. Vytvořte soubor s vlastní logikou pro dramatika .csx
  2. Reference požadovala sestavy Playwright
  3. Implementujte požadovanou strukturu tříd
  4. Zavolejte skript ze svých testovacích kroků
// 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
    }
}

Note

Preview.PlaywrightScript je implementován pouze pro debug buildy Test Engine postaveného ze zdrojového kódu, nikoli ve vydaném nástroji pac test run.

Integrace s vývojovým procesem

Následující části popisují, jak lze Test Engine a Playwright použít v lokálním vývojovém prostředí i v prostředí CI/CD a jak podporují řadu pracovních postupů od interaktivního ladění až po automatizované spouštění pipeline.

Místní rozvoj

Pro lokální vývoj poskytuje Test Engine kompletní prostředí:

  • Lokální spuštění v prohlížeči s viditelností v uživatelském rozhraní
  • Postupné provádění testů
  • Podrobné protokoly a diagnostika

Integrace CI/CD

V prostředích CI/CD může Test Engine spouštět Playwright v headless režimu:

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

Osvědčené postupy

Při práci s integrací Playwrightu v Test Engine:

  • Zaměřte se na objekty na úrovni aplikace spíše než na prvky DOM
  • Pro komplexní logiku používejte funkce namísto surového JavaScriptu. Power Fx
  • Využijte vestavěné mechanismy ověřování
  • Vyhrazujte přímé funkce Playwright pro scénáře, kde abstrakce na úrovni aplikace nejsou dostatečné
  • Zkontrolujte vygenerované testy pro optimalizaci z hlediska čitelnosti a údržby