Compartilhar via


Formato YAML do Mecanismo de Teste do Power Apps (versão prévia)

Observação

Os recursos de versão preliminar não foram criados para uso em ambientes de produção e podem ter funcionalidade restrita. Esses recursos estão disponíveis antes de um lançamento oficial para que os clientes possam obter acesso antecipado e fornecer comentários.

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

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íficas para o conjunto de testes
testSettings Define as configurações do conjunto de testes que são reutilizados em vários casos de teste
environmentVariables Define variáveis que podem ser alteradas à medida que o aplicativo é portado em diferentes ambientes

testSuite

Usado para definir um teste.

Propriedade Tipo Description
persona cadeia Obrigatório O usuário que está conectado para executar o teste. Deve corresponder a uma persona listada na seção Usuários .
testCases TestCases Obrigatório Define casos de teste no conjunto de testes. Os casos de teste contidos em conjuntos de testes são executados sequencialmente. O estado do aplicativo é mantido em todos os casos de teste em um pacote.
testSuiteName cadeia Obrigatório O nome do conjunto de testes.
appLogicalName cadeia Optional. O nome lógico do aplicativo que deve ser iniciado. Ele pode ser obtido da solução. Para aplicativos de tela, você precisa adicioná-lo a uma solução para obtê-lo. Veja como identificar seu aplicativo no plano de teste
appId Guid Optional. A ID do aplicativo que será iniciado. Obrigatório e usado somente 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. Veja como identificar seu aplicativo no plano de teste
networkRequestMocks NetworkRequestMocks Optional. Define as simulações de solicitação de rede necessárias para o teste.
onTestCaseComplete cadeia Optional. Define as etapas que precisam ser disparadas para cada caso de teste em um conjunto após a conclusão da execução do caso.
onTestCaseStart cadeia Optional. Define as etapas que precisam ser disparadas para cada caso de teste em um conjunto antes que o caso comece a ser executado.
onTestSuiteComplete cadeia Optional. Define as etapas que precisam ser disparadas após a conclusão da execução do pacote.
testSuiteDescription cadeia Optional. Informações adicionais descrevem o que o conjunto de testes faz.

Como identificar seu aplicativo no plano de teste

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

Quando você define seus aplicativos em soluções, seus testes permanecem portáteis entre 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 seu aplicativo no Power Apps
  2. Use o nome (não o nome de exibição) na lista. O valor do nome inclui o prefixo de personalização para o editor da solução.

Aplicativos autônomos

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

Para localizar a ID do aplicativo:

  1. Localizar o aplicativo na lista do Power Apps
  2. Abra detalhes e anote o GUID da ID do aplicativo

NetworkRequestMocks

Propriedade Tipo Description
requestURL cadeia Obrigatório A URL de solicitação que obtém uma resposta simulada. Padrões glob são aceitos
responseDataFile cadeia Obrigatório Um arquivo de texto com o conteúdo da resposta simulada. Todo o texto neste arquivo é lido como a resposta
headers matriz Optional. Uma lista de campos de cabeçalho na solicitação no formato [fieldName: fieldValue]
method cadeia Optional. O método da solicitação (GET, POST etc.)
requestBodyFile cadeia Optional. 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 nulo, enviaremos de volta a resposta simulada seja qual for o método, desde que todas as outras propriedades correspondam.

Para aplicativos do Sharepoint/Dataverse/Connector e requestURLmethod pode ser o mesmo para todas as solicitações. x-ms-request-method e x-ms-request-url em cabeçalhos pode precisar ser configurado nesse caso para identificar solicitações diferentes.

TestCases

Propriedade Tipo Description
testCaseName cadeia Obrigatório O nome do caso de teste usado no relatório de êxito e falha
testSteps TestSteps Obrigatório Um conjunto de funções do Power Fx que descrevem as etapas necessárias para executar o caso de teste. Veja o exemplo testSteps
testCaseDescription Não Optional. Informações adicionais descrevem o que o caso de teste faz

TestSteps

  • TestSteps pode usar quaisquer funções do Power Fx do Mecanismo de Teste existentes ou funções de teste específicas definidas por essa 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 igual (=) para indicar que é uma expressão power fx
  • As funções devem ser separadas por um ponto-e-vírgula (;).
  • Os comentários podem ser usados e devem começar com caracteres de barra invertida duplas (//).

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 as configurações para os testes no plano de teste.

Propriedade Tipo Description
browserConfigurations BrowserConfiguration[] Obrigatório Uma lista de configurações do navegador a ser testada. Pelo menos um navegador deve ser especificado.
extensionModules extensionModules Optional. Contém dados sobre extensões para habilitar.
filePath cadeia Optional. 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 boolean Optional. O padrão é true. Se definido como false, o navegador aparecerá durante a execução do teste.
locale cadeia Optional. A sintaxe de localidade/cultura na qual os casos de teste ou as etapas de teste são gravados. Se não for especificado, CultureInfo.CurrentCulture será usado para a localidade por padrão para analisar as etapas de teste. Consulte as considerações sobre a região e o idioma
recordVideo boolean Optional. O padrão é false. Se definido como true, uma gravação de vídeo do teste será capturada.
timeout inteiro Optional. 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, ela terminará o teste em uma falha.
powerFxTestTypes name value par Optional. Uma lista de nomes de tipo e definições de tipo do Power Fx. Veja o exemplo de powerFxTestTypes
testFunctions description code par Optional. Uma lista de definições de descrição e de função do Power Fx. Veja o exemplo de testFunctions

extensionModules

Contém dados sobre extensões para habilitar.

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

Este exemplo mostra como habilitar o namespace do PowerFx Preview :

testSettings:
  extensionModules:
    enable: true
    allowPowerFxNamespaces:
    - Preview

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

Considerações de região e idioma

O Mecanismo de Teste dá suporte a vários idiomas e configurações regionais, como separadores decimal e lista. A testSettings.locale propriedade controla esses comportamentos. Para obter mais informações, consulte Suporte Global no Microsoft Power Fx.

Examine estas configurações de exemplo no repositório githubPowerApps-TestEngine:

Exemplo de powerFxTestTypes

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

Este exemplo demonstra como definir tipos personalizados do Power Fx 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 das 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);

Esses exemplos de função de teste demonstram como definir funções personalizadas do Power Fx 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 do Dramaturgo. A função GetOptions recupera as opções para um controle especificado de um MDA ( Aplicativo Orientado por Modelo ), utilizando o controle Power Fx. Essas funções personalizadas aprimoram a flexibilidade e o poder das definições de teste, permitindo cenários de teste mais complexos e específicos.

BrowserConfiguration

Cada testSettings requer pelo menos um BrowserConfiguration.

Propriedade Tipo Description
browser cadeia Obrigatório O navegador a ser iniciado durante o teste. Deve corresponder aos navegadores com suporte do Dramaturgo.
device cadeia Optional. O dispositivo a ser emulado ao iniciar o navegador. Deve corresponder aos dispositivos compatíveis com o Dramaturgo
screenHeight inteiro Optional. A altura da tela a ser usada ao iniciar o navegador. Se especificado, screenWidth também deve ser especificado.
screenWidth inteiro Optional. 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 é armazenar informações de credencial 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 personaName. Não há suporte para armazenar 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 como o usuário executará o teste.

Mecanismos de armazenamento de credenciais com suporte

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 email do usuário.

Exemplo de YAML:

    - personaName: "User1"
      emailKey: "user1Email"

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

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

Consulte também

Visão geral do Mecanismo de Teste do Power Apps (versão prévia)
Power Apps Funções do Test Engine (prévia) Power Fx