ServerTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Tests.E2e.Infra;
  2. using Tests.E2e.PageObjectModels;
  3. using Xunit.Abstractions;
  4. namespace Tests.E2e;
  5. public class ServerTests(
  6. PlaywrightFixture fixture,
  7. ITestOutputHelper output) : E2ETestBase(fixture, output)
  8. {
  9. private readonly ITestOutputHelper _output = output;
  10. [Fact]
  11. public async Task User_Can_Add_And_Delete_Server()
  12. {
  13. var (context, page) = await CreatePageAsync();
  14. var serverName = $"e2e-server-{Guid.NewGuid():N}"[..16];
  15. try
  16. {
  17. // Go home
  18. await page.GotoAsync(fixture.BaseUrl);
  19. _output.WriteLine($"URL after Goto: {page.Url}");
  20. var layout = new MainLayoutPom(page);
  21. await layout.AssertLoadedAsync();
  22. await layout.GotoHardwareAsync();
  23. var hardwarePage = new HardwareTreePom(page);
  24. await hardwarePage.AssertLoadedAsync();
  25. await hardwarePage.GotoServersListAsync();
  26. var serverListPage = new ServersListPom(page);
  27. await serverListPage.AssertLoadedAsync();
  28. await serverListPage.AddServerAsync(serverName);
  29. await serverListPage.AssertServerExists(serverName);
  30. await serverListPage.DeleteServerAsync(serverName);
  31. await serverListPage.AssertServerDoesNotExist(serverName);
  32. await context.CloseAsync();
  33. }
  34. catch (Exception ex)
  35. {
  36. _output.WriteLine("TEST FAILED — Capturing diagnostics");
  37. _output.WriteLine($"Current URL: {page.Url}");
  38. var html = await page.ContentAsync();
  39. _output.WriteLine("==== DOM SNAPSHOT START ====");
  40. _output.WriteLine(html);
  41. _output.WriteLine("==== DOM SNAPSHOT END ====");
  42. throw;
  43. }
  44. finally
  45. {
  46. await context.CloseAsync();
  47. }
  48. }
  49. }