UpsCardPom.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class UpsCardPom(IPage page)
  4. {
  5. public TagsPom Tags => new(page);
  6. // -------------------------------------------------
  7. // Root
  8. // -------------------------------------------------
  9. private static string Sanitize(string value)
  10. => value.Replace(" ", "-");
  11. public ILocator Card(string name)
  12. => page.GetByTestId($"ups-item-{Sanitize(name)}");
  13. public ILocator Link(string name)
  14. => page.GetByTestId($"ups-item-{Sanitize(name)}-link");
  15. // -------------------------------------------------
  16. // Action Buttons
  17. // -------------------------------------------------
  18. public ILocator EditButton(string name)
  19. => Card(name).GetByTestId("edit-ups-button");
  20. public ILocator SaveButton(string name)
  21. => Card(name).GetByTestId("save-ups-button");
  22. public ILocator CancelButton(string name)
  23. => Card(name).GetByTestId("cancel-ups-button");
  24. public ILocator RenameButton(string name)
  25. => Card(name).GetByTestId("rename-ups-button");
  26. public ILocator CloneButton(string name)
  27. => Card(name).GetByTestId("clone-ups-button");
  28. public ILocator DeleteButton(string name)
  29. => Card(name).GetByTestId("delete-ups-button");
  30. // -------------------------------------------------
  31. // Edit Inputs
  32. // -------------------------------------------------
  33. public ILocator ModelInput(string name)
  34. => Card(name).GetByTestId("ups-model-input");
  35. public ILocator CapacityInput(string name)
  36. => Card(name).GetByTestId("ups-capacity-input");
  37. // -------------------------------------------------
  38. // View Values
  39. // -------------------------------------------------
  40. public ILocator ModelValue(string name)
  41. => Card(name).GetByTestId("ups-model-value");
  42. public ILocator CapacityValue(string name)
  43. => Card(name).GetByTestId("ups-capacity-value");
  44. // -------------------------------------------------
  45. // Notes
  46. // -------------------------------------------------
  47. public ILocator NotesViewer
  48. => page.GetByTestId("ups-notes-viewer-container");
  49. public ILocator NotesEditor
  50. => page.GetByTestId("ups-notes-editor-container");
  51. // -------------------------------------------------
  52. // Confirm Modal (TestIdPrefix="Ups")
  53. // -------------------------------------------------
  54. public ILocator ConfirmDeleteButton
  55. => page.GetByTestId("Ups-confirm-modal-confirm");
  56. // -------------------------------------------------
  57. // Rename Modal (TestIdPrefix="ups-rename")
  58. // -------------------------------------------------
  59. public ILocator RenameInput
  60. => page.GetByTestId("ups-rename-string-value-modal-input");
  61. public ILocator RenameSubmit
  62. => page.GetByTestId("ups-rename-string-value-modal-submit");
  63. // -------------------------------------------------
  64. // Clone Modal (TestIdPrefix="ups-clone")
  65. // -------------------------------------------------
  66. public ILocator CloneInput
  67. => page.GetByTestId("ups-clone-string-value-modal-input");
  68. public ILocator CloneSubmit
  69. => page.GetByTestId("ups-clone-string-value-modal-submit");
  70. // -------------------------------------------------
  71. // Assertions
  72. // -------------------------------------------------
  73. public async Task AssertVisibleAsync(string name)
  74. {
  75. await Assertions.Expect(Card(name)).ToBeVisibleAsync();
  76. }
  77. // -------------------------------------------------
  78. // High-Level Actions
  79. // -------------------------------------------------
  80. public async Task BeginEditAsync(string name)
  81. => await EditButton(name).ClickAsync();
  82. public async Task SaveAsync(string name)
  83. => await SaveButton(name).ClickAsync();
  84. public async Task CancelAsync(string name)
  85. => await CancelButton(name).ClickAsync();
  86. public async Task RenameAsync(string currentName, string newName)
  87. {
  88. await RenameButton(currentName).ClickAsync();
  89. await RenameInput.FillAsync(newName);
  90. await RenameSubmit.ClickAsync();
  91. await page.WaitForURLAsync($"**/resources/hardware/{newName}");
  92. }
  93. public async Task CloneAsync(string currentName, string cloneName)
  94. {
  95. await CloneButton(currentName).ClickAsync();
  96. await CloneInput.FillAsync(cloneName);
  97. await CloneSubmit.ClickAsync();
  98. await page.WaitForURLAsync($"**/resources/hardware/{cloneName}");
  99. }
  100. public async Task DeleteAsync(string name)
  101. {
  102. await DeleteButton(name).ClickAsync();
  103. await ConfirmDeleteButton.ClickAsync();
  104. }
  105. }