PortsPom.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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. // -------------------------------------------------
  54. // Assertions
  55. // -------------------------------------------------
  56. public async Task AssertPortGroupVisibleAsync(string prefix, int index)
  57. => await Assertions.Expect(PortGroup(prefix, index)).ToBeVisibleAsync();
  58. public async Task AssertPortVisibleAsync(string prefix, int groupIndex, int portIndex)
  59. => await Assertions.Expect(Port(prefix, groupIndex, portIndex)).ToBeVisibleAsync();
  60. // -------------------------------------------------
  61. // Actions
  62. // -------------------------------------------------
  63. public async Task AddPortGroupAsync(string prefix) {
  64. await AddButton(prefix).ClickAsync();
  65. await Assertions.Expect(PortModal(prefix)).ToBeVisibleAsync();
  66. }
  67. public async Task OpenConnectionFromPortAsync(string prefix, int groupIndex, int portIndex) {
  68. await Port(prefix, groupIndex, portIndex).ClickAsync();
  69. await Assertions.Expect(ConnectionModal(prefix)).ToBeVisibleAsync();
  70. }
  71. public async Task CreateConnectionAsync(
  72. string prefix,
  73. string resourceA,
  74. string groupA,
  75. string portA,
  76. string resourceB,
  77. string groupB,
  78. string portB) {
  79. await ResourceASelect(prefix).SelectOptionAsync(
  80. new SelectOptionValue { Label = resourceA });
  81. await GroupASelect(prefix).SelectOptionAsync(
  82. new SelectOptionValue { Label = groupA });
  83. await PortASelect(prefix).SelectOptionAsync(
  84. new SelectOptionValue { Label = portA });
  85. await ResourceBSelect(prefix).SelectOptionAsync(
  86. new SelectOptionValue { Label = resourceB });
  87. await GroupBSelect(prefix).SelectOptionAsync(
  88. new SelectOptionValue { Label = groupB });
  89. await PortBSelect(prefix).SelectOptionAsync(
  90. new SelectOptionValue { Label = portB });
  91. await SubmitConnection(prefix).ClickAsync();
  92. }
  93. // -------------------------------------------------
  94. // Port Modal Fields
  95. // -------------------------------------------------
  96. public ILocator PortTypeSelect(string prefix)
  97. => page.GetByTestId($"{prefix}-port-group-port-modal-type-input");
  98. public ILocator PortSpeedSelect(string prefix)
  99. => page.GetByTestId($"{prefix}-port-group-port-modal-speed-input");
  100. public ILocator PortCountInput(string prefix)
  101. => page.GetByTestId($"{prefix}-port-group-port-modal-count-input");
  102. public ILocator PortSubmit(string prefix)
  103. => page.GetByTestId($"{prefix}-port-group-port-modal-submit");
  104. public ILocator PortCancel(string prefix)
  105. => page.GetByTestId($"{prefix}-port-group-port-modal-cancel");
  106. public async Task AddPortGroupAsync(
  107. string prefix,
  108. string type,
  109. string speed,
  110. int count) {
  111. await AddButton(prefix).ClickAsync();
  112. await Assertions.Expect(PortModal(prefix)).ToBeVisibleAsync();
  113. await PortTypeSelect(prefix).SelectOptionAsync(
  114. new SelectOptionValue { Label = type });
  115. await PortSpeedSelect(prefix).FillAsync(speed.ToString());
  116. await PortCountInput(prefix).FillAsync(count.ToString());
  117. await PortSubmit(prefix).ClickAsync();
  118. }
  119. }