use UI error DOM marker, fail fast on admin role setup
This commit is contained in:
parent
14cdb9b005
commit
691768c3a4
@ -93,9 +93,12 @@ public class PlaywrightTester : IAsyncDisposable
|
||||
}
|
||||
}
|
||||
|
||||
var currentUri = new Uri(Page.Url);
|
||||
Assert.False(currentUri.AbsolutePath.StartsWith("/errors/", StringComparison.OrdinalIgnoreCase),
|
||||
$"Expected not to be on an error route, but current URL is {Page.Url}");
|
||||
var errorPageMarker = Page.Locator("[data-testid='ui-error-page']");
|
||||
if (await errorPageMarker.CountAsync() > 0)
|
||||
{
|
||||
var title = await Page.TitleAsync();
|
||||
Assert.Fail($"Expected not to be on an error page, but found the UI error marker on {Page.Url} (title: {title})");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<string> CreateServerAdminAsync(string emailPrefix = "admin")
|
||||
@ -105,7 +108,14 @@ public class PlaywrightTester : IAsyncDisposable
|
||||
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
|
||||
|
||||
if (!await roleManager.RoleExistsAsync(Roles.ServerAdmin))
|
||||
await roleManager.CreateAsync(new IdentityRole(Roles.ServerAdmin));
|
||||
{
|
||||
var roleCreateResult = await roleManager.CreateAsync(new IdentityRole(Roles.ServerAdmin));
|
||||
if (!roleCreateResult.Succeeded)
|
||||
{
|
||||
var errors = string.Join(", ", roleCreateResult.Errors.Select(e => e.Description));
|
||||
throw new InvalidOperationException($"Failed to create server admin role: {errors}");
|
||||
}
|
||||
}
|
||||
|
||||
var email = $"{emailPrefix}-{Guid.NewGuid():N}@test.com";
|
||||
const string password = "123456";
|
||||
@ -123,7 +133,12 @@ public class PlaywrightTester : IAsyncDisposable
|
||||
throw new InvalidOperationException($"Failed to create admin user: {errors}");
|
||||
}
|
||||
|
||||
await userManager.AddToRoleAsync(user, Roles.ServerAdmin);
|
||||
var addToRoleResult = await userManager.AddToRoleAsync(user, Roles.ServerAdmin);
|
||||
if (!addToRoleResult.Succeeded)
|
||||
{
|
||||
var errors = string.Join(", ", addToRoleResult.Errors.Select(e => e.Description));
|
||||
throw new InvalidOperationException($"Failed to assign admin role to user {email}: {errors}");
|
||||
}
|
||||
return email;
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ namespace PluginBuilder.Controllers;
|
||||
[IgnoreAntiforgeryToken]
|
||||
public class UIErrorController : Controller
|
||||
{
|
||||
[Route("/errors/{statusCode:int}")]
|
||||
[Route("/errors/{statusCode:int:range(400,599)}")]
|
||||
public IActionResult Handle(int statusCode)
|
||||
{
|
||||
var acceptHeader = Request.Headers.Accept.ToString();
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
ViewData["Title"] = "404 - Page Not Found";
|
||||
}
|
||||
|
||||
<div class="container py-5 text-center">
|
||||
<div class="container py-5 text-center" data-testid="ui-error-page">
|
||||
<h1 class="mb-3">404</h1>
|
||||
<p class="lead mb-4">The page you requested could not be found.</p>
|
||||
<a class="btn btn-primary" href="/">Navigate back to home</a>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
ViewData["Title"] = "500 - Internal Server Error";
|
||||
}
|
||||
|
||||
<div class="container py-5 text-center">
|
||||
<div class="container py-5 text-center" data-testid="ui-error-page">
|
||||
<h1 class="mb-3">500</h1>
|
||||
<p class="lead mb-4">An unexpected server error occurred while processing your request.</p>
|
||||
<p>Please consult the server logs for details.</p>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
: "Error";
|
||||
}
|
||||
|
||||
<div class="container py-5 text-center">
|
||||
<div class="container py-5 text-center" data-testid="ui-error-page">
|
||||
<h1 class="mb-3">@Model</h1>
|
||||
<p class="lead mb-4">An error occurred while processing your request.</p>
|
||||
<a class="btn btn-primary" href="/">Navigate back to home</a>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user