Sdílet prostřednictvím


Integrace testovacího enginu a dramatika (preview)

Poznámka:

Funkce Preview nejsou určené pro normální používání a mohou mít omezené fungování. Jsou to funkce, které jsou poskytnuté před svým oficiálním vydáním, aby si je zákazníci mohli co nejdříve vyzkoušet a mohli nám napsat své názory.

Přehled

Power Apps Test Engine používá `Playwright` jako svou základní technologii automatizace prohlížeče. ... 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 Playwritera

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í.
Power Fx Integrace 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 podmíněného přístupu Microsoft Entra
Dataverse Integrace 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 Chrome, Firefoxa 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.
  • Power Fx Vrstva: Kroky testování napsané v Power Fx jsou interpretovány a prováděny prostřednictvím vrstvy poskytovatele

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 přímého dramatika

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 Playwriterem přímo z kroků vašeho testování. Power Fx

Používání funkcí Playwriteru 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:

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

Poznámka:

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 dramatiků

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

Akce 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í dramatika

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

Akce 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. Požadovaný odkaz Sestavy dramatiků
  3. Implementujte požadovanou strukturu tříd
  4. Zavolejte skript z kroků testu
// 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
    }
}

Poznámka:

Soubor Preview.PlaywrightScript je implementován pouze pro ladicí sestavení Test Engine sestavené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 Playwrit 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í
  • Rezervujte přímé funkce dramatika pro scénáře, kde abstrakce na úrovni aplikace nejsou dostatečné
  • Zkontrolujte vygenerované testy pro optimalizaci z hlediska čitelnosti a údržby