UpsCardPom.cs 4.6 KB

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