Del via


Integrering av testmotor og dramatiker (forhåndsversjon)

Notat

Forhåndsversjonsfunksjonene er ikke ment for produksjonsbruk og kan ha begrenset funksjonalitet. Disse funksjonene er tilgjengelige før en offisiell utgivelse, slik at kunder kan få tidlig tilgang og gi tilbakemeldinger.

Oversikt

Power Apps Test Engine bruker Playwright som sin kjerneteknologi for nettleserautomatisering. Denne integrasjonen gir Test Engine kraftige, pålitelige og testfunksjoner på tvers av nettlesere, samtidig som den legger til flere lag med abstraksjon for å forenkle testoppretting for Power Platform applikasjoner.

Hvordan Test Engine forbedrer Playwright

Mens Playwright tilbyr utmerkede nettleserautomatiseringsfunksjoner, utvider Test Engine disse funksjonene spesielt for Power Platform:

Forbedring av testmotor Description
Abstraksjoner på appnivå Testmotoren fungerer med objekter på appnivå i stedet for DOM-elementer, noe som gjør tester mer motstandsdyktige mot endringer i brukergrensesnittet
Power Fx Integrasjon Test Engine legger til Power Fx støtte, noe som muliggjør en lavkodebasert tilnærming til testredigering
Innebygd autentisering Forhåndsbygde godkjenningsmekanismer håndterer Microsoft Entra og scenarioer for betinget tilgang
Dataverse Integrasjon Direkte integrasjon med Dataverse muliggjør omfattende ende-til-ende-testing
Spesialiserte leverandører Optimaliserte leverandører for lerretsapper og modelldrevne apper

Teknisk gjennomføring

De følgende avsnittene beskriver hvordan Test Engine bygger på Playwrights nettleserautomatiseringsgrunnlag og integrerer det med Power Platform spesifikke abstraksjoner, noe som muliggjør robust og vedlikeholdbar testautomatisering.

Grunnlag for nettleserautomatisering

Test Engine bruker Playwrights kjernefunksjoner for konsekvent nettleserautomatisering:

  • Støtte for Chrome på tvers av nettlesere, Firefox og Microsoft Edge
  • Pålitelige ventemekanismer som automatisk venter på at elementene skal være klare
  • Avskjæring av nettverksforespørsler for simulering av API-svar
  • Sporings- og feilsøkingsverktøy for å diagnostisere testfeil

Test Engines arkitektoniske integrasjon

  • Leverandørlag: Leverandørlaget i testmotoren grensesnitt direkte med Playwrights API-er for å kontrollere nettleseratferd
  • Objektmodell: I stedet for å jobbe med rå DOM-elementer, tilordnes testmotoren til applikasjonsspesifikke objektmodeller
  • Power Fx Lag: Testtrinn som er skrevet inn Power Fx , tolkes og utføres gjennom leverandørlaget

Viktige tekniske funksjoner

De følgende avsnittene fremhever viktige tekniske funksjoner som Test Engine legger til på toppen av Playwright, inkludert appspesifikke velgere, nettleserkontekstadministrasjon og direkte tilgang til Playwright-funksjoner for avanserte scenarier.

App-spesifikke velgere

Test Engine bruker appspesifikke velgere i stedet for CSS eller XPath velgere:

# 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();

Administrasjon av nettleserkontekst

Test Engine administrerer nettleserkontekster for å støtte ulike godkjenningsscenarioer:

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

Direkte dramatiker-funksjoner

Mens Test Engine abstraherer mange Playwright-interaksjoner, er det scenarier der direkte tilgang til Playwright-funksjoner kan være verdifulle. Test Engine har flere forhåndsvisningsfunksjoner som muliggjør direkte interaksjon med Playwright fra testtrinnene dine Power Fx .

Bruke Playwright-funksjoner i Test Engine

Test Engine inkluderer følgende forhåndsvisningsfunksjoner som lar deg bruke Playwrights elementvalgfunksjoner:

