Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Note
De test-engine is afgeschaft en wordt verwijderd in een toekomstige release. Gebruik Power Platform Playwright-voorbeelden voor testautomatiseringsmogelijkheden in Power Platform en Dynamics 365-services.
Overview
Power Apps Test Engine maakt gebruik van Playwright als kerntechnologie voor browserautomatisering. Dankzij deze integratie beschikt Test Engine over krachtige, betrouwbare en browseronafhankelijke testmogelijkheden. Tegelijkertijd worden er meerdere abstractielagen toegevoegd om het maken van tests voor Power Platform toepassingen te vereenvoudigen.
Hoe Test Engine Playwright verbetert
Terwijl Playwright uitstekende mogelijkheden voor browserautomatisering biedt, breidt Test Engine deze mogelijkheden specifiek uit voor Power Platform:
| Test Engine Optimalisatie | Beschrijving |
|---|---|
| Abstracties op app-niveau | Test Engine werkt met objecten op app-niveau in plaats van DOM-elementen, waardoor tests beter bestand zijn tegen wijzigingen in de gebruikersinterface. |
| Power Fx Integratie | Test Engine voegt ondersteuning toe, waardoor een low-code-aanpak voor het schrijven van tests mogelijk wordt Power Fx |
| Ingebouwde authenticatie | Vooraf gebouwde authenticatiemechanismen behandelen Microsoft Entra en scenario's met voorwaardelijke toegang |
| Dataverse Integratie | Directe integratie met Dataverse maakt uitgebreide end-to-end-tests mogelijk |
| Gespecialiseerde aanbieders | Geoptimaliseerde providers voor Canvas-apps en Modelgestuurde apps |
Technische implementatie
In de volgende secties wordt beschreven hoe Test Engine voortbouwt op de browserautomatiseringsbasis van Playwright en deze integreert met specifieke abstracties, waardoor robuuste en onderhoudbare testautomatisering mogelijk wordt. Power Platform
Browserautomatiseringsfundament
Test Engine maakt gebruik van de kernmogelijkheden van Playwright voor consistente browserautomatisering:
- Cross-browserondersteuning voor Chrome, Firefox en Microsoft Edge
- Betrouwbare wachtmechanismen die automatisch wachten tot elementen gereed zijn
- Onderschepping van netwerkverzoeken voor het simuleren van API-reacties
- Hulpmiddelen voor het traceren en debuggen om testfouten te diagnosticeren
Architectonische integratie van Test Engine
- Providerlaag: De providerlaag in Test Engine communiceert rechtstreeks met Playwright API's om het browsergedrag te beheren
- Objectmodel: In plaats van te werken met ruwe DOM-elementen, maakt Test Engine een toewijzing aan applicatiespecifieke objectmodellen
- Power Fx Laag: Teststappen geschreven in Power Fx worden geïnterpreteerd en uitgevoerd via de providerlaag
Belangrijkste technische kenmerken
In de volgende secties worden de belangrijkste technische functies belicht die Test Engine toevoegt aan Playwright, waaronder app-specifieke selectoren, beheer van browsercontext en directe toegang tot Playwright-functies voor geavanceerde scenario's.
App-specifieke selectoren
Test Engine gebruikt app-specifieke selectoren in plaats van CSS of XPath selectoren:
# 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();
Browsercontextbeheer
Test Engine beheert browsercontexten ter ondersteuning van verschillende authenticatiescenario's:
# Test Engine handles browser context automatically
pac test run `
--provider canvas `
--test-plan-file testplan.te.yaml `
--tenant $tenantId `
--environment-id $environmentId
Directe Playwright-functies
Hoewel Test Engine veel Playwright-interacties abstraheert, zijn er scenario's waarin directe toegang tot Playwright-mogelijkheden waardevol kan zijn. Test Engine biedt verschillende previewfuncties waarmee u direct met Playwright kunt communiceren vanuit uw Power Fx-teststappen.
Playwright-functies gebruiken in Test Engine
Test Engine bevat de volgende voorbeeldfuncties waarmee u de elementselectiemogelijkheden van Playwright kunt toepassen:
| Function | Beschrijving | Example |
|---|---|---|
| Preview.PlaywrightAction | Een actie uitvoeren op elementen met behulp van CSS of DOM-selectoren | Preview.PlaywrightAction("//button", "click") Zie Algemene Acties van Toneelschrijvers |
| Preview.PlaywrightActionValue | Een actie uitvoeren waarvoor een waardeparameter nodig is | Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello") Zie Algemene toneelschrijver actiewaardebewerkingen |
| Preview.PlaywrightScript | Voer een aangepast C#-script uit dat een interface heeft met Playwright | Preview.PlaywrightScript("sample.csx") Zie Geavanceerd: Aangepaste toneelschrijverscripts |
| Voorvertoning.Pauzeren | Pauzeer de uitvoering van de test en geef de Playwright Inspector weer | Preview.Pause() |
Note
Om deze voorbeeldfuncties te kunnen gebruiken, moet u de voorbeeldfuncties toevoegen aan de toegestane lijst in uw testinstellingen.
Algemene Playwright actie-operaties
De volgende bewerkingen kunnen worden uitgevoerd met Preview.PlaywrightAction:
| Action | Beschrijving | Example |
|---|---|---|
click |
Selectie van een element met behulp van een klikgebeurtenis | Preview.PlaywrightAction("//button[@id='submit']", "click") |
exists |
Controleren of een element bestaat | Preview.PlaywrightAction("//div[@class='error-message']", "exists") |
wait |
Wacht tot een element beschikbaar is | Preview.PlaywrightAction("//table[@data-loading='false']", "wait") |
Algemene Playwright-bewerkingen voor actiewaarde
De volgende bewerkingen kunnen worden uitgevoerd met Preview.PlaywrightActionValue:
| Action | Beschrijving | Example |
|---|---|---|
fill |
Vul een formulierveld in met tekst | Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name") |
select |
Selecteer een optie uit een selectielijst | Preview.PlaywrightActionValue("//select", "select", "Option2") |
setAttribute |
Een kenmerk op een element instellen | Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'") |
Wanneer u directe Playwright-functies moet gebruiken
Hoewel abstracties op app-niveau de voorkeur hebben, zijn directe Playwright-functies nuttig in de volgende scenario's:
- Complexe UI-interacties die niet worden gedekt door standaard Test Engine-functies
- Componenten van derden binnen Power Platform applicaties die speciale verwerking nodig hebben
- Het debuggen van complexe testscenario's waarbij meer controle nodig is
- Geavanceerde validatie van elementstatussen of eigenschappen
Voorbeeld: Gecombineerde aanpak
Dit voorbeeld laat zien hoe u abstracties op app-niveau kunt combineren met directe Playwright-acties:
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");
Geavanceerd: Aangepaste Playwright-scripts
Voor zeer gespecialiseerde scenario's kunt u aangepaste Playwright-scripts maken:
- Maak een
.csxbestand met uw aangepaste Playwright-logica - Verwijs naar vereiste Playwright-assembly's
- Implementeer de vereiste klassenstructuur
- Roep het script aan vanuit uw teststappen
// 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 is alleen geïmplementeerd voor debug-builds van Test Engine die vanuit de broncode zijn gebouwd, niet in de uitgebrachte pac test run tool.
Integratie met ontwikkelingsproces
In de volgende secties wordt beschreven hoe Test Engine en Playwright kunnen worden gebruikt in zowel lokale ontwikkel- als CI/CD-omgevingen, waarbij een scala aan workflows wordt ondersteund, van interactief debuggen tot geautomatiseerde pijplijnuitvoering.
Lokale ontwikkeling
Voor lokale ontwikkeling biedt Test Engine een complete omgeving:
- Lokale browseruitvoering met UI-zichtbaarheid
- Stapsgewijze testuitvoering
- Gedetailleerde logboeken en diagnostiek
CI/CD-integratie
In CI/CD-omgevingen kan Test Engine Playwright in headless-modus uitvoeren:
# 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)"
Beste praktijken
Wanneer u werkt met de Playwright-integratie van Test Engine:
- focus op objecten op app-niveau in plaats van DOM-elementen
- gebruik Power Fx functies voor complexe logica in plaats van ruwe JavaScript
- Maak gebruik van ingebouwde authenticatiemechanismen
- Reserveer directe Playwright-functies voor scenario's waarin abstracties op app-niveau onvoldoende zijn
- Controleer gegenereerde tests om de leesbaarheid en het onderhoud te optimaliseren