using Microsoft.Playwright; namespace JdeScoping.Ui.Tests.Helpers; internal static class UiSearchFormHelper { public static async Task SelectSearchTypeAsync(IPage page, string searchType) { await page.Locator(".rz-dropdown").First.ClickAsync(); await page.GetByRole(AriaRole.Option, new PageGetByRoleOptions { Name = searchType, Exact = true }).ClickAsync(); await page.WaitForTimeoutAsync(500); } public static Task EnterSearchNameAsync(IPage page, string name) => page.Locator("input[placeholder=' ']").First.FillAsync(name); public static async Task SetDateRangeAsync(IPage page, string minimumMmDdYyyy, string maximumMmDdYyyy) { await page.Locator("input[name='MinimumDt']").FillAsync(minimumMmDdYyyy); await page.Locator("input[name='MaximumDt']").FillAsync(maximumMmDdYyyy); } public static async Task AddAutocompleteItemAsync(IPage page, string panelHeader, string value) { var panel = page.Locator($".rz-card:has-text('{panelHeader}')"); await panel.Locator(".rz-autocomplete input").First.FillAsync(value); await page.WaitForTimeoutAsync(500); var listItem = page.Locator(".rz-autocomplete-list .rz-autocomplete-list-item").First; if (await listItem.IsVisibleAsync()) { await listItem.ClickAsync(); } await panel.GetByRole(AriaRole.Button, new LocatorGetByRoleOptions { Name = "Add" }).ClickAsync(); await page.WaitForTimeoutAsync(250); } public static async Task UploadFileAsync(IPage page, string panelHeader, string filePath) { var panel = page.Locator($".rz-card:has-text('{panelHeader}')"); await panel.Locator("input[type='file']").First.SetInputFilesAsync(filePath); await page.WaitForTimeoutAsync(1_500); } public static async Task SubmitSearchAsync(IPage page) { await page.GetByRole(AriaRole.Button, new PageGetByRoleOptions { Name = "Submit" }).First.ClickAsync(); await page.GetByText("Confirm Submit").WaitForAsync(new LocatorWaitForOptions { State = WaitForSelectorState.Visible, Timeout = 10_000 }); await page.Locator(".rz-dialog-wrapper button").GetByText("Submit", new LocatorGetByTextOptions { Exact = true }).ClickAsync(); await page.WaitForTimeoutAsync(1_000); } public static async Task AssertNoErrorNotificationAsync(IPage page) { var error = page.Locator(".rz-notification-error"); await Assertions.Expect(error).Not.ToBeVisibleAsync(new LocatorAssertionsToBeVisibleOptions { Timeout = 5_000 }); } }