Compartir por


Integración do motor de probas e de Playwright (vista previa)

Nota

As funcionalidades de vista previa non se deseñaron para uso de produción e poden ter funcionalidade restrinxida. Estas funcionalidades están dispoñibles antes da versión oficial para que os clientes poidan obter acceso a elas rápido e fornecer comentarios.

Visión xeral

Power Apps Test Engine usa *Playwright* como a súa tecnoloxía principal de automatización do navegador. ... Esta integración proporciona a Test Engine capacidades de probas potentes, fiables e multinavegador, ao tempo que engade varias capas de abstracción para simplificar a creación de probas para aplicacións. Power Platform

Como o motor de probas mellora o dramaturgo

Aínda que Playwright ofrece excelentes capacidades de automatización do navegador, Test Engine amplía estas capacidades especificamente para Power Platform:

Mellora do motor de probas Descripción
Abstraccións a nivel de aplicación O motor de probas funciona con obxectos a nivel de aplicación en lugar de elementos DOM, o que fai que as probas sexan máis resistentes aos cambios na interface de usuario.
Power Fx Integración Test Engine engade compatibilidade, o que permite unha abordaxe de baixo código para a creación de probas Power Fx
Autenticación integrada Os mecanismos de autenticación predefinidos xestionan escenarios de acceso condicional e Microsoft Entra
Dataverse Integración A integración directa con Dataverse permite probas exhaustivas de extremo a extremo
Provedores especializados Provedores optimizados para aplicacións de lenzo e aplicacións baseadas en modelos

Implementación técnica

As seguintes seccións describen como Test Engine se basea na automatización do navegador de Playwright e a integra con abstraccións específicas de Power Platform, o que permite unha automatización de probas robusta e mantible.

Fundamentos da automatización do navegador

O motor de probas utiliza as capacidades principais de Playwright para unha automatización consistente do navegador:

  • Compatibilidade entre navegadores para Chrome, Firefox e Microsoft Edge
  • Mecanismos de espera fiables que agardan automaticamente a que os elementos estean listos
  • Intercepción de solicitudes de rede para simular respostas da API
  • Ferramentas de rastrexo e depuración para diagnosticar fallos nas probas

Integración arquitectónica do motor de probas

  • Capa de provedor: A capa de provedor en Test Engine interactúa directamente coas API de Playwright para controlar o comportamento do navegador
  • Modelo de obxectos: En lugar de traballar con elementos DOM brutos, o motor de probas mapéase a modelos de obxectos específicos da aplicación
  • Power Fx Capa: Os pasos de proba escritos en Power Fx interprétanse e execútanse a través da capa do provedor

Características técnicas clave

As seguintes seccións destacan as características técnicas importantes que Test Engine engade a Playwright, como selectores específicos da aplicación, xestión do contexto do navegador e acceso directo ás funcións de Playwright para escenarios avanzados.

Selectores específicos da aplicación

Test Engine usa selectores específicos da aplicación en lugar de selectores CSS ou 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();

Xestión do contexto do navegador

O motor de probas xestiona os contextos do navegador para admitir varios escenarios de autenticación:

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

Funcións de dramaturgo directo

Aínda que Test Engine abstrae moitas interaccións de Playwright, hai escenarios nos que o acceso directo ás capacidades de Playwright pode ser valioso. O motor de probas ofrece varias funcións de vista previa que permiten a interacción directa con Playwright desde os teus pasos de proba. Power Fx

Uso das funcións de Playwright en Test Engine

O motor de probas inclúe as seguintes funcións de vista previa que che permiten aplicar as capacidades de selección de elementos de Playwright:

Function Descripción Exemplo
Vista previa.DramaturgoAcción Executar unha acción sobre elementos usando selectores CSS ou DOM Preview.PlaywrightAction("//button", "click")
Véxase Operacións comúns de acción dun dramaturgo
Vista previa.Valor da acción do dramaturgo Executar unha acción que require un parámetro de valor Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Consultar Operacións comúns de valor de acción de dramaturgo
Vista previa.Script de dramaturgo Executar un script C# personalizado que interactúe con Playwright Preview.PlaywrightScript("sample.csx")
Ver Avanzado: Guións de dramaturgo personalizados
Vista previa.Pausa Pausar a execución da proba e mostrar o Inspector de dramaturgos Preview.Pause()

Nota

Para usar estas funcións de vista previa, debes engadilas á lista de opcións permitidas na sección de configuración de probas.

Operacións comúns de acción dramaturga

As seguintes operacións pódense realizar con Preview.PlaywrightAction:

Acción Descripción Exemplo
click Selección dun elemento mediante o evento de clic Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Comprobar se existe un elemento Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Agardar a que un elemento estea dispoñible Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Operacións comúns de valor de acción de dramaturgo

As seguintes operacións pódense realizar con Preview.PlaywrightActionValue:

Acción Descripción Exemplo
fill Encher un campo de formulario con texto Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Seleccionar unha opción dunha lista de selección Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Definir un atributo nun elemento Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Cando usar as funcións directas de Playwriter

Aínda que se prefiren as abstraccións a nivel de aplicación, as funcións directas de Playwright son útiles nestes escenarios:

  • Interaccións complexas da interface de usuario non cubertas polas funcións estándar do motor de probas
  • Compoñentes de terceiros dentro Power Platform de aplicacións que requiren un manexo especial
  • Depuración de escenarios de proba complexos onde se precisa máis control
  • Validación avanzada de estados ou propiedades de elementos

Exemplo: Enfoque combinado

Este exemplo demostra a combinación de abstraccións a nivel de aplicación con accións directas 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");

Avanzado: Guións de dramaturgo personalizados

Para escenarios moi especializados, podes crear scripts de Dramaturgo personalizados:

  1. Crea un ficheiro coa túa lóxica de Playwright personalizada .csx
  2. Montaxes de dramaturgo requiridas por referencia
  3. Implementar a estrutura de clases requirida
  4. Chama o script desde os teus pasos de proba
// 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 só se implementa para compilacións de depuración de Test Engine compiladas desde o código fonte, non na ferramenta pac test run publicada.

Integración co proceso de desenvolvemento

As seguintes seccións describen como se poden usar Test Engine e Playwright tanto en entornos de desenvolvemento local como de CI/CD, o que permite soportar unha variedade de fluxos de traballo, desde a depuración interactiva ata a execución automatizada de canles.

Desenvolvemento local

Para o desenvolvemento local, Test Engine ofrece un entorno completo:

  • Execución local do navegador con visibilidade da interface de usuario
  • Execución de probas paso a paso
  • Rexistros e diagnósticos detallados

Integración de CI/CD

En entornos CI/CD, Test Engine pode executar Playwright en modo sen interface de usuario:

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

Recomendacións

Ao traballar coa integración de Playwright de Test Engine:

  • Céntrase nos obxectos a nivel de aplicación en lugar dos elementos DOM
  • Usar Power Fx funcións para lóxica complexa en lugar de JavaScript bruto
  • Aproveita os mecanismos de autenticación integrados
  • Reservar funcións directas de Playwrit para escenarios onde as abstraccións a nivel de aplicación sexan insuficientes
  • Revisar as probas xeradas para optimizar a lexibilidade e o mantemento