Integração de Mecanismo de Teste e Dramaturgo (preterido)

Observação

O Mecanismo de Teste foi preterido e será removido em uma versão futura. Use exemplos Power Platform Playwright para testar recursos de automação no Power Platform e serviços de Dynamics 365.

Visão geral

Power Apps Mecanismo de Testes usa Playwright como sua principal tecnologia de automação de navegador. 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 desempenho do Playwright

Embora o Playwright ofereça excelentes recursos de automação de navegador, o Test Engine estende esses recursos especificamente para Power Platform:

Melhoria do motor de teste Descrição
Abstrações em nível de aplicativo O Test Engine funciona com objetos de nível de aplicativo em vez de elementos DOM, tornando os testes mais resilientes às mudanças da IU
Integração Power Fx O Test Engine adiciona Power Fx suporte, permitindo uma abordagem de baixo código para a criação de testes
Autenticação Integrada Mecanismos de autenticação pré-construídos lidam com cenários de Microsoft Entra e acesso condicional
Integração com o Dataverse A integração direta com Dataverse permite testes abrangentes de ponta a ponta
Provedores Especializados Provedores otimizados para aplicativos Canvas e aplicativos baseados em modelos

Implementaçã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, permitindo uma automação de teste robusta e sustentável. Power Platform

Base de automação do navegador

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

  • suporte Cross-browser para Chrome, Firefox e Microsoft Edge
  • Mecanismos de espera confiáveis que esperam automaticamente que os elementos estejam prontos
  • Interceptação de solicitação de rede para simular respostas de API
  • Ferramentas de rastreamento e depuração para diagnosticar falhas de teste

Integração arquitetônica do Test Engine

  • Camada do provedor: A camada do provedor no Test Engine 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 Test Engine mapeia para modelos de objetos específicos do aplicativo
  • Camada Power Fx: As etapas de teste escritas em Power Fx são interpretadas e executadas por meio da camada de provedor

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, geranciamento de contexto do navegador e acesso direto às funções do Playwright para cenários avançados.

Seletores específicos do aplicativo

O Test Engine usa 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 dar 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 de dramaturgo direto

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 diversas funções de visualização que permitem interação direta com o Playwright dentro das suas Power Fx etapas de teste.

Usando funções do 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
Prévia.PlaywrightAction Executar uma ação em elementos usando seletores CSS ou DOM Preview.PlaywrightAction("//button", "click")
Consulte Operações de Ação Playwright Comuns
Preview.PlaywrightActionValue Execute uma ação que requer um parâmetro de valor Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Consulte Operações de Valor de Ação Playwright Comuns
Prévia.PlaywrightScript Execute um script C# personalizado que faça interface com o Playwright Preview.PlaywrightScript("sample.csx")
Veja Avançado: Scripts de Playwright Personalizados
Visualizar.Pausar Pausar a execução do teste e exibir o Inspetor de Dramaturgo Preview.Pause()

Observação

Para usar essas funções de visualização, você deve adicioná-las à lista permitida na seção de configurações de teste.

Operações de Ação Playwright Comuns

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

Ação Descrição Exemplo
click Seleção de um elemento usando evento de clique Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Verifique se um elemento existe 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 Playwright Comuns

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

Ação Descrição Exemplo
fill Preencha 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 do Playwright

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

  • Interações complexas da IU não cobertas pelas funções padrão do mecanismo de teste
  • Componentes de terceiros dentro de aplicativos do Power Platform que exigem tratamento especial
  • Depuração de cenários de teste complexos onde é necessário mais controle
  • 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 do 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: roteiros personalizados do Dramaturgo

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

  1. Crie um .csx arquivo com sua lógica personalizada do Playwright
  2. Referência necessária para montagens de Playwright
  3. Implementar a estrutura de classe necessária
  4. Chame o script nas etapas do 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
    }
}

Observação

Preview.PlaywrightScript é implementado apenas para compilações de depuração do Test Engine criado a partir do código-fonte, não na ferramenta pac test run lançada.

Integração com o 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 de CI/CD, oferecendo suporte a uma variedade de fluxos de trabalho, desde depuração interativa até execução automatizada de pipeline.

Desenvolvimento local

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

  • Execução local do navegador com visibilidade da IU
  • Execução de teste passo a passo
  • Registros e diagnósticos detalhados

Integração CI/CD

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

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

Práticas recomendadas

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

  • Concentre-se em objetos de nível de aplicativo em vez de elementos DOM
  • Use funções do Power Fx para lógica complexa em vez de JavaScript cru
  • Aproveite os mecanismos de autenticação integrados
  • Reserve funções diretas do Playwright para cenários onde as abstrações no nível do aplicativo são insuficientes
  • Revisar os testes gerados para otimizar a legibilidade e a manutenção