Function Description Eksempel
Forhåndsvisning.DramatikerHandling Utføre en handling på elementer ved hjelp av CSS eller DOM-velgere Preview.PlaywrightAction("//button", "click")
Se vanlige actionoperasjoner for dramatikere
Forhåndsvisning.PlaywrightActionValue Utføre en handling som krever en verdiparameter Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Se vanlige handlinger for dramatikerhandlinger
Forhåndsvisning.PlaywrightScript Kjør et egendefinert C#-skript som grensesnitt med Playwright Preview.PlaywrightScript("sample.csx")
Se Avansert: Tilpassede dramatikerskript
Forhåndsvisning.Pause Sett testutførelsen på pause og vis Dramatikerinspektør Preview.Pause()

Notat

Hvis du vil bruke disse forhåndsvisningsfunksjonene, må du legge til forhåndsvisningsfunksjonene i den tillatte listen i delen for testinnstillinger.

Vanlige actionoperasjoner for dramatikere

Følgende operasjoner kan utføres med Preview.PlaywrightAction:

Handling Description Eksempel
click Valg av et element ved hjelp av klikkhendelse Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Sjekk om det finnes et element Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Vent til et element er tilgjengelig Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Vanlige handlingsverdioperasjoner for dramatikere

Følgende operasjoner kan utføres med Preview.PlaywrightActionValue:

Handling Description Eksempel
fill Fylle et skjemafelt med tekst Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Velg et alternativ fra en valgliste Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Angi et attributt for et element Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Når skal du bruke direkte Playwright-funksjoner

Selv om abstraksjoner på appnivå foretrekkes, er direkte Playwright-funksjoner nyttige i disse scenariene:

  • Komplekse grensesnittinteraksjoner som ikke dekkes av standard testmotorfunksjoner
  • Tredjepartskomponenter i Power Platform applikasjoner som trenger spesiell håndtering
  • Feilsøking av komplekse testscenarier der det er behov for mer kontroll
  • Avansert validering av elementtilstander eller egenskaper

Eksempel: Kombinert tilnærming

Dette eksemplet viser hvordan du kombinerer abstraksjoner på appnivå med direkte Playwright-handlinger:

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

Avansert: Tilpassede dramatikerskript

For svært spesialiserte scenarioer kan du opprette egendefinerte Playwright-skript:

  1. Opprett en .csx fil med din tilpassede Playwright-logikk
  2. Referer til nødvendige dramatikersamlinger
  3. Implementer den nødvendige klassestrukturen
  4. Kall opp skriptet fra testtrinnene
// 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
    }
}

Notat

Preview.PlaywrightScript er bare implementert for feilsøkingsbygg av testmotor som er bygd fra kilden, ikke i det utgitte pac test run verktøyet.

Integrasjon med utviklingsprosess

Avsnittene nedenfor beskriver hvordan testmotor og Playwright kan brukes i både lokale utviklings- og CI/CD-miljøer, og støtter en rekke arbeidsflyter fra interaktiv feilsøking til automatisert pipelinekjøring.

Lokal utvikling

For lokal utvikling gir Test Engine et komplett miljø:

  • Lokal nettleserkjøring med UI-synlighet
  • Trinn-for-trinn testutførelse
  • Detaljerte logger og diagnostikk

CI/CD-integrasjon

I CI/CD-miljøer kan Test Engine kjøre Playwright i hodeløs modus:

# 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 fremgangsmåter

Når du arbeider med Test Engines Playwright-integrasjon:

  • Fokuser på objekter på appnivå i stedet for DOM-elementer
  • Bruk Power Fx funksjoner for kompleks logikk i stedet for rå JavaScript
  • Dra nytte av innebygde autentiseringsmekanismer
  • Reserver direkte Playwright-funksjoner for scenarioer der abstraksjoner på appnivå er utilstrekkelige
  • Gjennomgå genererte tester for å optimalisere for lesbarhet og vedlikehold