Integração do Test Engine e Playwright (descontinuado)

Nota

O Test Engine está obsoleto e será removido numa versão futura. Use os exemplos do Power Platform Playwright para capacidades de automação de testes no Power Platform e nos serviços Dynamics 365.

Descrição geral

Power Apps Motor de Teste utiliza Playwright como sua tecnologia central de automação de navegadores. Essa integração fornece ao Test Engine recursos de teste poderosos, confiáveis e entre navegadores, ao mesmo tempo em que adiciona várias camadas de abstração para simplificar a criação de testes para Power Platform aplicativos.

Como o Test Engine melhora o Playwright

Enquanto o Playwright oferece excelentes recursos de automação do navegador, o Test Engine estende esses recursos especificamente para Power Platform:

Aprimoramento do mecanismo de teste Descrição
Abstrações no nível do aplicativo O mecanismo de teste funciona com objetos no nível do aplicativo em vez de elementos DOM, tornando os testes mais resilientes às alterações da interface do utilizador
Integração Power Fx O mecanismo de teste passa a oferecer suporte a Power Fx, permitindo uma aproximação de baixo código para a criação de testes
Autenticação integrada Mecanismos de autenticação pré-construídos tratam de cenários de Microsoft Entra e acesso condicional
Integração do Dataverse A integração direta com Dataverse permite testes abrangentes de ponta a ponta
Fornecedores Especializados Provedores otimizados para aplicativos Canvas e aplicativos orientados por modelo

Execução técnica

As seções a seguir descrevem como o Test Engine se baseia na base de automação de navegador do Playwright e a integra com abstrações específicas do Power Platform, permitindo uma automação de teste robusta e manutenível.

Base de automação do navegador

O Test Engine utiliza os principais recursos do Playwright para automação consistente do navegador:

  • Suporte multinavegador para Chrome, Firefox e Microsoft Edge
  • Mecanismos de espera fiáveis que aguardam automaticamente que os elementos estejam prontos
  • Intercetação de solicitações de rede para simular respostas de API
  • Ferramentas de rastreio e depuração para diagnosticar falhas de testes

Integração arquitetônica do Test Engine

  • Camada do fornecedor: a camada do fornecedor no mecanismo de teste faz interface diretamente com as APIs do Playwright para controlar o comportamento do navegador
  • Modelo de objeto: em vez de trabalhar com elementos DOM brutos, o mecanismo de teste mapeia para modelos de objeto específicos do aplicativo
  • Camada Power Fx: As etapas de teste escritas em Power Fx são interpretadas e executadas através da camada do fornecedor

Principais características técnicas

As seções a seguir destacam recursos técnicos importantes que o Test Engine adiciona ao Playwright, incluindo seletores específicos do aplicativo, gerenciamento de contexto do navegador e acesso direto às funções do Playwright para cenários avançados.

Seletores específicos do aplicativo

O mecanismo de teste utiliza seletores específicos do aplicativo em vez de seletores 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();

Gerenciamento de contexto do navegador

O Test Engine gerencia contextos de navegador para oferecer suporte a vários cenários de autenticação:

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

Funções diretas de Playwright

Embora o Test Engine abstraia muitas interações do Playwright, há cenários em que o acesso direto aos recursos do Playwright pode ser valioso. O Test Engine fornece várias funções de pré-visualização que permitem a interação direta com o Playwright a partir dos passos de teste do Power Fx.

Usando funções de Playwright no Test Engine

O Test Engine inclui as seguintes funções de visualização que permitem aplicar os recursos de seleção de elementos do Playwright:

Função Descrição Exemplo
Preview.PlaywrightAction Executar uma ação em elementos utilizando seletores de CSS ou DOM. Preview.PlaywrightAction("//button", "click")
Consulte Operações de Ação Comuns no Playwright
Preview.PlaywrightActionValue Executar uma ação que requer um parâmetro value Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Consulte Operações de Valor de Ação Comuns no Playwright
Preview.PlaywrightScript Executar um script C# personalizado que faz interface com o Playwright Preview.PlaywrightScript("sample.csx")
Consulte Avançado: Scripts Personalizados do Playwright
Pré-visualização.Pausa Pausar a execução do teste e exibir o Inspetor de Dramaturgia Preview.Pause()

Nota

Para usar essas funções de visualização, você deve adicionar as funções de visualização à lista de permissões na secção de definições de teste.

Operações de ação comuns no Playwright

As seguintes operações podem ser executadas com Preview.PlaywrightAction:

Ação Descrição Exemplo
click Seleção de um elemento usando o evento click Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Verificar se existe um elemento Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Aguarde até que um elemento esteja disponível Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Operações de valor de ação comuns no Playwright

As seguintes operações podem ser executadas com Preview.PlaywrightActionValue:

Ação Descrição Exemplo
fill Preencher um campo de formulário com texto Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Selecione uma opção de uma lista de seleção Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Definir um atributo em um elemento Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Quando usar funções diretas de Playwright

Embora as abstrações no nível do aplicativo sejam preferidas, as funções diretas do Playwright são úteis nestes cenários:

  • Interações complexas da interface do utilizador não cobertas pelas funções padrão do mecanismo de teste
  • Componentes de terceiros em aplicações Power Platform que necessitam de um manuseamento especial
  • Desapurar cenários de teste complexos onde é necessário mais controlo
  • Validação avançada de estados ou propriedades de elementos

Exemplo: Abordagem combinada

Este exemplo demonstra a combinação de abstrações no nível do aplicativo com ações diretas 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çado: scripts personalizados de dramaturgia

Para cenários altamente especializados, você pode criar scripts de Playwright personalizados:

  1. Crie um .csx arquivo com sua lógica de Playwright personalizada
  2. Referencie as assemblagens Playwright necessárias
  3. Implementar a estrutura de classes necessária
  4. Chame o script a partir dos passos de teste
// 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ó é implementado para compilações de depuração do Test Engine criadas a partir do código-fonte, não na ferramenta lançada pac test run .

Integração com processo de desenvolvimento

As seções a seguir descrevem como o Test Engine e o Playwright podem ser usados em ambientes de desenvolvimento local e CI/CD, suportando uma variedade de fluxos de trabalho, desde depuração interativa até execução automatizada de pipeline.

Desenvolvimento local

Para o desenvolvimento local, o Test Engine fornece um ambiente completo:

  • Execução do navegador local com visibilidade da interface do usuário
  • Execução de testes passo a passo
  • Logs e diagnósticos detalhados

Integração CI/CD

Em ambientes CI/CD, o Test Engine pode executar o Playwright no modo sem interface:

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

Melhores práticas

Ao trabalhar com a integração Playwright do Test Engine:

  • Concentre-se em objetos no nível do aplicativo em vez de elementos DOM
  • Utilize as funções Power Fx para lógica complexa em vez de JavaScript puro
  • Tire partido dos mecanismos de autenticação incorporados
  • Reserve funções diretas de Playwright para cenários em que as abstrações no nível do aplicativo são insuficientes
  • Revise os testes gerados para otimizar a legibilidade e a manutenção