UpsListPom.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class UpsListPom(IPage page) {
  4. public AddResourceComponent AddUps => new(page, "ups");
  5. public ILocator PageRoot => page.GetByTestId("ups-page-root");
  6. public ILocator PageTitle => page.GetByTestId("ups-page-title");
  7. public ILocator Loading => page.GetByTestId("ups-loading");
  8. public ILocator EmptyState => page.GetByTestId("ups-empty");
  9. public ILocator UpsList => page.GetByTestId("ups-list");
  10. public ILocator AddSection => page.GetByTestId("ups-add-section");
  11. // Must match AddResourceComponent test IDs
  12. public ILocator AddInput => page.GetByTestId("add-ups-input");
  13. public ILocator AddButton => page.GetByTestId("add-ups-button");
  14. // -------------------------------------------------
  15. // Dynamic Ups Items
  16. // -------------------------------------------------
  17. public ILocator UpsItem(string name) => page.GetByTestId($"ups-item-{Sanitize(name)}");
  18. public ILocator OpenLink(string name) {
  19. return UpsItem(name)
  20. .GetByTestId("open-ups-link");
  21. }
  22. public ILocator EditButton(string name) {
  23. return UpsItem(name)
  24. .GetByTestId("edit-ups-button");
  25. }
  26. public ILocator SaveButton(string name) {
  27. return UpsItem(name)
  28. .GetByTestId("save-ups-button");
  29. }
  30. public ILocator CancelButton(string name) {
  31. return UpsItem(name)
  32. .GetByTestId("cancel-ups-button");
  33. }
  34. public ILocator RenameButton(string name) {
  35. return UpsItem(name)
  36. .GetByTestId("rename-ups-button");
  37. }
  38. public ILocator CloneButton(string name) {
  39. return UpsItem(name)
  40. .GetByTestId("clone-ups-button");
  41. }
  42. public ILocator DeleteButton(string name) {
  43. return UpsItem(name)
  44. .GetByTestId("delete-ups-button");
  45. }
  46. // -------------------------------------------------
  47. // Navigation
  48. // -------------------------------------------------
  49. public async Task GotoAsync(string baseUrl) {
  50. await page.GotoAsync($"{baseUrl}/ups/list");
  51. await AssertLoadedAsync();
  52. }
  53. public async Task AssertLoadedAsync() {
  54. await Assertions.Expect(PageRoot).ToBeVisibleAsync();
  55. await Assertions.Expect(PageTitle).ToBeVisibleAsync();
  56. }
  57. public async Task WaitForListAsync() => await Assertions.Expect(UpsList).ToBeVisibleAsync();
  58. // -------------------------------------------------
  59. // Actions
  60. // -------------------------------------------------
  61. public async Task AddUpsAsync(string name) {
  62. await AddUps.AddAsync(name);
  63. await Assertions.Expect(UpsItem(name))
  64. .ToBeVisibleAsync();
  65. }
  66. public async Task DeleteUpsAsync(string name) {
  67. await DeleteButton(name).ClickAsync();
  68. await page.GetByTestId("Ups-confirm-modal-confirm").ClickAsync();
  69. await Assertions.Expect(UpsItem(name))
  70. .Not.ToBeVisibleAsync();
  71. }
  72. public async Task OpenUpsAsync(string name) {
  73. await OpenLink(name).ClickAsync();
  74. await page.WaitForURLAsync($"**/resources/hardware/{name}");
  75. }
  76. public async Task AssertUpsExists(string name) {
  77. await Assertions.Expect(UpsItem(name))
  78. .ToBeVisibleAsync();
  79. }
  80. public async Task AssertUpsDoesNotExist(string name) {
  81. await Assertions.Expect(UpsItem(name))
  82. .Not.ToBeVisibleAsync();
  83. }
  84. private static string Sanitize(string value) => value.Replace(" ", "-");
  85. }