UpsCardPom.cs 4.7 KB

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