Closes the scope-out left by the #242 partial. Root cause of the blazor.web.js
zero-byte response turned out to be two co-operating harness bugs:
1) The static-asset manifest was discoverable but the runtime needs
UseStaticWebAssets to be called so the StaticWebAssetsLoader composes a
PhysicalFileProvider per ContentRoot declared in
staticwebassets.development.json (Admin source wwwroot + obj/compressed +
the framework NuGet cache). Without that call MapStaticAssets resolves the
route but has no ContentRoot map — so every asset serves zero bytes.
2) The EF InMemory DB name was being re-generated on every DbContext
construction (the lambda body called Guid.NewGuid() inline), so the seed
scope, Blazor circuit scope, and test-assertion scopes all got separate
stores. Capturing the name as a stable string per fixture instance fixes
the "cluster not found → page stays at Loading…" symptom.
Fixes:
- AdminWebAppFactory:
* ApplicationName set on WebApplicationOptions so UseStaticWebAssets
discovers the manifest.
* builder.WebHost.UseStaticWebAssets() wired explicitly (matches what
`dotnet run` does via MSBuild targets).
* dbName captured once per fixture; the options lambda reads the
captured string instead of re-rolling a Guid.
- UnsTabDragDropE2ETests: the two [Fact(Skip=...)] tests un-skip.
Suite state: 3 passed, 0 skipped, 0 failed. Task #242 closed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>