Partajați prin


Integrare Test Engine și Playwright (previzualizare)

Notă

Caracteristicile în regim de previzualizare nu sunt destinate utilizării în producție și pot avea funcționalitate restricționată. Aceste caracteristici sunt disponibile înainte de lansarea oficială, astfel încât clienții să poată obține acces din timp și să poată oferi feedback.

Prezentare generală

Power Apps Test Engine folosește *Playwright* ca tehnologie principală de automatizare a browserului. ... Această integrare oferă Test Engine capacități de testare puternice, fiabile și multibrowser, adăugând în același timp mai multe niveluri de abstractizare pentru a simplifica crearea de teste pentru aplicații. Power Platform

Cum îmbunătățește Test Engine Playwrit

Deși Playwright oferă capabilități excelente de automatizare a browserului, Test Engine extinde aceste capabilități special pentru Power Platform:

Îmbunătățirea motorului de testare Descriere
Abstracții la nivel de aplicație Test Engine funcționează cu obiecte la nivel de aplicație, mai degrabă decât cu elemente DOM, ceea ce face ca testele să fie mai rezistente la modificările interfeței utilizator.
Power Fx Integrare Test Engine adaugă suport, permițând o abordare low-code pentru crearea de teste Power Fx
Autentificare încorporată Mecanisme de autentificare predefinite gestionează scenarii de acces condiționat și acces condiționat Microsoft Entra
Dataverse Integrare Integrarea directă cu Dataverse permite testarea completă de la un capăt la altul
Furnizori specializați Furnizori optimizați pentru aplicații Canvas și aplicații bazate pe modele

Implementare tehnică

Următoarele secțiuni descriu modul în care Test Engine se bazează pe fundația de automatizare a browserului Playwright și o integrează cu abstracțiuni specifice Power Platform, permițând o automatizare robustă și ușor de întreținut a testelor.

Fundația automatizării browserului

Test Engine utilizează capabilitățile de bază ale Playwright pentru o automatizare consistentă a browserului:

  • Compatibilitate între browsere pentru Chrome, Firefox și Microsoft Edge
  • Mecanisme de așteptare fiabile care așteaptă automat ca elementele să fie gata
  • Interceptarea cererilor de rețea pentru simularea răspunsurilor API
  • Instrumente de urmărire și depanare pentru diagnosticarea eșecurilor de testare

Integrarea arhitecturală a motorului de testare

  • Stratul furnizor: Stratul furnizor din Test Engine interacționează direct cu API-urile Playwright pentru a controla comportamentul browserului
  • Model de obiect: În loc să lucreze cu elemente DOM brute, Test Engine se mapează la modele de obiecte specifice aplicației
  • Power Fx Strat: Pașii de testare scriși în Power Fx sunt interpretați și executați prin stratul furnizor

Caracteristici tehnice cheie

Următoarele secțiuni evidențiază caracteristici tehnice importante pe care Test Engine le adaugă pe lângă Playwright, inclusiv selectori specifici aplicației, gestionarea contextului browserului și acces direct la funcțiile Playwright pentru scenarii avansate.

Selectori specifici aplicației

Test Engine folosește selectori specifici aplicației în loc de selectori CSS sau 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();

Gestionarea contextului browserului

Test Engine gestionează contextele browserului pentru a suporta diverse scenarii de autentificare:

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

Funcții directe de dramaturg

Deși Test Engine abstractizează multe interacțiuni cu Playwright, există scenarii în care accesarea directă a capacităților Playwright poate fi valoroasă. Test Engine oferă mai multe funcții de previzualizare care permit interacțiunea directă cu Playwright chiar din cadrul pașilor de testare. Power Fx

Utilizarea funcțiilor Playwright în Test Engine

Test Engine include următoarele funcții de previzualizare care vă permit să aplicați capacitățile de selecție a elementelor din Playwright:

