PortsPom.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. namespace Tests.E2e.PageObjectModels;
  2. using Microsoft.Playwright;
  3. public class PortsPom(IPage page) {
  4. public TagsPom Tags => new(page);
  5. public LabelsPom Labels => new(page);
  6. public PortsPom Ports => new(page);
  7. private const string _portsPrefix = "accesspoint-ports";
  8. // -------------------------------------------------
  9. // Root
  10. // -------------------------------------------------
  11. public ILocator Root(string testIdPrefix)
  12. => page.GetByTestId($"{testIdPrefix}-port-group-section");
  13. public ILocator AddButton(string testIdPrefix)
  14. => page.GetByTestId($"{testIdPrefix}-port-group-add");
  15. // -------------------------------------------------
  16. // Port Groups
  17. // -------------------------------------------------
  18. public ILocator PortGroup(string testIdPrefix, int index)
  19. => page.GetByTestId($"{testIdPrefix}-port-group-item-{index}");
  20. public ILocator EditPortGroupButton(string testIdPrefix, int index)
  21. => page.GetByTestId($"{testIdPrefix}-port-group-edit-{index}");
  22. public ILocator PortsContainer(string testIdPrefix, int index)
  23. => page.GetByTestId($"{testIdPrefix}-port-group-ports-{index}");
  24. // -------------------------------------------------
  25. // Individual Ports
  26. // -------------------------------------------------
  27. public ILocator Port(string testIdPrefix, int groupIndex, int portIndex)
  28. => page.GetByTestId($"{testIdPrefix}-port-group-visualizer-{groupIndex}-port-{portIndex}");
  29. // -------------------------------------------------
  30. // Port Modal
  31. // -------------------------------------------------
  32. public ILocator PortModal(string testIdPrefix)
  33. => page.GetByTestId($"{testIdPrefix}-port-group-port-modal");
  34. // -------------------------------------------------
  35. // Connection Modal
  36. // -------------------------------------------------
  37. public ILocator ConnectionModal(string testIdPrefix)
  38. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-container");
  39. public ILocator ResourceASelect(string testIdPrefix)
  40. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-resource-a");
  41. public ILocator GroupASelect(string testIdPrefix)
  42. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-group-a");
  43. public ILocator PortASelect(string testIdPrefix)
  44. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-port-a");
  45. public ILocator ResourceBSelect(string testIdPrefix)
  46. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-resource-b");
  47. public ILocator GroupBSelect(string testIdPrefix)
  48. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-group-b");
  49. public ILocator PortBSelect(string testIdPrefix)
  50. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-port-b");
  51. public ILocator SubmitConnection(string testIdPrefix)
  52. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-submit");
  53. public ILocator LabelInput(string testIdPrefix)
  54. => page.GetByTestId($"{testIdPrefix}-port-group-connection-modal-label");
  55. // -------------------------------------------------
  56. // Assertions
  57. // -------------------------------------------------
  58. public async Task AssertPortGroupVisibleAsync(string prefix, int index)
  59. => await Assertions.Expect(PortGroup(prefix, index)).ToBeVisibleAsync();
  60. public async Task AssertPortVisibleAsync(string prefix, int groupIndex, int portIndex)
  61. => await Assertions.Expect(Port(prefix, groupIndex, portIndex)).ToBeVisibleAsync();
  62. // -------------------------------------------------
  63. // Actions
  64. // -------------------------------------------------
  65. public async Task AddPortGroupAsync(string prefix) {
  66. await AddButton(prefix).ClickAsync();
  67. await Assertions.Expect(PortModal(prefix)).ToBeVisibleAsync();
  68. }
  69. public async Task OpenConnectionFromPortAsync(string prefix, int groupIndex, int portIndex) {
  70. await Port(prefix, groupIndex, portIndex).ClickAsync();
  71. await Assertions.Expect(ConnectionModal(prefix)).ToBeVisibleAsync();
  72. }
  73. public async Task CreateConnectionAsync(
  74. string prefix,
  75. string resourceA,
  76. string groupA,
  77. string portA,
  78. string resourceB,
  79. string groupB,
  80. string portB,
  81. string? label = null) {
  82. await ResourceASelect(prefix).SelectOptionAsync(
  83. new SelectOptionValue { Label = resourceA });
  84. await GroupASelect(prefix).SelectOptionAsync(
  85. new SelectOptionValue { Label = groupA });
  86. await PortASelect(prefix).SelectOptionAsync(
  87. new SelectOptionValue { Label = portA });
  88. await ResourceBSelect(prefix).SelectOptionAsync(
  89. new SelectOptionValue { Label = resourceB });
  90. await GroupBSelect(prefix).SelectOptionAsync(
  91. new SelectOptionValue { Label = groupB });
  92. await PortBSelect(prefix).SelectOptionAsync(
  93. new SelectOptionValue { Label = portB });
  94. if (label is not null)
  95. await LabelInput(prefix).FillAsync(label);
  96. await SubmitConnection(prefix).ClickAsync();
  97. }
  98. // -------------------------------------------------
  99. // Port Modal Fields
  100. // -------------------------------------------------
  101. public ILocator PortTypeSelect(string prefix)
  102. => page.GetByTestId($"{prefix}-port-group-port-modal-type-input");
  103. public ILocator PortSpeedSelect(string prefix)
  104. => page.GetByTestId($"{prefix}-port-group-port-modal-speed-input");
  105. public ILocator PortCountInput(string prefix)
  106. => page.GetByTestId($"{prefix}-port-group-port-modal-count-input");
  107. public ILocator PortSubmit(string prefix)
  108. => page.GetByTestId($"{prefix}-port-group-port-modal-submit");
  109. public ILocator PortCancel(string prefix)
  110. => page.GetByTestId($"{prefix}-port-group-port-modal-cancel");
  111. public async Task AddPortGroupAsync(
  112. string prefix,
  113. string type,
  114. string speed,
  115. int count) {
  116. await AddButton(prefix).ClickAsync();
  117. await Assertions.Expect(PortModal(prefix)).ToBeVisibleAsync();
  118. await PortTypeSelect(prefix).SelectOptionAsync(
  119. new SelectOptionValue { Label = type });
  120. await PortSpeedSelect(prefix).FillAsync(speed.ToString());
  121. await PortCountInput(prefix).FillAsync(count.ToString());
  122. await PortSubmit(prefix).ClickAsync();
  123. }
  124. }