Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Testmotorn är inaktuell och tas bort i en framtida version. Använd Power Platform Playwright-exempel för testautomatiseringsfunktioner i Power Platform och Dynamics 365 tjänster.
Översikt
Power Apps Test Engine använder Playwright som kärnteknik för webbläsarautomatisering. Den här integreringen ger Test Engine kraftfulla, tillförlitliga testfunktioner över webbläsare samtidigt som den lägger till flera abstraktionslager för att förenkla testskapandet för Power Platform-appar.
Hur Test Engine förbättrar Playwright
Medan Playwright erbjuder utmärkta funktioner för webbläsarautomatisering, utökar Test Engine dessa funktioner specifikt för Power Platform:
| Förbättring av Test Engine | Beskrivning |
|---|---|
| Abstraktioner på appnivå | Test Engine fungerar med objekt på appnivå i stället för DOM-element, vilket gör testerna mer motståndskraftiga mot ändringar i användargränssnittet |
| Power Fx-integrering | Test Engine lägger till stöd för Power Fx vilket möjliggör en lågkodsmetod för testredigering |
| Inbyggd autentisering | Fördefinierade autentiseringsmekanismer hanterar scenarier för Microsoft Entra och villkorlig åtkomst |
| Dataverse-integration | Direkt integration med Dataverse möjliggör omfattande testning från början till slut |
| Specialiserade leverantörer | Optimerade leverantörer för arbetsyteappar och modellbaserade appar |
Tekniskt genomförande
Följande avsnitt beskriver hur Test Engine bygger vidare på Playwright grund för webbläsarautomatisering och integrerar den med Power Platform-specifika abstraktioner, vilket möjliggör robust och lättunderhållen testautomatisering.
Grund för webbläsarautomatisering
Test Engine använder Playwright kärnfunktioner för konsekvent webbläsarautomatisering:
- stöd för Cross-browser för Chrome, Firefox och Microsoft Edge
- Pålitliga väntemekanismer som automatiskt väntar på att elementen ska vara klara
- Avlyssning av nätverksförfrågningar för simulering av API-svar
- Spårnings- och felsökningsverktyg för att diagnostisera testfel
Test Engine arkitektoniska integration
- Providerlager: Providerlagret i Test Engine samverkar direkt med Playwright API:er för att styra webbläsarens beteende
- Objektmodell: I stället för att arbeta med råa DOM-element mappar Test Engine till appspecifika objektmodeller
- Power Fx Lager: Teststeg som skrivs in Power Fx tolkas och körs via providerlagret
Viktiga tekniska funktioner
I följande avsnitt beskrivs viktiga tekniska funktioner som Test Engine lägger till ovanpå Playwright, inklusive appspecifika väljare, hantering av webbläsarkontext och direkt åtkomst till Playwright-funktioner för avancerade scenarier.
Appspecifika väljare
Test Engine använder appspecifika väljare i stället för CSS- eller XPath-väljare:
# 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();
Kontexthantering i webbläsaren
Test Engine hanterar webbläsarkontexter för att stödja olika autentiseringsscenarier:
# Test Engine handles browser context automatically
pac test run `
--provider canvas `
--test-plan-file testplan.te.yaml `
--tenant $tenantId `
--environment-id $environmentId
Direkta Playwright-funktioner
Även om Test Engine abstraherar många Playwright-interaktioner, finns det situationer där direkt åtkomst till Playwright-funktioner kan vara värdefull. Test Engine tillhandahåller flera förhandsgranskningsfunktioner som möjliggör direkt interaktion med Playwright inifrån dina Power Fx teststeg.
Använda Playwright-funktioner i Test Engine
Test Engine innehåller följande förhandsgranskningsfunktioner som gör att du kan använda Playwright-funktioner för val av element:
| Function | Beskrivning | Example |
|---|---|---|
| Preview.PlaywrightAction | Utföra en åtgärd på element med hjälp av CSS- eller DOM-väljare | Preview.PlaywrightAction("//button", "click") Se Vanliga åtgärdsoperationer i Playwright |
| Preview.PlaywrightActionValue | Utföra en åtgärd som kräver en värdeparameter | Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello") Se Vanliga värdeoperationer i Playwright |
| Preview.PlaywrightScript | Köra ett anpassat C#-skript som samverkar med Playwright | Preview.PlaywrightScript("sample.csx") Se Avancerat: Anpassade skript för Playwright |
| Preview.Pause | Pausa testkörningen och visa Playwright Inspector | Preview.Pause() |
Anmärkning
Om du vill använda dessa förhandsgranskningsfunktioner måste du lägga till förhandsversionsfunktionerna i listan över tillåtna i avsnittet testinställningar.
Vanliga åtgärdsoperationer i Playwright
Följande åtgärder kan utföras med Preview.PlaywrightAction:
| Action | Beskrivning | Example |
|---|---|---|
click |
Markering av ett element med hjälp av klickhändelse | Preview.PlaywrightAction("//button[@id='submit']", "click") |
exists |
Kontrollera om det finns ett element | Preview.PlaywrightAction("//div[@class='error-message']", "exists") |
wait |
Vänta på att ett element ska vara tillgängligt | Preview.PlaywrightAction("//table[@data-loading='false']", "wait") |
Vanliga värdeoperationer för Playwright-åtgärder
Följande åtgärder kan utföras med Preview.PlaywrightActionValue:
| Action | Beskrivning | Example |
|---|---|---|
fill |
Fylla ett formulärfält med text | Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name") |
select |
Välj ett alternativ från en urvalslista | Preview.PlaywrightActionValue("//select", "select", "Option2") |
setAttribute |
Ange ett attribut för ett element | Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'") |
När ska man använda direkta Playwright-funktioner?
Abstraktioner på appnivå är att föredra, men direkta Playwright-funktioner är användbara i följande scenarier:
- Komplexa gränssnittsinteraktioner som inte omfattas av standardfunktioner för Test Engine
- Komponenter från tredje part i Power Platform-program som kräver särskild hantering
- Felsöka komplexa testscenarier där mer kontroll behövs
- Avancerad validering av elementtillstånd eller egenskaper
Exempel: Kombinerad metod
Det här exemplet visar hur du kombinerar abstraktioner på appnivå med direkta Playwright-åtgärder:
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");
Avancerat: Anpassade skript för Playwright
För mycket specialiserade scenarier kan du skapa anpassade Playwright-skript:
- Skapa en
.csxfil med din anpassade Playwright-logik - Referera till nödvändiga Playwright-sammansättningar
- Implementera den klasstruktur som krävs
- Anropa skriptet från teststegen
// 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
}
}
Anmärkning
Preview.PlaywrightScript implementeras endast för felsökningsversioner av Test Engine som skapats från källan, inte i det släppta pac test run verktyget.
Integration med utvecklingsprocessen
I följande avsnitt beskrivs hur Test Engine och Playwright kan användas i både lokala utvecklings- och CI/CD-miljöer, med stöd för en mängd olika arbetsflöden från interaktiv felsökning till automatiserad pipelinekörning.
Lokal utveckling
För lokal utveckling tillhandahåller Test Engine en komplett miljö:
- Körning av lokal webbläsare med synlighet för användargränssnittet
- Steg-för-steg-testkörning
- Detaljerade loggar och diagnostik
CI/CD-integrering
I CI/CD-miljöer kan Test Engine köra Playwright i huvudlöst läge:
# 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)"
Metodtips
När du arbetar med Test Engine Playwright-integration:
- Fokusera på objekt på appnivå i stället för DOM-element
- Använd Power Fx-funktioner för komplex logik i stället för rå JavaScript
- Dra nytta av inbyggda autentiseringsmekanismer
- Reservera direkta Playwright-funktioner för scenarier där abstraktioner på appnivå är otillräckliga
- Granska genererade tester för att optimera för läsbarhet och underhåll