| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using DotNet.Testcontainers.Builders;
- using DotNet.Testcontainers.Containers;
- using Microsoft.Playwright;
- namespace Tests.E2e.Infra;
- public class PlaywrightFixture : IAsyncLifetime {
- // Change this if needed
- private const string _dockerImage = "rackpeek:ci";
- private IContainer _container = default!;
- private IPlaywright _playwright = default!;
- public IBrowser Browser { get; private set; } = default!;
- public string BaseUrl { get; private set; } = default!;
- public async Task InitializeAsync() {
- _container = new ContainerBuilder(_dockerImage)
- .WithPortBinding(8080, true) // random host port
- .WithWaitStrategy(
- Wait.ForUnixContainer()
- .UntilHttpRequestIsSucceeded(r => r
- .ForPort(8080)
- .ForPath("/")))
- .Build();
- await _container.StartAsync();
- var mappedPort = _container.GetMappedPublicPort(8080);
- BaseUrl = $"http://127.0.0.1:{mappedPort}";
- Console.WriteLine($"RackPeek running at: {BaseUrl}");
- _playwright = await Playwright.CreateAsync();
- Browser = await _playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions {
- Headless = true,
- SlowMo = 400,
- //Headless = false,
- //SlowMo = 1500,
- Args = new[]
- {
- "--disable-dev-shm-usage",
- "--no-sandbox"
- }
- });
- Assertions.SetDefaultExpectTimeout(15000);
- }
- public async Task DisposeAsync() {
- if (Browser != null)
- await Browser.DisposeAsync();
- _playwright?.Dispose();
- if (_container != null)
- await _container.DisposeAsync();
- }
- }
|