Partilhar via


Formato YAML do Power Apps Test Engine (visualização)

Observação

As caraterísticas de pré-visualização não se destinam à produção e poderão ter caraterísticas restritas. Esses recursos estão disponíveis antes de um lançamento oficial para que os clientes possam obter acesso antecipado e fornecer feedback.

Os testes são definidos no YAML seguindo as mesmas diretrizes do Power Fx. Saiba mais sobre a gramática da fórmula Power Fx YAML.

Exiba a pasta PowerApps-TestEngine/samples para obter exemplos detalhados.

Definições de esquema YAML

Propriedade Description
testSuite Define um conjunto de testes, os casos de teste no conjunto de testes e a configuração específica para o conjunto de testes
testSettings Define configurações para o conjunto de testes que são reutilizadas em vários casos de teste
environmentVariables Define variáveis que podem mudar à medida que o aplicativo é portado em diferentes ambientes

testSuite

Usado para definir um teste.

Propriedade Tipo Description
persona cadeia (de caracteres) Required. O usuário que está conectado para executar o teste. Deve corresponder a uma persona listada na seção Usuários .
testCases Casos de teste Required. Define casos de teste no conjunto de testes. Os casos de teste contidos nos pacotes de teste são executados sequencialmente. O estado do aplicativo é mantido em todos os casos de teste em um pacote.
testSuiteName cadeia (de caracteres) Required. O nome do conjunto de testes.
appLogicalName cadeia (de caracteres) Opcional. O nome lógico do aplicativo que será iniciado. Pode ser obtido a partir da solução. Para aplicativos de tela, você precisa adicioná-lo a uma solução para obtê-lo. Consulte Como identificar sua aplicação no plano de teste
appId Guia Opcional. A ID do aplicativo que será iniciado. Obrigatório e usado apenas quando appLogicalName não está presente. A ID do aplicativo deve ser usada apenas para aplicativos de tela que não estão na solução. Consulte Como identificar sua aplicação no plano de teste
networkRequestMocks NetworkRequestMocks Opcional. Define simulações de solicitação de rede necessárias para o teste.
onTestCaseComplete cadeia (de caracteres) Opcional. Define as etapas que precisam ser acionadas para cada caso de teste em um pacote depois que o caso termina de ser executado.
onTestCaseStart cadeia (de caracteres) Opcional. Define as etapas que precisam ser acionadas para cada caso de teste em um pacote antes que o caso comece a ser executado.
onTestSuiteComplete cadeia (de caracteres) Opcional. Define as etapas que precisam ser acionadas após a conclusão da execução do conjunto.
testSuiteDescription cadeia (de caracteres) Opcional. Informações adicionais descrevem o que o conjunto de testes faz.

Como identificar a sua aplicação no plano de teste

Você precisa definir um ou appLogicalNameappId para identificar seu aplicativo. O que você usa depende se seu aplicativo está definido dentro de uma solução.

Quando você define seus aplicativos dentro de soluções, seus testes permanecem portáteis em todos os ambientes. Defina a appLogicalName propriedade para indicar que o aplicativo é baseado em solução.

Para localizar o nome lógico do aplicativo:

  1. Abra a solução que contém a sua aplicação no Power Apps
  2. Use o Nome (não Nome para exibição) na lista. O valor do nome inclui o prefixo de personalização para o editor da solução.

Aplicações autónomas

Quando seu aplicativo não está definido em uma solução, você precisa usar a appId propriedade.

Para localizar o ID do aplicativo:

  1. Localize a aplicação na lista Power Apps
  2. Abra Detalhes e anote o GUID da ID do aplicativo

NetworkRequestMocks

Propriedade Tipo Description
requestURL cadeia (de caracteres) Required. O URL da solicitação que recebe uma resposta simulada. Padrões de Glob são aceitos
responseDataFile cadeia (de caracteres) Required. Um arquivo de texto com o conteúdo da resposta simulada. Todo o texto neste ficheiro é lido como a resposta
headers matriz Opcional. Uma lista de campos de cabeçalho na solicitação no formato de [fieldName: fieldValue]
method cadeia (de caracteres) Opcional. O método da solicitação (GET, POST, etc.)
requestBodyFile cadeia (de caracteres) Opcional. Um arquivo de texto com o corpo da solicitação. Todo o texto neste arquivo é lido como o corpo da solicitação

