{"id":43789,"date":"2026-02-23T17:02:27","date_gmt":"2026-02-23T11:32:27","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=43789"},"modified":"2026-02-23T17:02:27","modified_gmt":"2026-02-23T11:32:27","slug":"automating-ui-testing-for-model-driven-apps-with-power-platform-test-engine-preview","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2026\/02\/automating-ui-testing-for-model-driven-apps-with-power-platform-test-engine-preview\/","title":{"rendered":"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43792\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview.png\" alt=\"Mobile Driven Apps\" width=\"2100\" height=\"1200\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview.png 2100w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview-300x171.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview-1024x585.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview-768x439.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview-1536x878.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview-2048x1170.png 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview-660x377.png 660w\" sizes=\"(max-width: 2100px) 100vw, 2100px\" \/><\/p>\n<p>Model-driven apps in Power Platform provide a structured way to build data-centric applications using Dataverse where the user interface is automatically generated based on tables, relationships, and business logic. As these apps evolve it incorporates complex forms, business process flows, security roles, plugins, and integrations.<\/p>\n<p>Over the time the need for automated, reliable testing becomes essential. Automation minimizes the dependency on repetitive manual testing, helping teams conserve time and optimize resources. Additionally, identifying defects and regressions early in the development lifecycle enhances overall solution quality and enables faster, more reliable releases.<\/p>\n<p>Power Apps Test Engine is a low code automation tool offering from Microsoft. It allows automate end-to-end testing for both Canvas and Model-Driven Apps.<\/p>\n<p>This blog provides a step-by-step guide to setting up and using the Power Apps Test Engine for Model Driven Apps, demonstrating how to utilize basic \u201cPower Fx\u201d queries to execute automated tests. We will be using a common \u201cSales Hub\u201d app for Lead record creation scenario to stimulate the user interactions such as filling fields, clicking buttons, and verifying expected outcomes using Assert functions.<\/p>\n<p><strong>Note<\/strong>: Currently Power Apps Test Engine offers Power Fx functions for Model Driven App automation that are still in PREVIEW hence to use those you must explicitly pass \u201callowPowerFxNamespaces:- Preview\u201d parameter in Yaml file (explained later). The available supported Power Fx functions can be referred from this Microsoft <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/test-engine\/powerfx-functions#previewplaywrightaction\" target=\"_blank\" rel=\"noopener\">doc<\/a>.<\/p>\n<p>In the previous <a href=\"https:\/\/www.inogic.com\/blog\/2025\/07\/automating-ui-testing-for-canvas-apps-with-power-platform-test-engine\/\" target=\"_blank\" rel=\"noopener\">blog<\/a>, we already explored how to implement automation for Canvas Apps using the Power Apps Test Engine. Before starting with the Model Driven App automation, you can refer the previous blog and ensure that you have fulfilled the prerequisites and have installed and configured Power Apps Test Engine along with the Playwright.<\/p>\n<p>I am just mentioning the overview of the steps you need to perform in your visual studio code editor by referring to previous blog mentioned above.<\/p>\n<ol>\n<li>Create Test Engine Workspace<\/li>\n<li>Clone the PowerApps Test Engine Repository<\/li>\n<li>Navigate to the Source Folder &amp; build the Power Apps Test Engine Project<\/li>\n<li>Install Microsoft Playwright from within the Power Apps Test Engine<\/li>\n<li>Create Folder Structure for your tests under root directory to maintain :<\/li>\n<\/ol>\n<ul>\n<li><strong>Yaml<\/strong> file<\/li>\n<li><strong>json<\/strong> file<\/li>\n<li><strong>ps1<\/strong> PowerShell script file.<\/li>\n<\/ul>\n<p>For this demonstration I have created folder under root directory \u201ctests\u201d under which created another one named \u201cmodeldriven\u201d as shown below:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43793\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps1.jpg\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1113\" height=\"743\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps1.jpg 1113w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps1-300x200.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps1-1024x684.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps1-768x513.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps1-660x441.jpg 660w\" sizes=\"(max-width: 1113px) 100vw, 1113px\" \/><\/p>\n<p>Testing your model-driven application with\u00a0Power Apps <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/test-engine\/overview\" target=\"_blank\" rel=\"noopener\">Test Engine<\/a>\u00a0requires the following steps:<\/p>\n<ol>\n<li>\n<h3><strong><u>Create the\u00a0Config.json\u00a0file as shown below:<\/u><\/strong><\/h3>\n<\/li>\n<\/ol>\n<ul>\n<li><strong>environmentId<\/strong>: The ID of your Power Platform environment where the Model driven s app is deployed.<\/li>\n<li><strong>tenantId<\/strong>: Your tenant ID.<\/li>\n<li><strong>installPlaywright<\/strong>: Set to false if Playwright is already installed.<\/li>\n<li><strong>user1Email<\/strong>: Email of the user who will run the tests.<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43794\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps2.jpg\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1460\" height=\"734\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps2.jpg 1460w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps2-300x151.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps2-1024x515.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps2-768x386.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps2-660x332.jpg 660w\" sizes=\"(max-width: 1460px) 100vw, 1460px\" \/><\/p>\n<p><strong>Note:<\/strong>\u00a0You do\u00a0not\u00a0need to specify a password here, as authentication uses the saved\u00a0StorageState.<\/p>\n<ol start=\"2\">\n<li>\n<h3><strong><u>Create a Test Plan<\/u><\/strong><\/h3>\n<\/li>\n<\/ol>\n<ul>\n<li>Define the test plan using YAML-based format which uses Power Fx test functions. For more details about Test Plan definition you can refer this Microsoft <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/test-engine\/yaml\" target=\"_blank\" rel=\"noopener\">doc<\/a>.<\/li>\n<\/ul>\n<p style=\"text-align: left; padding-left: 40px;\"><strong>Test Plan majorly consist of below 3 sections:<\/strong><\/p>\n<ol>\n<li><strong>testSettings: <\/strong>Basic settings like Browser for test run, recording setting, headless mode etc. are defined here. <strong>Note: <\/strong>If headless is set as false means you will see the test run execution in visible browser window.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li><strong>environmentVariables: <\/strong>User Persona which was defined in Config.json is passed here. You can&#8217;t store test credentials in test plan files. You must select Storagestate as the secure location to store credentials. The test plan file contains references to which environment variables are used for user persona.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li><strong>testSuite: <\/strong>It is collection of test steps. You can define the PowerFx functions as per your use case.<\/li>\n<\/ol>\n<p>I have created <strong>\u201cLeadCreation.yaml\u201d<\/strong> file wherein I have implemented the simple lead creation use case with below logic:<\/p>\n<ol>\n<li>Open the Sales Hub app<\/li>\n<li>Verify\/assert if Sales Hub app page loaded successfully<\/li>\n<li>Navigate to Lead view click on New button<\/li>\n<li>Create Lead record by filling in First Name, Last Name, Subject fields<\/li>\n<li>Avoid duplicate lead records creation by appending current timestamp<\/li>\n<li>Wait until save button appears<\/li>\n<li>Save the record and verify\/assert by taking screenshot if lead record saved successfully<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43795\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps3.jpg\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1449\" height=\"982\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps3.jpg 1449w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps3-300x203.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps3-1024x694.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps3-768x520.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps3-660x447.jpg 660w\" sizes=\"(max-width: 1449px) 100vw, 1449px\" \/><\/p>\n<p>This is the complete Yaml file content pasted here:<\/p>\n<p><strong>Note: <\/strong>currently explicitly you have to enable preview under testSettings for all Model Driven Apps testing (highlighted below).<\/p>\n<pre class=\"lang:css gutter:true start:1\">testSettings:\r\nbrowserConfigurations:\r\n\r\n- browser: Chromium\r\n\r\nrecordVideo: true\r\n\r\nheadless: false\r\n\r\nextensionModules:\r\n\r\nenable: true\r\n\r\nallowPowerFxNamespaces:\r\n\r\n- Preview\r\nenvironmentVariables:\r\n\r\nusers:\r\n\r\n- personaName: User1\r\n\r\nemailKey: user1Email\r\n\r\n\u00a0\r\n\r\ntestSuite:\r\n\r\ntestSuiteName: \"Dynamics 365 Sales Hub Test\"\r\n\r\npersona: User1\r\n\r\nappId: \"4c0894ba-19c9-f011-8543-7c1e523cbef1\"\r\n\r\n\u00a0\r\n\r\ntestCases:\r\n\r\n- testCaseName: \"Create Lead record\"\r\n\r\ntestSteps: |\r\n\r\n\/\/ Verify we are landed on the correct page\r\n\r\nAssert(Preview.PlaywrightAction(\"\/\/div[@title='Dynamics 365']\", \"exists\"), \"Failed to navigate to Dynamics 365 - page may not have loaded completely\");\r\n\r\n\u00a0\r\n\r\n\/\/ Create new lead -Click on New button\r\n\r\nAssert(Preview.PlaywrightAction(\"button[aria-label='New']\", \"exists\"), \"New lead button not found - may not be on the correct page\");\r\n\r\nPreview.PlaywrightAction(\"button[aria-label='New']\", \"click\");\r\n\r\n\u00a0\r\n\r\n\/\/ Build unique suffix using time components to avoid duplicates fill firstname, lastname and companyname\r\n\r\nPreview.PlaywrightActionValue(\"input[aria-label*='First Name']\", \"fill\", \"John_\" &amp; Hour(Now()) &amp; Minute(Now()) &amp; Second(Now()));\r\n\r\nPreview.PlaywrightActionValue(\"input[aria-label*='Last Name']\", \"fill\", \"TestLead_\" &amp; Hour(Now()) &amp; Minute(Now()) &amp; Second(Now()));\r\n\r\nPreview.PlaywrightActionValue(\"input[aria-label*='Topic']\", \"fill\", \"Test Lead Demo \" &amp; Hour(Now()) &amp; Minute(Now()) &amp; Second(Now()));\r\n\r\n\u00a0\r\n\r\n\/\/ Save the lead - try multiple save button selectors\r\n\r\nAssert(Preview.PlaywrightAction(\"button[aria-label*='Save']\", \"exists\"), \"Save button not found\");\r\n\r\nPreview.PlaywrightAction(\"button[aria-label*='Save']\", \"click\");\r\n\r\n\u00a0\r\n\r\n\/\/ Take Screenshot after saving (use Playwright locator-based screenshot)\r\n\r\nPreview.PlaywrightActionValue(\"body\", \"screenshot\", \"LeadCreation_\" &amp; Hour(Now()) &amp; Minute(Now()) &amp; Second(Now()) &amp; \".png\");<\/pre>\n<p><strong>\u00a0<\/strong><strong>Note: <\/strong>Remember appId under Test Suite defined above is to be replaced with your appId.<\/p>\n<h3>3.<strong><u>Create a PowerShell Script to Automate the Test Run:<\/u><\/strong><\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Create a file named <strong>ps1<\/strong> with the necessary code to execute the test cases as shown below:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43796\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps4.jpg\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1414\" height=\"703\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps4.jpg 1414w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps4-300x149.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps4-1024x509.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps4-768x382.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps4-660x328.jpg 660w\" sizes=\"(max-width: 1414px) 100vw, 1414px\" \/><\/p>\n<p>This is the complete RunTests.ps1 file content pasted here, as shown below Pac test run commands are used and pac parameters are passed.<\/p>\n<pre class=\"lang:css gutter:true start:1\"># Copyright (c) Microsoft Corporation. # Licensed under the MIT License. \u00a0 # Get current directory so we can reset back to it after running the tests $currentDirectory = Get-Location \u00a0 $config = (Get-Content -Path .\\config.json -Raw) | ConvertFrom-Json $tenantId = $config.tenantId $environmentId = $config.environmentId $user1Email = $config.user1Email \u00a0 if ([string]::IsNullOrEmpty($environmentId)) { Write-Error \"Environment not configured. Please update config.json\" return } \u00a0 $foundEnvironment = $false $textResult = (pac env select --environment $environmentId) $textResult = (pac env list) \u00a0 $environmentUrl = \"\" \u00a0 Write-Host \"Searching for $environmentId\" \u00a0 foreach ($line in $textResult) { if ($line -match $environmentId) { # CHANGED: Removed the trailing slash requirement inside the regex if ($line -match \"(https:\/\/\\S+)\") { $environmentUrl = $matches[0] \u00a0 # If the regex captured a trailing slash, remove it nicely, otherwise keep it if ($environmentUrl.EndsWith(\"\/\")) { $environmentUrl = $environmentUrl.Substring(0, $environmentUrl.Length - 1) } \u00a0 $foundEnvironment = $true break } } } \u00a0 if ($foundEnvironment) { Write-Output \"Found matching Environment URL: $environmentUrl\" } else { Write-Output \"Environment ID not found.\" return } \u00a0 $mdaUrl = \"$environmentUrl\/main.aspx?appid=4c0894ba-19c9-f011-8543-7c1e523cbef1&amp;pagetype=entitylist&amp;etn=lead&amp;viewid=00000000-0000-0000-00aa-000010001005\" \u00a0 # Build the latest debug version of Test Engine from source Set-Location ..\\..\\src dotnet build \u00a0 if ($config.installPlaywright) { Start-Process -FilePath \"pwsh\" -ArgumentList \"-Command `\"..\\bin\\Debug\\PowerAppsTestEngine\\playwright.ps1 install`\"\" -Wait } else { Write-Host \"Skipped playwright install\" } \u00a0 Set-Location ..\\bin\\Debug\\PowerAppsTestEngine $env:user1Email = $user1Email # Run the tests for each user in the configuration file. dotnet PowerAppsTestEngine.dll -u \"storagestate\" --provider \"mda\" -a \"none\" -i \"$currentDirectory\\LeadCreation.yaml\" -t $tenantId -e $environmentId -d \"$mdaUrl\" \u00a0 # Reset the location back to the original directory. Set-Location $currentDirectory<\/pre>\n<p><strong>Notes:<\/strong><\/p>\n<ul>\n<li>The URL format should specify the correct\u00a0\u201cpagetype\u201d, \u201centity\u201d and \u201cview\u201d based on your testing scenario. As highlighted above<strong> $mdaurl<\/strong> is set to open the lead view.<\/li>\n<li>Under Storagestate \u2013provider is set to \u201c<strong>mda<\/strong>\u201d (Model Driven App) and provide yaml file name under $currentDirectory as shown \u201c<strong>yaml\u201d <\/strong>file name is passed.<\/li>\n<\/ul>\n<h3><strong><u>4. Execute\/Run the Script<\/u><\/strong><\/h3>\n<ul>\n<li>Now the last step is to execute the script. But before that run the below command from terminal so that authentication will be completed and will be stored in storage state.<\/li>\n<\/ul>\n<p><strong>pac auth create<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43797\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps5.jpg\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1310\" height=\"604\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps5.jpg 1310w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps5-300x138.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps5-1024x472.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps5-768x354.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps5-660x304.jpg 660w\" sizes=\"(max-width: 1310px) 100vw, 1310px\" \/><\/p>\n<p>A browser window will launch automatically with the email address pre-filled. You\u2019ll only need to enter the password manually once. This password is securely stored in the StorageState file for future test executions. You will observe below \u201cAuthentication Complete\u201d message post login.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43800\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps6.png\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1447\" height=\"254\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps6.png 1447w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps6-300x53.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps6-1024x180.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps6-768x135.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps6-660x116.png 660w\" sizes=\"(max-width: 1447px) 100vw, 1447px\" \/><\/p>\n<p>Once authentication is completed under the modeldriven folder, execute command:\u00a0<em><strong>.\\RunTests.ps1 <\/strong><\/em><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43799\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps7.png\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"943\" height=\"49\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps7.png 943w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps7-300x16.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps7-768x40.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps7-660x34.png 660w\" sizes=\"(max-width: 943px) 100vw, 943px\" \/><\/p>\n<p>After the first login, the tests will proceed automatically without any additional input, as shown in the video below:<\/p>\n<div style=\"width: 665px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-43789-1\" width=\"665\" height=\"374\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview.webm?_=1\" \/><a href=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview.webm\">https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Automating-UI-Testing-for-Model-Driven-Apps-with-Power-Platform-Test-Engine-Preview.webm<\/a><\/video><\/div>\n<p>You can see the result of execution at terminal itself in terms of test cases results if passed or failed. If test failed then you can review logs, screenshots, and videos of the test execution in the \u201cTestOutput\u201d folder to verify results and you can debug if necessary.<\/p>\n<p>All output from your test runs will be saved in the TestOutput folder located at below path: \u00a0 %USER_PROFILE%\\AppData\\Local\\Temp\\Microsoft\\TestEngine\\TestOutput<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-43798\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps8.png\" alt=\"Automating UI Testing for Model Driven Apps with Power Platform Test Engine (Preview)\" width=\"1069\" height=\"260\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps8.png 1069w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps8-300x73.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps8-1024x249.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps8-768x187.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/02\/Mobile-Driven-Apps8-660x161.png 660w\" sizes=\"(max-width: 1069px) 100vw, 1069px\" \/><\/p>\n<h3><strong>Conclusion:<\/strong><\/h3>\n<p>Using the Power Platform Test Engine with .NET execution provides a reliable and automated approach to validating Model-Driven Apps before deployment. It enables structured test scenarios to verify form behavior, command actions, business process flows, field validations which ultimately improving quality by automating the repetitive scenarios and hence reducing the manual efforts.<\/p>\n<h3><strong>FAQs<\/strong><\/h3>\n<p><strong>What is Power Apps Test Engine?<\/strong><\/p>\n<p>A low-code automation tool from Microsoft for end-to-end testing of Canvas and Model-Driven Power Apps using Power Fx functions and Playwright.<\/p>\n<p><strong>Why automate testing for Model-Driven Apps?<\/strong><\/p>\n<p>Eliminates manual repetition, catches regressions early, validates forms\/business processes, and accelerates releases while conserving resources.<\/p>\n<p><strong>What&#8217;s the difference between Canvas and Model-Driven testing?<\/strong><\/p>\n<p>Canvas tests custom, pixel-perfect user interfaces and unique app logic; Model-Driven tests structured data forms, business processes, and out-of-the-box workflows built on Dataverse tables.<\/p>\n<p><strong>Can Test Engine test real business scenarios?<\/strong><\/p>\n<p>Yes\u2014like creating Leads in Sales Hub, filling forms, saving records, and verifying success with screenshots.<\/p>\n<p><strong>Can I use the same Test Engine for both Canvas and Model-Driven apps?<\/strong><\/p>\n<p>Absolutely. While the setup and specific Power Fx functions might differ slightly (e.g., Model-Driven apps currently rely more on Playwright action previews), the core engine and workspace remain the same.<\/p>\n<p><strong>How does &#8220;Low-Code&#8221; testing help my business team?<\/strong><\/p>\n<p>Instead of hiring specialized &#8220;Automation Engineers&#8221; who write complex C# or Java code, your Business Analysts or Functional Consultants can maintain the tests. Since the tests use business logic (e.g., &#8220;Click the Save button&#8221;), the test scripts are readable by humans, not just machines.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Model-driven apps in Power Platform provide a structured way to build data-centric applications using Dataverse where the user interface is automatically generated based on tables, relationships, and business logic. As these apps evolve it incorporates complex forms, business process flows, security roles, plugins, and integrations. Over the time the need for automated, reliable testing becomes\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2026\/02\/automating-ui-testing-for-model-driven-apps-with-power-platform-test-engine-preview\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2576,2848,2361],"tags":[],"class_list":["post-43789","post","type-post","status-publish","format-standard","hentry","category-model-driven-app","category-power-platform","category-technical"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/43789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=43789"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/43789\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=43789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=43789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=43789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}