test(central-ui): fix test-host hang in CentralUI.Tests
DiffDialogTests.SetupBodyLockInterop registered bUnit SetupVoid planned invocations that were never completed; DisposeAsync_WhileOpen awaited DiffDialog.DisposeAsync -> TryUnlockBodyAsync -> InvokeVoidAsync on one of them, suspending the test forever so the test host never exited (regression from the CentralUI-023 catch-narrowing). SetupBodyLockInterop now uses Loose JSInterop mode. Also dispose the leaked WebApplication instances in the Auth tests (FileSystemWatcher + ConsoleLoggerProcessor threads) and the extra ServiceProvider in the DebugView tests. Suite now runs 281 tests in ~7s and exits cleanly.
This commit is contained in:
@@ -14,16 +14,16 @@ namespace ScadaLink.CentralUI.Tests.Shared;
|
||||
public class DiffDialogTests : BunitContext
|
||||
{
|
||||
/// <summary>
|
||||
/// DiffDialog applies/removes a body scroll-lock class via JS interop on
|
||||
/// open/close. CentralUI-023 narrowed those catch blocks so they no longer
|
||||
/// swallow every exception — including bUnit's strict-mode unplanned-call
|
||||
/// exception. Tests that exercise open/close must therefore register the
|
||||
/// body-class calls so they do not surface as harness exceptions.
|
||||
/// DiffDialog applies/removes a body scroll-lock class and focuses the modal
|
||||
/// via JS interop on open/close. Loose mode auto-completes those void calls
|
||||
/// so a path that <c>await</c>s them (e.g. <c>DisposeAsync</c> →
|
||||
/// <c>TryUnlockBodyAsync</c>) resumes instead of hanging on a never-completed
|
||||
/// planned invocation, and no strict-mode unplanned-invocation exception
|
||||
/// surfaces through the narrowed CentralUI-023 catch blocks.
|
||||
/// </summary>
|
||||
private void SetupBodyLockInterop()
|
||||
{
|
||||
JSInterop.SetupVoid("document.body.classList.add", "modal-open");
|
||||
JSInterop.SetupVoid("document.body.classList.remove", "modal-open");
|
||||
JSInterop.Mode = JSRuntimeMode.Loose;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user