Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
- Crie um
.csxarquivo com sua lógica de Playwright personalizada - Referencie as assemblagens Playwright necessárias
- Implementar a estrutura de classes necessária
- 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