Funcţie Descriere Exemplu
Previzualizare.DramaturgismAcțiune Execută o acțiune asupra elementelor folosind selectori CSS sau DOM Preview.PlaywrightAction("//button", "click")
Vezi Operațiuni comune de acțiune ale dramaturgului
Previzualizare.ValoareAcțiuneDramaturgistă Execută o acțiune care necesită un parametru de valoare Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Consultați Operații comune privind valoarea acțiunilor dramaturgești
Previzualizare.Script Dramaturgic Executați un script C# personalizat care interacționează cu Playwright Preview.PlaywrightScript("sample.csx")
Vezi Avansat: Scripturi dramaturge personalizate
Previzualizare.Pauză Întrerupeți execuția testului și afișați Inspectorul Dramaturgic Preview.Pause()

Notă

Pentru a utiliza aceste funcții de previzualizare, trebuie să adăugați funcțiile de previzualizare la lista permisă din secțiunea setărilor de testare.

Operațiuni comune de acțiune ale dramaturgului

Următoarele operațiuni pot fi efectuate cu Preview.PlaywrightAction:

Acţiune Descriere Exemplu
click Selectarea unui element folosind evenimentul click Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Verificați dacă există un element Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Așteptați ca un element să fie disponibil Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Operații comune privind valoarea acțiunilor dramaturge

Următoarele operațiuni pot fi efectuate cu Preview.PlaywrightActionValue:

Acţiune Descriere Exemplu
fill Completați un câmp de formular cu text Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Selectați o opțiune dintr-o listă de selecție Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Setați un atribut pe un element Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Când se utilizează funcțiile directe ale Dramaturgiului

Deși abstracțiile la nivel de aplicație sunt preferate, funcțiile Playwright directe sunt utile în aceste scenarii:

  • Interacțiuni complexe cu interfața utilizator nu sunt acoperite de funcțiile standard ale motorului de testare
  • Componente terțe în cadrul Power Platform aplicațiilor care necesită o gestionare specială
  • Depanarea scenariilor de testare complexe unde este necesar mai mult control
  • Validare avansată a stărilor sau proprietăților elementelor

Exemplu: Abordare combinată

Acest exemplu demonstrează combinarea abstracțiilor la nivel de aplicație cu acțiuni directe Playwright:

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

Avansat: Scripturi dramaturge personalizate

Pentru scenarii extrem de specializate, puteți crea scripturi Dramaturg personalizate:

  1. Creați un fișier cu logica personalizată Playwrit .csx
  2. Referințe necesare ansambluri dramaturge
  3. Implementați structura de clase necesară
  4. Apelați scriptul din pașii de testare
// 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
    }
}

Notă

Preview.PlaywrightScript este implementat doar pentru versiunile de depanare ale Test Engine construite din sursă, nu în instrumentul pac test run lansat.

Integrarea cu procesul de dezvoltare

Următoarele secțiuni descriu modul în care Test Engine și Playwright pot fi utilizate atât în medii de dezvoltare locală, cât și în medii CI/CD, oferind suport pentru o gamă largă de fluxuri de lucru, de la depanare interactivă până la execuție automată în conducte.

Dezvoltare locală

Pentru dezvoltarea locală, Test Engine oferă un mediu complet:

  • Execuție locală în browser cu vizibilitate în interfața utilizatorului
  • Executarea testului pas cu pas
  • Jurnale și diagnostice detaliate

Integrare CI/CD

În mediile CI/CD, Test Engine poate rula Playwrit în modul headless:

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

Cele mai bune practici

Când lucrați cu integrarea Playwright a Test Engine:

  • Concentrați-vă pe obiecte la nivel de aplicație mai degrabă decât pe elementele DOM
  • Folosește Power Fx funcții pentru logică complexă în loc de JavaScript brut
  • Profitați de mecanismele de autentificare încorporate
  • Rezervați funcțiile directe Playwrit pentru scenarii în care abstracțiile la nivel de aplicație sunt insuficiente
  • Revizuiți testele generate pentru a optimiza lizibilitatea și întreținerea