diff --git a/login-screenshot.png b/login-screenshot.png new file mode 100644 index 0000000..e5401b3 Binary files /dev/null and b/login-screenshot.png differ diff --git a/screenshot.js b/screenshot.js new file mode 100644 index 0000000..7551f37 --- /dev/null +++ b/screenshot.js @@ -0,0 +1,10 @@ +const { chromium } = require('@playwright/test'); + +(async () => { + const browser = await chromium.launch(); + const page = await browser.newPage(); + await page.goto('http://localhost:5265/login'); + await page.screenshot({ path: './login-screenshot.png', fullPage: true }); + console.log('Screenshot saved to ./login-screenshot.png'); + await browser.close(); +})(); diff --git a/screenshot.mjs b/screenshot.mjs new file mode 100644 index 0000000..9c09d6a --- /dev/null +++ b/screenshot.mjs @@ -0,0 +1,14 @@ +import { chromium } from '@playwright/test'; + +(async () => { + try { + const browser = await chromium.launch(); + const page = await browser.newPage({ viewport: { width: 1280, height: 720 } }); + await page.goto('http://localhost:5265/login'); + await page.screenshot({ path: './login-screenshot.png', fullPage: true }); + console.log('✓ Screenshot saved to ./login-screenshot.png'); + await browser.close(); + } catch (e) { + console.error('Error:', e.message); + } +})(); diff --git a/src/dotnet/QuantEngine.Web/Components/App.razor b/src/dotnet/QuantEngine.Web/Components/App.razor index f390fd2..ab1d35d 100644 --- a/src/dotnet/QuantEngine.Web/Components/App.razor +++ b/src/dotnet/QuantEngine.Web/Components/App.razor @@ -35,7 +35,7 @@ @code { - private async Task OnNavigateAsync(NavigationContext context) + private async Task OnNavigateAsync(Microsoft.AspNetCore.Components.Routing.NavigationContext context) { // /Account/* paths are Razor Pages, not Blazor components // Force browser navigation instead of Blazor routing diff --git a/src/dotnet/QuantEngine.Web/Program.cs b/src/dotnet/QuantEngine.Web/Program.cs index 16eccc7..fc09bae 100644 --- a/src/dotnet/QuantEngine.Web/Program.cs +++ b/src/dotnet/QuantEngine.Web/Program.cs @@ -157,7 +157,7 @@ app.UseStaticFiles(new StaticFileOptions app.UseStatusCodePages(async ctx => { var path = ctx.HttpContext.Request.Path.Value ?? ""; - if (!path.StartsWithSegments("/api", StringComparison.OrdinalIgnoreCase) + if (!path.StartsWith("/api", StringComparison.OrdinalIgnoreCase) && !path.StartsWith("/Account/", StringComparison.OrdinalIgnoreCase)) { ctx.HttpContext.Response.Redirect("/not-found"); @@ -194,6 +194,12 @@ app.MapGet("/", async (HttpContext ctx) => await Task.CompletedTask; }); +// Redirect /login to /login.html (static file) +app.MapGet("/login", (HttpContext ctx) => +{ + ctx.Response.Redirect("/login.html", permanent: false); +}); + // Collection API Endpoints (must be before MapRazorComponents) app.MapCollectionEndpoints();