Power Apps Test Engine YAML format (preview)

[This topic is pre-release documentation and is subject to change.]

Tests are defined in YAML following the same guidelines as Power Fx does. Learn more about the Power Fx YAML formula grammar.

View the PowerApps-TestEngine/samples folder for detailed examples.

YAML schema definition

Property Description
testSuite Defines one test suite, the test cases in the test suite and configuration specific to the test suite
testSettings Defines settings for the test suite that are reused across multiple test cases
environmentVariables Defines variables that could potentially change as the app is ported across different environments

testSuite

Used to define one test.

test YAML schema definition

Property Required Description
testSuiteName Yes The name of the test suite
testSuiteDescription No Additional information describes what the test suite does
persona Yes The user that is logged in to perform the test. Must match a persona listed in the Users section
appLogicalName Yes The logical name of the app that is to be launched. It can be obtained from the solution. For canvas apps, you need to add it to a solution to obtain it
appId No The ID of the app that is to be launched. Required and used only when app logical name isn't present. App ID should be used only for canvas apps that aren't in the solution
networkRequestMocks No Defines network request mocks needed for the test
testCases Yes Defines test cases in the test suite. Test cases contained in test suites are run sequentially. The app state is persisted across all test cases in a suite
onTestCaseStart No Defines the steps that need to be triggered for every test case in a suite before the case begins executing
onTestCaseComplete No Defines the steps that need to be triggered for every test case in a suite after the case finishes executing
onTestSuiteComplete No Defines the steps that need to be triggered after the suite finishes executing

test NetworkRequestMocks

Property Required Description
requestURL Yes The request URL that gets mock response. Glob patterns are accepted
responseDataFile Yes A text file with the mock response content. All text in this file is read as the response
method No The request's method (GET, POST, etc.)
headers No A list of header fields in the request in the format of [fieldName: fieldValue]
requestBodyFile No A text file with the request body. All text in this file is read as the request body

For optional properties, if no value is specified, the routing applies to all. For example, if method is null, we send back the mock response whatever the method is as long as the other properties all match.

For Sharepoint/Dataverse/Connector apps, requestURL and method can be the same for all requests. x-ms-request-method and x-ms-request-url in headers may need to be configured in that case to identify different requests.

test TestCases

Property Required Description
testCaseName Yes The name of the test case that is used in reporting success and failure
testCaseDescription No Additional information describes what the test case does
testSteps Yes A set of Power Fx functions describing the steps needed to perform the test case

test TestSteps

  • This can use any existing Test Engine Power Fx functions functions or specific test functions defined by this framework.
  • It should start with a | to allow for multiline YAML expressions followed by an = sign to indicate that it's a Power Fx expression
  • Functions should be separated by a ;
  • Comments can be used and should start with //

testSettings

Used to define settings for the tests in the test plan.

testSettings YAML schema definition

Property Required Description
locale Yes The locale/culture syntax in which the test cases or test steps are written in. See Global Support in Microsoft Power Fx for more information. If unspecified, CultureInfo.CurrentCulture is used for the locale by default for parsing the test steps.
browserConfigurations Yes A list of browser configurations to be tested. At least one browser must be specified.
recordVideo No Default is false. If set to true, a video recording of the test is captured.
headless No Default is true. If set to false, the browser shows up during test execution.
timeout No Timeout value in milliseconds. Default is 30,000 milliseconds (30s). If any operation takes longer than the timeout limit, it ends the test in a failure.
filePath No The file path to a separate yaml file with all the test settings. If provided, it will override all the test settings in the test plan.

testSettings Browser configuration

Property Required Description
browser Yes The browser to be launched when testing. Should match the browsers supported by Playwright.
device No The device to emulate when launching the browser. Should match the devices supported by Playwright
screenHeight No The height of the screen to use when launching the browser. If specified, screenWidth must also be specified.
screenWidth No The width of the screen to use when launching the browser. If specified, screenHeight must also be specified.

Users

To ensure credentials are stored in secure manner, the test definition references users using a persona name. Storing credentials in test plan files isn't supported.

References to the user credentials are located under the environmentVariables section as a list of users

Example:

environmentVariables:
    - users:
        - personaName: "User1"
          emailKey: "user1Email"
          passwordKey: "user1Password"
        - personaName: "User2"
          emailKey: "user2Email"
          passwordKey: "user2Password"

The personaName is used as part of the test definition to indicate what user to run the test as.

Supported credentials storage mechanisms

Note

Multi-factor authentication is not supported.

Environment variables

To store credentials as environment variables, you can set it as follows:

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

In the YAML, two properties need to be defined to indicate that this user's credentials are stored in environment variables:

  • emailKey: The environment variable used to store the user's email.
  • passwordKey: The environment variable used to store the user's password.

Example YAML:

    - personaName: "User1"
      emailKey: "user1Email"
      passwordKey: "user1Password"

Example PowerShell to set user credentials based on YAML:

$env:user1Email = "someone@example.com"
$env:user1Password = "fake password"

See also

Power Apps Test Engine overview (preview)
Power Apps Test Engine Power Fx functions (preview)