using Microsoft.Playwright;
namespace LANCommander.Server.UI.Tests;
///
/// Shared Playwright fixture that manages browser lifetime across all tests in the collection.
/// Starts the server process and initializes Playwright once per test run.
///
public class PlaywrightFixture : IAsyncLifetime
{
public IPlaywright Playwright { get; private set; } = null!;
public IBrowser Browser { get; private set; } = null!;
public async Task InitializeAsync()
{
Playwright = await Microsoft.Playwright.Playwright.CreateAsync();
Browser = await Playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless = true,
});
}
public async Task DisposeAsync()
{
await Browser.DisposeAsync();
Playwright.Dispose();
}
public async Task NewContextAsync(string baseUrl)
{
return await Browser.NewContextAsync(new BrowserNewContextOptions
{
IgnoreHTTPSErrors = true,
BaseURL = baseUrl,
});
}
}