Backend/e-suite.Automation.UITests/ESuite.UI.E2E/Pages/AddFormTemplatePage.cs
2026-01-20 21:50:10 +00:00

55 lines
2.2 KiB
C#

using ESuite.UI.E2E.Helpers;
using OpenQA.Selenium;
namespace ESuite.UI.E2E.Pages
{
public class AddFormTemplatePage
{
private readonly IWebDriver driver;
// Constructor to initialize the driver
public AddFormTemplatePage(IWebDriver driver)
{
this.driver = driver;
}
// Page elements
public static By InsertFieldButton => By.XPath("//button/span[text()='Insert Field']");
public static By CustomFieldDropdownItem(string? name) => By.XPath($"//span[contains(@class,'ck-button__label')][text()='{name}']");
public static By DefinitionTextBox => By.XPath("//div[contains(@class,'ck-editor__editable')][@role='textbox']");
public static By InsertTableButton => By.XPath("//button[@data-cke-tooltip-text='Insert table']");
public static By InsertTableDropdownGrid => By.ClassName("ck-insert-table-dropdown__grid");
public static By CellTextbox(int row, int column) => By.XPath($"//div[@role='textbox']//figure/table/tbody/tr[{row}]/td[{column}]/span");
public static By FormTemplateVersionByName(string name) => By.XPath($"//td[text()='{name}']/following-sibling::td");
// Page actions
public static void CreateTableViaGrid(int row, int column)
{
By coordinates = By.XPath($"//button[@data-row='{row}'][@data-column='{column}']");
I.Click(InsertTableButton);
I.WaitForVisible(InsertTableDropdownGrid);
I.Click(coordinates);
}
public static void ChooseCustomField(string? customField, int row, int column)
{
I.Click(CellTextbox(row, column));
I.Click(InsertFieldButton);
I.Click(CustomFieldDropdownItem(customField));
}
public static void FillFieldTextInForm(string text, int row, int column)
{
I.Click(CellTextbox(row, column));
I.FillField(CellTextbox(row, column), text);
}
public static int GetFormVersionTemplateByName(string name)
{
var version = I.GetTextFromElement(FormTemplateVersionByName(name));
return int.Parse(version);
}
}
}