Para propriedades opcionais, se nenhum valor for especificado, o roteamento se aplicará a todos. Por exemplo, se method for null, enviaremos de volta a resposta simulada, seja qual for o método, desde que todas as outras propriedades correspondam.

Para aplicativos Sharepoint/Dataverse/Connector, requestURL e method pode ser o mesmo para todas as solicitações. x-ms-request-method e x-ms-request-url em cabeçalhos pode ser necessário configurar nesse caso para identificar diferentes solicitações.

Casos de teste

Propriedade Tipo Description
testCaseName cadeia (de caracteres) Required. O nome do caso de teste que é usado no relatório de sucesso e falha
testSteps TestSteps Required. Um conjunto de funções Power Fx que descreve as etapas necessárias para executar o caso de teste. Veja o exemplo de TestSteps
testCaseDescription Não Opcional. Informações adicionais descrevem o que o caso de teste faz

TestSteps

  • TestSteps pode usar quaisquer funções Fx de potência do motor de teste existentes ou funções de teste específicas definidas por esta estrutura.
  • O valor deve começar com um símbolo de pipe (|) para permitir expressões YAML de várias linhas seguidas por um sinal de igual (=) para indicar que é uma expressão Power Fx
  • As funções devem ser separadas por ponto-e-vírgula (;).
  • Os comentários podem ser usados e devem começar com caracteres de barra invertida dupla (//).

Exemplo de TestSteps

testCases:
   - testCaseName: Fill in a city name and do the search
   testSteps: |
      = Screenshot("connectorapp_loaded.png");
         SetProperty(TextInput1.Text, "Atlanta");
         Select(Button1);
         Assert(Label4.Text = "You are seeing the mock response", "Validate the output is from the mock");
         Screenshot("connectorapp_end.png");

testSettings

Usado para definir configurações para os testes no plano de teste.

Propriedade Tipo Description
browserConfigurations BrowserConfiguration[] Required. Uma lista de configurações do navegador a serem testadas. Pelo menos um navegador deve ser especificado.
extensionModules extensionModules Opcional. Contém dados sobre extensões a serem habilitadas.
filePath cadeia (de caracteres) Opcional. O caminho do arquivo para um arquivo yaml separado com todas as configurações de teste. Se fornecido, ele substituirá todas as configurações de teste no plano de teste.
headless Booleano Opcional. A predefinição é verdadeira. Se definido como false, o navegador aparece durante a execução do teste.
locale cadeia (de caracteres) Opcional. A sintaxe de localidade/cultura na qual os casos de teste ou as etapas de teste são gravados. Se não especificado, CultureInfo.CurrentCulture é usado para a localidade por padrão para analisar as etapas de teste. Consulte Considerações sobre região e idioma
recordVideo Booleano Opcional. O valor padrão é falso. Se definido como true, uma gravação de vídeo do teste é capturada.
timeout número inteiro Opcional. Valor de tempo limite em milissegundos. O padrão é 30.000 milissegundos (30s). Se qualquer operação demorar mais do que o limite de tempo limite, termina o teste em uma falha.
powerFxTestTypes name value par Opcional. Uma lista de nomes de tipo e definições de tipo Power Fx. Veja o exemplo de powerFxTestTypes
testFunctions description code par Opcional. Uma lista de descrição e definições de função Power Fx. Veja o exemplo de testFunctions

extensionModules

Contém dados sobre extensões a serem habilitadas.

Propriedade Tipo Description
enable bool Se os módulos de extensão estão habilitados ou não.
allowPowerFxNamespaces lista Lista dos namespaces PowerFx a serem habilitados.
parameters Pares de valores-chave Propriedades com valores para controlar módulos de extensão. Neste momento, apenas o parâmetro booleano enableDataverseFunctions é válido para isso.

Este exemplo mostra como habilitar o namespace PowerFx Preview :

testSettings:
  extensionModules:
    enable: true
    allowPowerFxNamespaces:
    - Preview

Saiba mais sobre as funções de pré-visualização

Considerações sobre região e idioma

O Test Engine suporta várias configurações regionais e de idioma, como separadores decimais e de lista. A testSettings.locale propriedade controla esses comportamentos. Para obter mais informações, consulte Suporte global no Microsoft Power Fx.

Veja estas configurações de exemplo no repositórioPowerApps-TestEngine GitHub:

Exemplo de powerFxTestTypes

powerFxTestTypes:
 - name: ControlName
   value: |
      {ControlName: Text} 
 - name: Options
   value: |
      [{Name: Text, Value: Number}]   

Este exemplo demonstra como definir tipos de Power Fx personalizados para uso em seus casos de teste. O ControlName tipo é definido como um registro com um único Text campo, enquanto o Options tipo é definido como uma tabela de registros, cada um contendo um Name campo de tipo Text e um Value campo de tipo Number. Os tipos personalizados podem ser usados para criar cenários de teste mais complexos e específicos, aumentando a flexibilidade e o poder de suas definições de teste.

Exemplo de testFunctions

testFunctions:
 - description: Wait until control is visible using Document Object Model (DOM) selector
   code: |
    WaitUntilVisible(control: Text): Void = 
      Preview.PlaywrightAction(Concatenate("//div[@data-id='", control, "']"), "wait");
 - description: Get the options for a control using Power Fx control from Model Driven App (MDA)
   code: |
    GetOptions(control: ControlName): Options =
      Preview.GetOptions(control);

Estes exemplos de funções de teste demonstram como definir funções Power Fx personalizadas para uso em seus casos de teste. A WaitUntilVisible função usa um seletor DOM para aguardar até que um controle especificado esteja visível, usando ações de Playwright. A função GetOptions recupera as opções para um controle especificado de um aplicativo controlado por modelo (MDA), utilizando o controle Power Fx. Essas funções personalizadas aumentam a flexibilidade e o poder de suas definições de teste, permitindo cenários de teste mais complexos e específicos.

Configuração do navegador

Cada testSettings requer pelo menos um BrowserConfiguration.

Propriedade Tipo Description
browser cadeia (de caracteres) Required. O navegador a ser iniciado durante o teste. Deve corresponder aos navegadores suportados pelo Playwright.
device cadeia (de caracteres) Opcional. O dispositivo a ser emulado ao iniciar o navegador. Deve corresponder aos dispositivos suportados pelo Playwright
screenHeight número inteiro Opcional. A altura da tela a ser usada ao iniciar o navegador. Se especificado, screenWidth também deve ser especificado.
screenWidth número inteiro Opcional. A largura da tela a ser usada ao iniciar o navegador. Se especificado, screenHeight também deve ser especificado.

environmentVariables

Você pode armazenar diferentes tipos de valores como valores ambientais, mas o caso mais comum é o armazenamento de informações de credenciais com uma lista de usuários.

users

Para garantir que as credenciais sejam armazenadas de maneira segura, a definição de teste faz referência aos usuários usando um personaNamearquivo . Não há suporte para o armazenamento de credenciais em arquivos de plano de teste.

Exemplo:

environmentVariables:
    - users:
        - personaName: "User1"
          emailKey: "user1Email"
        - personaName: "User2"
          emailKey: "user2Email"

O personaName é usado como parte da definição de teste para indicar qual usuário executar o teste como.

Mecanismos de armazenamento de credenciais suportados

Para armazenar credenciais como variáveis de ambiente, você pode defini-las da seguinte maneira:

# In PowerShell - replace variableName and variableValue with the correct values
$env:variableName = "variableValue"

No YAML, duas propriedades precisam ser definidas para indicar que as credenciais desse usuário são armazenadas em variáveis de ambiente:

  • emailKey: A variável de ambiente usada para armazenar o e-mail do usuário.

Exemplo YAML:

    - personaName: "User1"
      emailKey: "user1Email"

Exemplo de PowerShell para definir credenciais de usuário com base em YAML:

$env:user1Email = "someone@example.com"

Consulte também

Visão geral do mecanismo de teste do Power Apps (visualização)
Power Apps Test Engine Power Fx funções (visualização)