HardwareTreePom.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class HardwareTreePom(IPage page) {
  4. // -------------------------------------------------
  5. // Root & State
  6. // -------------------------------------------------
  7. public ILocator PageRoot => page.GetByTestId("hardware-page-root");
  8. public ILocator PageTitle => page.GetByTestId("hardware-page-title");
  9. public ILocator SubNav => page.GetByTestId("hardware-subnav");
  10. public ILocator Loading => page.GetByTestId("hardware-loading");
  11. public ILocator EmptyState => page.GetByTestId("hardware-empty");
  12. public ILocator Tree => page.GetByTestId("hardware-tree");
  13. // -------------------------------------------------
  14. // Navigation
  15. // -------------------------------------------------
  16. public ILocator NavServers => page.GetByTestId("nav-servers");
  17. public ILocator NavSwitches => page.GetByTestId("nav-switches");
  18. public ILocator NavFirewalls => page.GetByTestId("nav-firewalls");
  19. public ILocator NavRouters => page.GetByTestId("nav-routers");
  20. public ILocator NavAccessPoints => page.GetByTestId("nav-accesspoints");
  21. public ILocator NavUps => page.GetByTestId("nav-ups");
  22. public ILocator NavDesktops => page.GetByTestId("nav-desktops");
  23. public ILocator NavLaptops => page.GetByTestId("nav-laptops");
  24. public ILocator NavOther => page.GetByTestId("nav-other");
  25. public async Task GotoAsync(string baseUrl) {
  26. await page.GotoAsync($"{baseUrl}/hardware/tree");
  27. await AssertLoadedAsync();
  28. }
  29. public async Task AssertLoadedAsync() {
  30. await Assertions.Expect(PageRoot).ToBeVisibleAsync();
  31. await Assertions.Expect(PageTitle).ToBeVisibleAsync();
  32. }
  33. public async Task WaitForTreeAsync() => await Assertions.Expect(Tree).ToBeVisibleAsync();
  34. // -------------------------------------------------
  35. // Hardware Groups
  36. // -------------------------------------------------
  37. public ILocator HardwareGroup(string kind) => page.GetByTestId($"hardware-group-{kind}");
  38. public ILocator HardwareGroupTitle(string kind) => page.GetByTestId($"hardware-group-title-{kind}");
  39. public async Task AssertHardwareGroupExists(string kind) =>
  40. await Assertions.Expect(HardwareGroup(kind)).ToBeVisibleAsync();
  41. // -------------------------------------------------
  42. // Hardware Items
  43. // -------------------------------------------------
  44. public ILocator HardwareItem(string hardwareName) => page.GetByTestId($"hardware-item-{hardwareName}");
  45. public ILocator HardwareLink(string hardwareName) => page.GetByTestId($"hardware-link-{hardwareName}");
  46. public ILocator HardwareName(string hardwareName) => page.GetByTestId($"hardware-name-{hardwareName}");
  47. public async Task OpenHardwareAsync(string hardwareName) {
  48. await HardwareLink(hardwareName).ClickAsync();
  49. await page.WaitForURLAsync($"**/resources/hardware/{hardwareName}");
  50. }
  51. // -------------------------------------------------
  52. // Systems Under Hardware
  53. // -------------------------------------------------
  54. public ILocator SystemList(string hardwareName) => page.GetByTestId($"system-list-{hardwareName}");
  55. public ILocator SystemItem(string systemName) => page.GetByTestId($"system-item-{systemName}");
  56. public ILocator SystemLink(string systemName) => page.GetByTestId($"system-link-{systemName}");
  57. public async Task OpenSystemAsync(string systemName) {
  58. await SystemLink(systemName).ClickAsync();
  59. await page.WaitForURLAsync($"**/resources/systems/{systemName}");
  60. }
  61. public async Task AssertSystemExists(string systemName) =>
  62. await Assertions.Expect(SystemItem(systemName)).ToBeVisibleAsync();
  63. // -------------------------------------------------
  64. // Services Under System
  65. // -------------------------------------------------
  66. public ILocator ServiceList(string systemName) => page.GetByTestId($"service-list-{systemName}");
  67. public ILocator ServiceItem(string serviceName) => page.GetByTestId($"service-item-{serviceName}");
  68. public ILocator ServiceLink(string serviceName) => page.GetByTestId($"service-link-{serviceName}");
  69. public async Task OpenServiceAsync(string serviceName) {
  70. await ServiceLink(serviceName).ClickAsync();
  71. await page.WaitForURLAsync($"**/resources/services/{serviceName}");
  72. }
  73. public async Task AssertServiceExists(string serviceName) =>
  74. await Assertions.Expect(ServiceItem(serviceName)).ToBeVisibleAsync();
  75. // -------------------------------------------------
  76. // Secondary Navigation Actions
  77. // -------------------------------------------------
  78. public async Task GotoServersListAsync() {
  79. await NavServers.ClickAsync();
  80. await page.WaitForURLAsync("**/servers/list");
  81. }
  82. public async Task GotoSwitchesListAsync() {
  83. await NavSwitches.ClickAsync();
  84. await page.WaitForURLAsync("**/switches/list");
  85. }
  86. public async Task GotoFirewallsListAsync() {
  87. await NavFirewalls.ClickAsync();
  88. await page.WaitForURLAsync("**/firewalls/list");
  89. }
  90. public async Task GotoRoutersListAsync() {
  91. await NavRouters.ClickAsync();
  92. await page.WaitForURLAsync("**/routers/list");
  93. }
  94. public async Task GotoAccessPointsListAsync() {
  95. await NavAccessPoints.ClickAsync();
  96. await page.WaitForURLAsync("**/accesspoints/list");
  97. }
  98. public async Task GotoUpsListAsync() {
  99. await NavUps.ClickAsync();
  100. await page.WaitForURLAsync("**/ups/list");
  101. }
  102. public async Task GotoDesktopsListAsync() {
  103. await NavDesktops.ClickAsync();
  104. await page.WaitForURLAsync("**/desktops/list");
  105. }
  106. public async Task GotoLaptopsListAsync() {
  107. await NavLaptops.ClickAsync();
  108. await page.WaitForURLAsync("**/laptops/list");
  109. }
  110. public async Task GotoOtherListAsync() {
  111. await NavOther.ClickAsync();
  112. await page.WaitForURLAsync("**/other/list");
  113. }
  114. }