Comparteix via


Integració de Test Engine i Playwright (visualització prèvia)

Nota

Les característiques de visualització prèvia no estan dissenyades per a un entorn de producció i poden tenir una funcionalitat restringida. Aquestes característiques estan disponibles abans d’un llançament oficial de producte per tal que els clients el puguin utilitzar abans i enviar-nos els seus comentaris.

Informació general

Power Apps Test Engine utilitza Playwright com a tecnologia bàsica d'automatització del navegador. Aquesta integració proporciona a Test Engine capacitats de prova potents, fiables i multinavegador, alhora que afegeix diverses capes d'abstracció per simplificar la creació de proves per Power Platform a les aplicacions.

Com Test Engine millora Playwright

Tot i que Playwright ofereix excel·lents capacitats d'automatització del navegador, Test Engine amplia aquestes capacitats específicament per Power Platform:

Millora del motor de prova Descripció
Abstraccions a nivell d'aplicació Test Engine funciona amb objectes de nivell d'aplicació en lloc d'elements DOM, cosa que fa que les proves siguin més resistents als canvis de la interfície d'usuari
Power Fx Integració Test Engine afegeix Power Fx suport, permetent un enfocament de codi baix per a la creació de proves
Autenticació integrada Mecanismes d'autenticació predefinits i Microsoft Entra escenaris d'accés condicional
Dataverse Integració La integració directa amb Dataverse permet proves integrals d'extrem a extrem
Proveïdors especialitzats Proveïdors optimitzats per a aplicacions de llenç i aplicacions basades en models

Implementació tècnica

Les seccions següents descriuen com Test Engine es basa en la base d'automatització del navegador de Playwright i l'integra amb Power Platform abstraccions específiques, permetent una automatització de proves robusta i mantenible.

Fundació d'automatització del navegador

Test Engine utilitza les capacitats bàsiques de Playwright per a una automatització coherent del navegador:

  • Compatibilitat entre navegadors per a Chrome, Firefox i Microsoft Edge
  • Mecanismes d'espera fiables que esperen automàticament que els elements estiguin preparats
  • Intercepció de sol·licituds de xarxa per simular respostes API
  • Eines de rastreig i depuració per diagnosticar errors de proves

Integració arquitectònica de Test Engine

  • Capa de proveïdor: la capa de proveïdor del motor de proves interactua directament amb les API de Playwright per controlar el comportament del navegador
  • Model d'objectes: en lloc de treballar amb elements DOM en brut, el motor de proves s'assigna a models d'objectes específics de l'aplicació
  • Power Fx Capa: els passos de prova escrits s'interpreten Power Fx i s'executen a través de la capa del proveïdor

Característiques tècniques clau

Les seccions següents destaquen les característiques tècniques importants que Test Engine afegeix a Playwright, inclosos els selectors específics de l'aplicació, la gestió del context del navegador i l'accés directe a les funcions de Playwright per a escenaris avançats.

Selectors específics de l'aplicació

El motor de proves utilitza selectors específics de l'aplicació en lloc de selectors o CSS XPath selectors:

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

Gestió del context del navegador

El motor de proves gestiona els contextos del navegador per admetre diversos escenaris d'autenticació:

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

Funcions directes de dramaturg

Tot i que Test Engine abstrau moltes interaccions de Playwright, hi ha escenaris en què l'accés directe a les capacitats de Playwright pot ser valuós. Test Engine proporciona diverses funcions de vista prèvia que permeten la interacció directa amb Playwright des dels passos Power Fx de prova.

Ús de les funcions de dramaturg al motor de proves

Test Engine inclou les següents funcions de previsualització que us permeten aplicar les capacitats de selecció d'elements de Playwright:

Function Descripció Exemple
Preview.PlaywrightAction Executar una acció sobre elements mitjançant CSS selectors o DOM Preview.PlaywrightAction("//button", "click")
Vegeu Operacions d'acció de dramaturgs comuns
Vista prèvia.PlaywrightActionValue Executar una acció que requereixi un paràmetre de valor Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Vegeu Operacions comunes de valor d'acció de dramaturgs
Vista prèvia.PlaywrightScript Executar un script de C# personalitzat que interactua amb Playwright Preview.PlaywrightScript("sample.csx")
Vegeu Avançat: Guions de dramaturgs personalitzats
Vista prèvia.Pausa Posa en pausa l'execució de la prova i mostra l'inspector de dramaturgs Preview.Pause()

Nota

Per utilitzar aquestes funcions de visualització prèvia, heu d'afegir les funcions de visualització prèvia a la llista permesa a la secció de configuració de la prova.

Operacions d'acció habituals de dramaturgs

Les operacions següents es poden realitzar amb Preview.PlaywrightAction:

Acció Descripció Exemple
click Selecció d'un element mitjançant l'esdeveniment de clic Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Comprovar si existeix un element Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Espera que un element estigui disponible Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Operacions comunes de valor d'acció de dramaturg

Les operacions següents es poden realitzar amb Preview.PlaywrightActionValue:

Acció Descripció Exemple
fill Omplir un camp de formulari amb text Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Seleccionar una opció d'una llista de selecció Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Definir un atribut en un element Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Quan s'han d'utilitzar les funcions directes de dramaturg

Tot i que es prefereixen les abstraccions a nivell d'aplicació, les funcions directes de Playwright són útils en aquests escenaris:

  • Interaccions complexes de la interfície d'usuari no cobertes per les funcions estàndard del motor de proves
  • Components de tercers dins Power Platform d'aplicacions que necessiten un maneig especial
  • Depuració d'escenaris de prova complexos on es necessita més control
  • Validació avançada d'estats o propietats d'elements

Exemple: Enfocament combinat

En aquest exemple es demostra la combinació d'abstraccions a nivell d'aplicació amb accions directes de 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");

Avançat: guions de dramaturgs personalitzats

Per a escenaris altament especialitzats, podeu crear guions personalitzats de Playwright:

  1. Crear un fitxer amb la .csx lògica personalitzada de Playwright
  2. Referència: Assemblatges de dramaturgs necessaris
  3. Implementeu l'estructura de classes necessària
  4. Cridar l'script des dels passos de prova
// 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
    }
}

Nota

Preview.PlaywrightScript només s'implementa per a les compilacions de depuració del motor de proves construïdes des del codi font, no a l'eina publicada pac test run .

Integració amb el procés de desenvolupament

Les seccions següents descriuen com es poden utilitzar Test Engine i Playwright tant en entorns de desenvolupament local com de CI/CD, donant suport a una varietat de fluxos de treball, des de la depuració interactiva fins a l'execució automatitzada de pipelines.

Desenvolupament local

Per al desenvolupament local, Test Engine proporciona un entorn complet:

  • Execució del navegador local amb visibilitat de la interfície d'usuari
  • Execució de proves pas a pas
  • Registres detallats i diagnòstics

Integració CI/CD

En entorns CI/CD, el Test Engine pot executar Playwright en mode sense cap:

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

Procediments recomanats

Quan treballeu amb la integració de Playwright de Test Engine:

  • Centreu-vos en objectes de nivell d'aplicació en lloc d'elements DOM
  • Utilitzeu Power Fx funcions per a lògica complexa en lloc de JavaScript en brut
  • Aprofiteu els mecanismes d'autenticació integrats
  • Reservar funcions directes de dramaturg per a escenaris en què les abstraccions a nivell d'aplicació són insuficients
  • Reviseu les proves generades per optimitzar-ne la llegibilitat i el manteniment