diff --git a/src/Microsoft.PowerApps.TestEngine/TestInfra/ITestInfraFunctions.cs b/src/Microsoft.PowerApps.TestEngine/TestInfra/ITestInfraFunctions.cs index 8aa246559..5e5686432 100644 --- a/src/Microsoft.PowerApps.TestEngine/TestInfra/ITestInfraFunctions.cs +++ b/src/Microsoft.PowerApps.TestEngine/TestInfra/ITestInfraFunctions.cs @@ -70,6 +70,14 @@ public interface ITestInfraFunctions /// Task public Task FillAsync(string selector, string value); + /// + /// Presses a key on an element + /// + /// Selector to find element + /// Key to press (e.g., 'Enter', 'Tab', etc.) + /// Task + public Task PressAsync(string selector, string key); + /// /// Clicks an element /// diff --git a/src/Microsoft.PowerApps.TestEngine/TestInfra/PlaywrightTestInfraFunctions.cs b/src/Microsoft.PowerApps.TestEngine/TestInfra/PlaywrightTestInfraFunctions.cs index 32cedf7ca..ef63d9dc9 100644 --- a/src/Microsoft.PowerApps.TestEngine/TestInfra/PlaywrightTestInfraFunctions.cs +++ b/src/Microsoft.PowerApps.TestEngine/TestInfra/PlaywrightTestInfraFunctions.cs @@ -462,6 +462,12 @@ public async Task FillAsync(string selector, string value) await Page.FillAsync(selector, value); } + public async Task PressAsync(string selector, string value) + { + ValidatePage(); + await Page.PressAsync(selector, value); + } + public async Task ClickAsync(string selector) { ValidatePage(); diff --git a/src/docs/PowerFX/TestEngine.PlaywrightAction.md b/src/docs/PowerFX/TestEngine.PlaywrightAction.md index c977ff4c2..631c6c0a0 100644 --- a/src/docs/PowerFX/TestEngine.PlaywrightAction.md +++ b/src/docs/PowerFX/TestEngine.PlaywrightAction.md @@ -24,6 +24,7 @@ The following actions are supported | exists | Returns True or False is locator exist | | navigate | Navigate to the url | | wait | Wait for locator items to exist | +| press | Send a keyboard press to the locator (use via PlaywrightActionValue) | ## Examples @@ -34,3 +35,10 @@ The following actions are supported ` Preview.PlaywrightAction("https://www.microsoft.com", "navigate")` ` Preview.PlaywrightAction("//button", "wait")` + +## Sending keyboard keys (Enter, Tab, etc.) + +Use `Preview.PlaywrightActionValue` when you need to send keyboard keys to an element. The third parameter is the key name (for example "Enter"). If empty, the default key is "Enter". + +` Preview.PlaywrightActionValue("//input[@id='search']", "press", "Enter")` + diff --git a/src/testengine.module.playwrightaction.tests/PlaywrightActionFunctionValueTests.cs b/src/testengine.module.playwrightaction.tests/PlaywrightActionFunctionValueTests.cs index 2214f67ac..0a4b761a1 100644 --- a/src/testengine.module.playwrightaction.tests/PlaywrightActionFunctionValueTests.cs +++ b/src/testengine.module.playwrightaction.tests/PlaywrightActionFunctionValueTests.cs @@ -65,6 +65,17 @@ private void RunTestScenario(string id) case "fill": MockTestInfraFunctions.Setup(x => x.FillAsync("//foo", "xyz")).Returns(Task.CompletedTask); break; + case "press-in-iframe": + var mockPressFrame = new Mock