11===============================================================================
22PROJECT EXPORT
3- Generated: Thu Jan 29 02:59:29 AM EST 2026
3+ Generated: Thu Jan 29 03:13:20 AM EST 2026
44Project Path: /home/kushal/src/dotnet/MyBlog
55===============================================================================
66
@@ -5570,8 +5570,8 @@ public sealed class LoginPageTests(PlaywrightFixture fixture)
55705570
55715571================================================================================
55725572FILE: src/MyBlog.E2E/Tests/NavigationTests.cs
5573- SIZE: 6.45 KB
5574- MODIFIED: 2026-01-29 01:45 :28
5573+ SIZE: 6.72 KB
5574+ MODIFIED: 2026-01-29 03:11 :28
55755575================================================================================
55765576
55775577using Microsoft.Playwright;
@@ -5651,12 +5651,12 @@ public sealed class NavigationTests(PlaywrightFixture fixture)
56515651 {
56525652 var page = await _fixture.CreatePageAsync();
56535653
5654- // Check home page
5654+ // Check home page - use the main site footer
56555655 await page.GotoAsync("/");
5656- var footer = page.Locator("footer");
5656+ var footer = page.Locator("footer.footer ");
56575657 await Assertions.Expect(footer).ToBeVisibleAsync();
56585658
5659- // Check about page
5659+ // Check about page - the about page may have multiple footers, use the main site footer
56605660 await page.GotoAsync("/about");
56615661 await Assertions.Expect(footer).ToBeVisibleAsync();
56625662
@@ -5741,8 +5741,12 @@ public sealed class NavigationTests(PlaywrightFixture fixture)
57415741
57425742 await page.GotoAsync("/post/this-post-definitely-does-not-exist-12345");
57435743
5744+ // Wait for the page to load and Blazor to initialize
5745+ await page.WaitForLoadStateAsync(LoadState.NetworkIdle);
5746+
57445747 // Should show "Post Not Found" or similar message
5745- var notFoundIndicator = page.Locator("text=Not Found, text=not found, text=doesn't exist");
5748+ // Use GetByText with regex to match case-insensitively
5749+ var notFoundIndicator = page.GetByText("Not Found", new() { Exact = false });
57465750 await Assertions.Expect(notFoundIndicator.First).ToBeVisibleAsync(new() { Timeout = 10000 });
57475751 }
57485752
@@ -13382,8 +13386,8 @@ public class ReaderHub : Hub
1338213386
1338313387================================================================================
1338413388FILE: src/MyBlog.Web/Middleware/LoginRateLimitMiddleware.cs
13385- SIZE: 5.55 KB
13386- MODIFIED: 2026-01-29 02:48:35
13389+ SIZE: 5.59 KB
13390+ MODIFIED: 2026-01-29 03:11:17
1338713391================================================================================
1338813392
1338913393using System.Collections.Concurrent;
@@ -13454,6 +13458,8 @@ public sealed class LoginRateLimitMiddleware
1345413458 }
1345513459
1345613460 var ip = GetClientIp(context);
13461+ // Record the attempt FIRST, then calculate delay based on the new count
13462+ RecordAttempt(ip);
1345713463 var delay = CalculateDelay(ip);
1345813464 if (delay > TimeSpan.Zero)
1345913465 {
@@ -13473,8 +13479,6 @@ public sealed class LoginRateLimitMiddleware
1347313479
1347413480 // Always proceed - never block
1347513481 await _next(context);
13476- // Record the attempt after processing
13477- RecordAttempt(ip);
1347813482 }
1347913483
1348013484 private static bool IsLoginPostRequest(HttpContext context)
@@ -14827,7 +14831,7 @@ window.themeManager = {
1482714831
1482814832
1482914833===============================================================================
14830- EXPORT COMPLETED: Thu Jan 29 02:59:30 AM EST 2026
14834+ EXPORT COMPLETED: Thu Jan 29 03:13:22 AM EST 2026
1483114835Total Files Found: 119
1483214836Files Exported: 119
1483314837Files Skipped: 0 (binary or large files)
0 commit comments