Files
ChronoCCG/Chrono/Tests/AuthenticatedPageTest.cs
T
2026-07-18 15:21:20 -04:00

45 lines
1.6 KiB
C#

using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
namespace Tests;
/// <summary>
/// Base class for Playwright tests that require an authenticated session.
/// Signs in via the dev-only bypass endpoint before each test.
/// </summary>
public abstract class AuthenticatedPageTest : PageTest
{
protected const string BaseUrl = "http://localhost:5256";
[SetUp]
public async Task SignIn()
{
// Use a browser with a UI as requested
await Context.Tracing.StartAsync(new TracingStartOptions
{
Title = TestContext.CurrentContext.Test.ClassName + "." + TestContext.CurrentContext.Test.Name,
Screenshots = true,
Snapshots = true,
Sources = true
});
// Set a default timeout for all locators to help with Blazor latency
Page.SetDefaultTimeout(15_000);
// Perform login via the context's APIRequest helper which shares cookies with the context
var response = await Context.APIRequest.PostAsync($"{BaseUrl}/api/auth/dev-login");
if (!response.Ok)
throw new Exception(
$"Dev login failed with status {response.Status}. Ensure the server is running in Development mode.");
}
[TearDown]
public async Task TearDown()
{
await Context.Tracing.StopAsync(new TracingStopOptions
{
Path = Path.Combine(TestContext.CurrentContext.WorkDirectory, "playwright-traces",
$"{TestContext.CurrentContext.Test.ClassName}.{TestContext.CurrentContext.Test.Name}.zip")
});
}
}