Skip to content

fix(aspnetcore): guard hosted-service stop against concurrent double Host.StopAsync - #6397

Merged
thomhurst merged 4 commits into
mainfrom
fix/6339-deferred-host-double-stop
Jul 12, 2026
Merged

thomhurst merged 4 commits into
mainfrom
fix/6339-deferred-host-double-stop

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Root cause (issue #6339, post-1.58.0 report)

The reporter's remaining ObjectDisposedException in the After(Test) hook is not the timeout-CTS bug fixed in #6340/#6349 — their new inner stack shows it thrown inside Rebus' bus-dispose chain during WebApplicationFactory.DisposeAsync.

Mechanism (confirmed with an instrumented probe, no Rebus needed):

  1. Minimal-hosting SUTs park their own app.Run() inside WaitForShutdownAsync, which calls Host.StopAsync when ApplicationStopping fires.
  2. After(Test) → WebApplicationFactory.DisposeAsync → DeferredHost.StopAsync → Host.StopAsync — which fires ApplicationStopping, waking the parked shutdown path while its own stop is still in flight.
  3. Host.StopAsync has no concurrency guard, so every IHostedService.StopAsync runs twice, concurrently. Services with non-thread-safe shutdown break — Rebus' RebusBus.Dispose/InMemErrorTracker/TplAsyncTask guards are plain bools with check-then-act windows, producing exactly the reported ODE.

Probe stacks captured pre-fix: one stop from HostingAbstractionsHostExtensions.WaitForShutdownAsync, the other from WebApplicationFactory.DisposeAsync via the After hook — overlapping on the same host. 4–8 failures per 50 tests.

Fix

FlowSuppressingHostedService already wraps every hosted service in the SUT, so its stop-phase methods (StopAsync, StoppingAsync, StoppedAsync) now run the inner stop exactly once — duplicate and concurrent callers observe the same underlying task. Synchronous throws are cached as faulted tasks so a duplicate caller can't re-invoke.

This is fundamentally an aspnetcore Mvc.Testing design gap (nothing synchronizes DeferredHost disposal with the app's own RunAsync shutdown), but the wrapper is the right interception point to shield TUnit users today.

Tests

  • HostedServiceStopOnceTests — deterministic unit tests: 16-way concurrent stop → inner sees 1; sequential re-stop no-ops; same-task identity; sync-throw cached; lifecycle hooks once-guarded.
  • HostStopExactlyOnceProbeTests — end-to-end: 50 parallel factory lifecycles, probe hosted service throws with both stacks on any second StopAsync entry. Failed 4/51 and 2/51 pre-fix; clean across 6 consecutive runs post-fix.
  • Full TUnit.AspNetCore.Tests suite: 92/92 (net10.0); all TFMs build.

Fixes #6339

…Host.StopAsync

Minimal-hosting SUTs park app.Run() in WaitForShutdownAsync, which calls
Host.StopAsync when ApplicationStopping fires - concurrently with the
Host.StopAsync already in flight from WebApplicationFactory.DisposeAsync
(the trigger of that signal). Host.StopAsync has no concurrency guard, so
every IHostedService.StopAsync ran twice in parallel, breaking services
with non-thread-safe shutdown (e.g. Rebus bus dispose throws
ObjectDisposedException from an After(Test) hook).

FlowSuppressingHostedService already wraps every hosted service, so its
stop-phase methods now run the inner stop exactly once; duplicate and
concurrent callers observe the same task. Reproduced pre-fix by the new
end-to-end probe (4-8 failures per 50 tests), clean across 6 runs post-fix.

Fixes #6339
@codacy-production

codacy-production Bot commented Jul 12, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 51 complexity

Metric Results
Complexity 51

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review

What it does: Fixes issue #6339 by guarding FlowSuppressingHostedService's StopAsync/StoppingAsync/StoppedAsync so the wrapped hosted service's stop-phase methods run exactly once, even when Host.StopAsync is invoked concurrently twice (which happens when WebApplicationFactory.DisposeAsync races a minimal-hosting SUT's own WaitForShutdownAsync path). Previously unguarded stop calls could run the inner service's shutdown logic twice in parallel, breaking non-thread-safe shutdown code (e.g. Rebus) with ObjectDisposedException.

Correctness

  • The lock (_stopGate) { return _field ??= InvokeOnce(...); } pattern is a standard "cache the started task" idiom (akin to AsyncLazy) — correct and race-free: the lock is only held for the synchronous portion of kicking off the call, and all callers (concurrent or sequential) subsequently await the same cached Task.
  • InvokeOnce correctly captures a synchronous throw as a faulted Task so it gets cached too — without this, a sync-throwing inner StopAsync would re-execute on every duplicate call, defeating the once-guard. Verified by Synchronously_Throwing_Stop_Is_Cached_Not_Reinvoked.
  • Sharing one _stopGate lock object across three independent cached-task fields (_stopTask, _stoppingTask, _stoppedTask) is fine — no cross-field interaction or reentrancy risk since InvokeOnce never calls back into the wrapper.
  • The is not IHostedLifecycleService fast path in StoppingAsync/StoppedAsync correctly returns before touching the lock, matching prior behavior for non-lifecycle inner services.
  • One implicit design tradeoff worth flagging in case it's not intentional: the cached task is never reset, so if a host were ever restarted after being stopped (start → stop → start → stop), the second StopAsync would return the already-completed first task without re-invoking the inner service. This matches the PR's stated scope (WebApplicationFactory disposal, not host restart), but might be worth a one-line remark in the class doc if restart-after-stop is a scenario TUnit's hosting wrapper needs to support elsewhere.

Test coverage

  • HostedServiceStopOnceTests is a solid, fast unit-level suite: concurrent (16-way) and sequential double-stop, task-identity check, sync-throw caching, and lifecycle-hook guarding. Good use of a TaskCompletionSource gate to force real overlap rather than relying on timing.
  • HostStopExactlyOnceProbeTests is a good end-to-end regression test — it reproduces the real race via WebApplicationFactory + minimal hosting rather than only unit-testing the wrapper in isolation, and the probe throws with both stack traces on a double-entry, making a future regression easy to diagnose from CI output alone. [Repeat(50)] plus a random jitter is a reasonable way to reliably surface a race that was previously only observed in 4-8/50 runs.
  • Both new test files follow existing conventions in TUnit.AspNetCore.Tests (assertion style, WebApplicationTest<TestWebAppFactory, Program> base usage, InternalsVisibleTo access to the internal wrapper class).

Minor / non-blocking

  • StopProbeHostedService.StopAsync builds the exception message (with Environment.StackTrace) even in the non-throwing path is avoided (good — it's only built on entry > 1), so no perf concern there.
  • No architectural concerns — this is a narrowly-scoped, well-isolated fix at the correct interception point given the upstream Mvc.Testing gap described in the PR body, and doesn't change behavior for the (presumably far more common) non-racing shutdown path.

Overall: the fix is correct, minimal, and well-tested. No changes requested.

@thomhurst
thomhurst enabled auto-merge (squash) July 12, 2026 13:48

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6a37fe9c3c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

{
lock (_stopGate)
{
return _stopTask ??= InvokeOnce(inner.StopAsync, cancellationToken);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve each StopAsync caller's cancellation token

When a second Host.StopAsync arrives while the first stop is still running, this returns the cached task that was created with the first caller's token, so the duplicate caller's token is never observed. In contexts that pass a shorter or already-canceling shutdown token, that caller can now wait for the original stop task and run past its own timeout instead of canceling; share the single inner invocation, but have duplicate waits respect their own cancellationToken.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f1ac3c735c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +52 to +55
lock (_stopGate)
{
task = _stopTask ??= InvokeOnce(inner.StopAsync, cancellationToken);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid invoking StopAsync while holding the gate

When the first hosted service performs slow synchronous cleanup before returning its Task, a concurrent Host.StopAsync with a shorter or already-canceled token will block on _stopGate until this call returns, so it never reaches WaitWithCancellation and can run past its own shutdown timeout. This is fresh evidence beyond the earlier cached-task review comment: the inner stop is now still invoked while the monitor is held, before duplicate callers can obtain a cancellable wait on the shared task. Publish a placeholder under the lock and invoke the inner stop outside the monitor so duplicate waits can respect their own token immediately.

Useful? React with 👍 / 👎.

@claude

claude Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Review update (re-review after new commit)

My previous review covered the first commit (6a37fe9) and found it correct with no changes requested. Since then, commit f1ac3c7 ("preserve stop cancellation") was pushed — reviewing that delta:

What it changes

StopAsync/StoppingAsync/StoppedAsync now wrap the shared cached task with task.WaitAsync(cancellationToken) before returning to the caller, instead of returning the shared task directly.

Why it's correct

  • Previously, only the first caller's CancellationToken was ever used (passed into InvokeOnce) — duplicate callers awaited the same shared task and had no way to bail out via their own token if the shared operation ran long. WaitWithCancellation fixes this: each caller now observes cancellation on their own token without cancelling the underlying shared stop operation for other callers (correct, since the real inner StopAsync is intentionally invoked once and shared).
  • cancellationToken.CanBeCanceled ? task.WaitAsync(cancellationToken) : task avoids allocating a wrapper task for the extremely common CancellationToken.None case.
  • Task.WaitAsync(CancellationToken) internally still attaches a continuation to the original task, so the original task's exception/completion is observed even if a caller's wait is cancelled early — no unobserved-task-exception risk.
  • New test Duplicate_Stop_Caller_Observes_Its_Own_Cancellation_Token (in HostedServiceStopOnceTests.cs) directly exercises this: a blocked first caller keeps the shared stop pending, a second caller cancels its own token and correctly observes OperationCanceledException while inner.StopCalls stays at 1 (proving the inner op wasn't re-invoked or aborted for the first caller).

CLAUDE.md compliance

No violations — no blocking on async (.Result/.GetAwaiter().GetResult()), no VSTest usage, no source-gen output changes requiring snapshot updates, and no reflection requiring AOT annotations.

No issues found in this delta. Fix remains correct, minimal, and well-tested.

@claude

claude Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Review update (re-review after latest commit)

Prior reviews covered up through f1ac3c7 (preserve stop cancellation). This pass reviews the delta from the newest commit, dfd6df6 ("start stop outside lock"), which addresses the still-open Codex P2 comment about invoking StopAsync while holding _stopGate.

What it changes

InvokeOnce no longer calls the wrapped operation synchronously inside lock (_stopGate). It now only publishes a TaskCompletionSource placeholder under the lock, then kicks off ExecuteAndCompleteAsync (which awaits the real operation and completes the TCS) after releasing the lock. StopAsync/StoppingAsync/StoppedAsync were simplified to call InvokeOnce(ref field, ...) directly instead of duplicating the lock/WaitWithCancellation boilerplate three times.

Why it's correct

  • The lock's only job now is the fast, non-blocking check-and-publish of the cached Task — exactly the invariant needed to guarantee the inner operation still runs once. A duplicate caller no longer has to wait for a slow synchronous inner StopAsync (e.g. one that blocks on a ManualResetEventSlim) to return before it can even reach WaitWithCancellation and honor its own (possibly already-canceled) token. This was precisely the race Codex flagged.
  • Exactly-once semantics are preserved: completionSource is only non-null for the single caller that wins the cachedTask is null check inside the lock, so ExecuteAndCompleteAsync/operation still can't run twice.
  • Synchronous throws from operation are still captured correctly — since ExecuteAndCompleteAsync has no await before invoking operation, a sync throw happens inline within the method's try/catch and completes the TCS synchronously, preserving the previous "cache the sync throw" behavior (still covered by Synchronously_Throwing_Stop_Is_Cached_Not_Reinvoked).
  • catch (OperationCanceledException) → SetCanceled(exception.CancellationToken) correctly re-surfaces the original cancellation token on the shared task rather than collapsing to a generic canceled state.
  • Duplicate_Stop_Caller_Does_Not_Wait_For_Synchronous_Startup (already in the test file) directly exercises the fixed scenario: a first caller blocked inside a synchronous StopAsync, and a second caller with an already-canceled token that must return OperationCanceledException promptly instead of blocking on the gate.

Verification

Ran the new tests on this branch directly (HostedServiceStopOnceTests + HostStopExactlyOnceProbeTests, net10.0): 7/7 passed, including the 50-iteration end-to-end probe.

CLAUDE.md compliance

No violations — no blocking on async, no VSTest usage, no source-gen/snapshot changes, no reflection requiring AOT annotations.

No issues found. This delta correctly resolves the remaining Codex P2 concern without reintroducing any of the earlier ones. Fix is correct, minimal, and well-tested.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dfd6df6b7f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

_ = ExecuteAndCompleteAsync(completionSource, operation, cancellationToken);
}

return WaitWithCancellation(task, cancellationToken);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid canceling the owning stop wait

When this is the first caller, task is the placeholder for the actual inner stop, but returning it through WaitWithCancellation means Host.StopAsync's shutdown-timeout token can cancel the wrapper while ExecuteAndCompleteAsync continues running the inner StopAsync in the background. For services that ignore the token or take longer than the timeout, the factory/host can proceed to dispose the service provider concurrently with stop cleanup, whereas hosted-service shutdown normally still awaits the returned tasks after cancellation is requested (docs). Apply the per-caller WaitAsync only to duplicate callers, and let the owning invocation return the cached stop task.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@claude

claude Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Review: fix/6339-deferred-host-double-stop (#6397)

Overview

Fixes #6339: Host.StopAsync has no concurrency guard, so a minimal-hosting SUT's own WaitForShutdownAsync shutdown path and WebApplicationFactory.DisposeAsync's After(Test) teardown can both invoke Host.StopAsync concurrently, causing every wrapped IHostedService.StopAsync/StoppingAsync/StoppedAsync to run twice in parallel. FlowSuppressingHostedService now funnels all three stop-phase methods through a shared InvokeOnce helper backed by a TaskCompletionSource, so the inner service's stop logic runs exactly once no matter how many callers (concurrent or sequential) invoke it.

Correctness — delta since last automated review (ccaf8419, "preserve owning stop wait")

This commit hadn't been covered by the prior Codex passes yet, so I traced it independently:

  • Before: every caller's returned task was WaitWithCancellation(task, cancellationToken), including the "owning" caller whose token was the one actually passed into the real operation(...) invocation.
  • After: only non-owning (duplicate) callers get WaitWithCancellation; the owning caller gets the raw shared task back.
  • This matters because for the owning caller, wrapping with task.WaitAsync(cancellationToken) was redundant at best and misleading at worst: if the inner service doesn't observe cancellation promptly, the wrapper could report StopAsync as canceled/complete to its caller while the real inner stop was still running unobserved in the background — a footgun for any code that treats a returned StopAsync as "the service has actually stopped." The new behavior restores parity with plain inner.StopAsync(cancellationToken) semantics for the single-caller (non-racing) case, while still giving duplicate callers a way to bail out on their own token without blocking on (or cancelling) the shared operation.
  • Verified ownsInvocation is set correctly (true only for the caller that wins the cachedTask is null check under _stopGate), and that the new Owning_Stop_Caller_Awaits_Inner_After_Token_Cancellation test exercises exactly this: a token cancellation on the owning caller does not prematurely complete the returned task while the inner service is still blocked.
  • No regression to the previously-fixed duplicate-caller path (Duplicate_Stop_Caller_Observes_Its_Own_Cancellation_Token still passes conceptually — that test's owning caller uses CancellationToken.None, so WaitWithCancellation was already a no-op there).

Other observations (non-blocking)

  • _stopGate is shared across _stopTask, _stoppingTask, and _stoppedTask, so publishing a placeholder for one serializes briefly against the others. The critical section is a couple of field reads/writes, not the actual stop work, so this is not a real contention risk — just noting it in case a future change makes the critical section heavier.
  • ExecuteAndCompleteAsync is fire-and-forget (_ = ExecuteAndCompleteAsync(...)), but all exception paths are funneled into the TaskCompletionSource inside the same method's try/catch, so there's no unobserved-task-exception risk.
  • Good use of TaskCreationOptions.RunContinuationsAsynchronously on the TaskCompletionSource to avoid duplicate/owning callers running continuations synchronously on whichever thread completes the inner operation.

Test coverage

Strong: HostedServiceStopOnceTests isolates the wrapper's concurrency/cancellation semantics with deterministic unit tests (concurrent stop, sequential re-stop, task identity, sync-throw caching, lifecycle-hook guarding, and now the owning-caller-cancellation case), and HostStopExactlyOnceProbeTests adds an end-to-end regression probe against the actual double-Host.StopAsync race with a [Repeat(50)] end-to-end test. This is a good pairing of a fast/deterministic suite with a slower probabilistic regression probe.

CLAUDE.md compliance

No violations found — no blocking on async, no VSTest usage, no source-gen/snapshot changes, no reflection requiring AOT annotations. Dual-mode rule doesn't apply (this is ASP.NET Core hosting infrastructure, not core metadata collection).

Verdict

No correctness issues found, including in the most recent unreviewed commit. The fix is well-scoped to the actual race, and the owning/duplicate caller distinction added in the latest commit is a meaningful correctness improvement over the prior revision, not just a style change. Nice work isolating the root cause down to the Host.StopAsync concurrency gap with an instrumented probe before writing the fix.

@thomhurst
thomhurst disabled auto-merge July 12, 2026 21:39
@thomhurst
thomhurst merged commit a5516db into main Jul 12, 2026
13 checks passed
@thomhurst
thomhurst deleted the fix/6339-deferred-host-double-stop branch July 12, 2026 21:40
github-actions Bot pushed a commit to BenjaminMichaelis/DotnetTemplates that referenced this pull request Oct 5, 2026
Updated
[Microsoft.Testing.Extensions.CodeCoverage](https://github.com/microsoft/codecoverage)
from 18.7.0 to 18.11.2.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Testing.Extensions.CodeCoverage's
releases](https://github.com/microsoft/codecoverage/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/microsoft/codecoverage/commits).
</details>

Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.45.29 to
1.72.16.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.72.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.72.16 -->

## What's Changed
### Other Changes
* docs: add Moq, NSubstitute, and FakeItEasy migration guides for
TUnit.Mocks by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6951
### Dependencies
* chore(deps): update dependency azure.storage.blobs to 12.30.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6945
* chore(deps): update tunit to 1.72.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6946
* chore(deps): update dependency mockolate to 3.5.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6949


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.72.10...v1.72.16

## 1.72.10

<!-- Release notes generated using configuration in .github/release.yml
at v1.72.10 -->

## What's Changed
### Other Changes
* fix(source-gen): adapt ValueTask<T> test results by @​zion-sati in
https://github.com/thomhurst/TUnit/pull/6930
### Dependencies
* chore(deps): update tunit to 1.72.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6941
* chore(deps): update aspire to 13.6.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6940
* chore(deps): update verify to 33.2.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6943
* chore(deps): update dependency awssdk.sqs to 4.0.100.15 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6944

## New Contributors
* @​zion-sati made their first contribution in
https://github.com/thomhurst/TUnit/pull/6930

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.72.4...v1.72.10

## 1.72.4

<!-- Release notes generated using configuration in .github/release.yml
at v1.72.4 -->

## What's Changed
### Other Changes
* fix(source-gen): stop parameter resolver keeping every non-public
test-class method (IL2111) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6937
### Dependencies
* chore(deps): update tunit to 1.72.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6934


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.72.0...v1.72.4

## 1.72.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.72.0 -->

## What's Changed
### Other Changes
* perf(source-gen): resolve parameter reflection info through a shared
runtime helper by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6923
* perf(analyzers): trim remaining analyzer hot-path symbol lookups and
binds by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6928
* perf(mocks): move shared MockCall wrapper plumbing into runtime base
classes by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6929
* perf(source-gen): close incremental caching gaps in static property
and property injection generators by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6925
* perf(source-gen): stop InfrastructureGenerator pinning an old
Compilation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6926
* perf(assertions-analyzers): cache assertion symbols and cut per-call
work by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6927
* perf(source-gen): emit hooks per class with direct, non-async bodies
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6924
* test: fix flaky ObjectInitializer continuation-thread test by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6932
* fix: CI flakes from leaked hook contexts, ActivityCollector race and
Repro5700 rendezvous by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6933
* fix(aspnetcore): honor WebApplicationFactoryClientOptions in
CreateClient by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6931
### Dependencies
* chore(deps): update tunit to 1.71.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6920


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.71.0...v1.72.0

## 1.71.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.71.0 -->

## What's Changed
### Other Changes
* perf: lighter per-test trace bookkeeping for the HTML report (-12%
allocations at 10k tests) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6910
* perf(html-report): parallel report serialization + optimized hot
writers (-26% end-of-session time) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6911
* perf: emit source-generated test types after user code (Defender scan
5s → 0.2s at 10k tests) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6908
* perf(source-gen): bound generated test-entry methods (data-driven
startup JIT -45%) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6909
* fix: avoid blocking waiting callers during IAsyncInitializer
initialization by @​Sing303 in
https://github.com/thomhurst/TUnit/pull/6906
* perf(analyzers): cut binding and symbol lookups in analyzer hot paths
(TUnit.Analyzers -89% on TestProject) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6917
* fix(source-gen): model equality covers every emitted field;
infrastructure refreshes on reference changes by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6912
* perf(mocks): memoize generator discovery per compilation and decouple
emitted source from call-site locations by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6913
* fix(packaging): skip the source generator when disabled and replace
the broken Polyfill injection by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6915
* refactor(analyzers): address review feedback from #​6917 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6919
* perf(source-gen): remove whole-compilation scans from static property,
property injection and AOT converter generators by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6914
* perf(assertions-source-gen): make assertion generators properly
incremental by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6916
* perf(source-gen): make TestMetadataGenerator pipeline values equatable
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6918
### Dependencies
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6900
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6899
* chore(deps): update dependency tunit.aspire to 1.7* by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6901
* chore(deps): update tunit to 1.7* by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6902
* chore(deps): update dependency coverlet.collector to 10.1.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6905
* chore(deps): update dependency nunit to v5 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6903


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.70.1...v1.71.0

## 1.70.1

<!-- Release notes generated using configuration in .github/release.yml
at v1.70.1 -->

## What's Changed
### Other Changes
* fix: don't run DedicatedThreadExecutor continuations inline on the
dedicated thread by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6898


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.70.0...v1.70.1

## 1.70.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.70.0 -->

## What's Changed
### Other Changes
* feat: clear parallel constraints and limiter during test registration
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6897
* fix(mocks): emit valid lambdas for Task/ValueTask-returning delegate
mocks by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6896
### Dependencies
* chore(deps): update tunit to 1.69.24 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6893


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.69.24...v1.70.0

## 1.69.24

<!-- Release notes generated using configuration in .github/release.yml
at v1.69.24 -->

## What's Changed
### Other Changes
* fix: skip Ctrl+C handling where Console.CancelKeyPress is unsupported
by @​glennawatson in https://github.com/thomhurst/TUnit/pull/6889
### Dependencies
* chore(deps): update verify to 33.1.5 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6891
* chore(deps): update tunit to 1.69.21 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6890


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.69.21...v1.69.24

## 1.69.21

<!-- Release notes generated using configuration in .github/release.yml
at v1.69.21 -->

## What's Changed
### Other Changes
* fix: preserve JUnit results after session cancellation by @​Sing303 in
https://github.com/thomhurst/TUnit/pull/6882
* feat: warn when setup hooks pass the test execution token by @​Sing303
in https://github.com/thomhurst/TUnit/pull/6883
* fix: complete DedicatedThreadExecutor tests only after CleanUp()
returns by @​glennawatson in
https://github.com/thomhurst/TUnit/pull/6886
### Dependencies
* chore(deps): update tunit to 1.69.16 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6881

## New Contributors
* @​glennawatson made their first contribution in
https://github.com/thomhurst/TUnit/pull/6886

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.69.16...v1.69.21

## 1.69.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.69.16 -->

## What's Changed
### Other Changes
* fix: preserve TRX results when session cleanup fails by @​Sing303 in
https://github.com/thomhurst/TUnit/pull/6879
### Dependencies
* chore(deps): update tunit to 1.69.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6864
* chore(deps): update dependency messagepack to 3.1.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6866
* chore(deps): update dependency dompurify to v3.4.16 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6867
* chore(deps): update dependency serialize-javascript to v7.1.2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6868
* chore(deps): update dependency azure.data.tables to 12.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6870
* chore(deps): update dependency microsoft.playwright to 1.63.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6871
* chore(deps): update verify to 33.1.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6872
* chore(deps): update dependency verify.tool to v0.9.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6873
* chore(deps): update verify to 33.1.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6874
* chore(deps): update verify to 33.1.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6876
* chore(deps): update dependency moq to 4.21.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6877
* chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6878

## New Contributors
* @​Sing303 made their first contribution in
https://github.com/thomhurst/TUnit/pull/6879

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.69.0...v1.69.16

## 1.69.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.69.0 -->

## What's Changed
### Other Changes
* feat(templates): add enableDotCover flag (#​6714) by @​ForNeVeR in
https://github.com/thomhurst/TUnit/pull/6844
* fix: don't request semantic models for attribute syntax from other
compilations (DevKit crash) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6855
* fix(ci): restore net472 PublicAPI tests on Windows by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6857
* perf(html-report): stream report JSON through pooled chunks and
overlap sidecar serialization by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6860
* chore(renovate): cap Microsoft.Build packages below 18.10.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6863
* perf: shrink generated per-class test source static constructors (~40%
less startup JIT) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6859
* refactor: remove unreachable decimal source-text path from
GenerateAttributeInstantiation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6856
* perf: cut per-test allocations in discovery and execution (-61% at 10k
tests) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6861
* perf: stop hashing per-test event receivers during registration
(data-driven tests 2.9x faster at 10k) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6858
* perf(analyzers): cut TUnit analyzer build time ~60% on large test
projects by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6862
### Dependencies
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6838
* chore(deps): update dependency opentelemetry.instrumentation.runtime
to 1.19.0 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6840
* chore(deps): update tunit to 1.68.17 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6839
* chore(deps): update verify to 33.1.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6843
* chore(deps): update verify to 33.1.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6847
* chore(deps): update opentelemetry to 1.19.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6850
* chore(deps): update dependency grpc.core.api to 2.84.0 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6851
* chore(deps): update dependency stackexchange.redis to 3.3.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6853
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6841
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6842

## New Contributors
* @​ForNeVeR made their first contribution in
https://github.com/thomhurst/TUnit/pull/6844

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.68.17...v1.69.0

## 1.68.17

<!-- Release notes generated using configuration in .github/release.yml
at v1.68.17 -->

## What's Changed
### Other Changes
* fix(mocks): emit init accessors for init-only properties and indexers
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6833
* fix(mocks): let one type be mocked regularly and wrapped in one
compilation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6835
* fix(mocks): keep editors in sync with publicized project references
(#​6836) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6837
### Dependencies
* chore(deps): update tunit to 1.68.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6824
* chore(deps): update mstest to 4.4.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6825
* chore(deps): update microsoft.testing by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6717
* chore(deps): update verify to v33 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6794
* chore(deps): update dependency stackexchange.redis to 3.2.15 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6827
* chore(deps): update dependency messagepack to 3.1.9 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6828
* chore(deps): update dependency stackexchange.redis to 3.3.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6831
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6832


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.68.4...v1.68.17

## 1.68.4

<!-- Release notes generated using configuration in .github/release.yml
at v1.68.4 -->

## What's Changed
### Other Changes
* Add installable TUnit documentation routing skill by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6823
### Dependencies
* chore(deps): update tunit to 1.68.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6819
* chore(deps): update dependency mockolate to 3.5.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6822


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.68.0...v1.68.4

## 1.68.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.68.0 -->

## What's Changed
### Other Changes
* chore: switch to fillable checkboxes for issue templates by
@​radmorecameron in https://github.com/thomhurst/TUnit/pull/6795
* Add functionality to TUnit.Playwright to easily record videos for
tests by @​dahlsailrunner in
https://github.com/thomhurst/TUnit/pull/6799
* docs: clarify thread pool usage in parallel tests by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6817
* Fix mocking events with ref struct arguments by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6814
* Fix TUnit0023 false positives for disposal through casts by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6818
### Dependencies
* chore(deps): update tunit to 1.67.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6793
* chore(deps): update xunit to 4.0.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6796
* chore(deps): update dependency bunit to 2.11.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6800
* chore(deps): update dependency stackexchange.redis to 3.2.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6801
* chore(deps): update dependency polly to 8.8.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6805
* chore(deps): update dependency dotnet-sdk to v10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6803
* chore(deps): update dependency masstransit to 9.2.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6806
* chore(deps): update dependency awssdk.sqs to 4.0.100.14 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6807
* chore(deps): update dependency brace-expansion to v5.0.12 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6809
* chore(deps): update dependency microsoft.net.test.sdk to 18.10.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6811
* chore(deps): update aspire to 13.5.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6813

## New Contributors
* @​radmorecameron made their first contribution in
https://github.com/thomhurst/TUnit/pull/6795
* @​dahlsailrunner made their first contribution in
https://github.com/thomhurst/TUnit/pull/6799

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.67.0...v1.68.0

## 1.67.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.67.0 -->

## What's Changed
### Other Changes
* docs: clarified and updated attributes comparison for xUnit 3 by
@​304NotModified in https://github.com/thomhurst/TUnit/pull/6774
* perf: read inline argument metadata without reflection by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6778
* perf: limit converter discovery to declarations by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6779
* perf: skip teardown analysis when no disposable members need cleanup
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6780
* perf: avoid line allocations when writing generated source by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6781
* perf: avoid formatting interface names for data-source checks by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6782
* perf: skip unannotated property data-source candidates by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6784
* fix: fold inner exceptions into IDE test failure output by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6777
* perf: reuse argument-free attribute initializer text by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6788
* perf: extract test metadata in attribute transforms by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6789
* perf: skip receiver registration for ordinary objects by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6790
* perf: cache reporting properties on test contexts by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6791
* fix: preserve executor registration, limiter precedence, and timeout
classification by @​Nice3point in
https://github.com/thomhurst/TUnit/pull/6768
### Dependencies
* chore(deps): update tunit to 1.66.27 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6742
* chore(deps): update dependency bunit to 2.10.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6745
* chore(deps): update dependency imposter to 0.1.11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6744
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.2
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6747
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.401 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6750
* chore(deps): update dependency fsharp.core to 10.1.401 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6748
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.401 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6751
* chore(deps): update dependency system.commandline to 2.0.12 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6752
* chore(deps): update dependency dotnet-sdk to v10.0.401 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6754
* chore(deps): update microsoft.extensions to 10.0.12 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6755
* chore(deps): update microsoft.aspnetcore to 10.0.12 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6753
* chore(deps): update dependency microsoft.entityframeworkcore to
10.0.12 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6749
* chore(deps): update mcr.microsoft.com/dotnet/sdk docker tag to v11 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6756
* chore(deps): update dependency microsoft.net.test.sdk to 18.10.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6761
* chore(deps): update microsoft.extensions to 10.10.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6762
* chore(deps): update react to ^19.3.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6763
* chore(deps): update dependency awssdk.sqs to 4.0.100.13 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6764
* chore(deps): update dependency polyfill to 11.3.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6765
* chore(deps): update dependency polyfill to 11.3.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6766
* chore(deps): update dependency stackexchange.redis to 3.2.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6769
* chore(deps): update dependency microsoft.net.stringtools to 18.10.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6771
* chore(deps): update dependency dotnet-trace to v10.0.745401 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6773
* chore(deps): bump colord from 2.9.3 to 2.10.0 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6759
* chore(deps): bump joi from 17.13.4 to 17.13.7 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6758
* chore(deps): bump js-yaml from 4.3.1 to 4.3.2 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6757
* chore(deps): update dependency yaml to v2.9.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6785
* chore(deps): update verify to 32.0.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6786
* chore(deps): update dependency nunit.analyzers to 4.15.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6792

## New Contributors
* @​304NotModified made their first contribution in
https://github.com/thomhurst/TUnit/pull/6774
* @​Nice3point made their first contribution in
https://github.com/thomhurst/TUnit/pull/6768
 ... (truncated)

## 1.66.27

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.27 -->

## What's Changed
### Other Changes
* fix(mocks): initialize mock state before base constructor callbacks by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6741
### Dependencies
* chore(deps): update tunit to 1.66.16 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6733
* chore(deps): update dependency testcontainers.postgresql to 4.15.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6736
* chore(deps): update dependency testcontainers.redis to 4.15.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6737
* chore(deps): update dependency testcontainers.kafka to 4.15.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6735
* chore(deps): update dependency mockolate to 3.5.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6739


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.66.16...v1.66.27

## 1.66.16

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.16 -->

## What's Changed
### Other Changes
* fix: isolated name is lowercase (#​6727) by @​koryphaee in
https://github.com/thomhurst/TUnit/pull/6728
* fix: preserve concurrent Assert.Multiple failures by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6730
* fix: preserve original HTTP mock request content by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6731
### Dependencies
* chore(deps): update tunit to 1.66.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6726
* chore(deps): update dependency dompurify to v3.4.15 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6732


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.66.10...v1.66.16

## 1.66.10

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.10 -->

## What's Changed
### Other Changes
* fix: restore null suppression for built-in assertion methods by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6725
### Dependencies
* chore(deps): update tunit to 1.66.8 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6724


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.66.8...v1.66.10

## 1.66.8

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.8 -->

## What's Changed
### Other Changes
* fix(ci): make issue triage work for external reporters by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6720
* fix(ci): run code review on pull requests from forks by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6722
* fix: suppress nullability warnings after Should NotBeNull assertions
by @​mvanhorn in https://github.com/thomhurst/TUnit/pull/6700
* fix: Avoid HTML report CLI option clashes by @​mvanhorn in
https://github.com/thomhurst/TUnit/pull/6677
### Dependencies
* chore(deps): update tunit to 1.66.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6719
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.1
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6721
* chore(deps): update dependency awssdk.sqs to 4.0.100.12 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6723


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.66.0...v1.66.8

## 1.66.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.66.0 -->

## What's Changed
### Other Changes
* Compile all C# documentation snippets by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6695
* Fix `Type` assignability assertions to evaluate represented type (not
`RuntimeType`) by @​thomhurst with @​Copilot in
https://github.com/thomhurst/TUnit/pull/6711
* Clarify ClassDataSource constructor requirements by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6716
* Add programmatic HTML reporting settings by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6699
* Fix timeout cancellation diagnostics by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6715
### Dependencies
* chore(deps): update tunit to 1.65.68 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6682
* chore(deps): update dependency verify.tool to v0.9.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6683
* chore(deps): update dependency mockolate to 3.4.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6685
* chore(deps): update dependency serialize-javascript to v7.1.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6687
* chore(deps): update dependency qs to v6.16.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6691
* chore(deps): update dependency system.reactive to v7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6696
* chore(deps): update dependency imposter to 0.1.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6701
* chore(deps): update dependency microsoft.kiota.abstractions to 2.1.0
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6704
* chore(deps): update mstest to 4.4.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6705
* chore(deps): update dependency dotnet-trace to v10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6706
* chore(deps): update microsoft.testing by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6703
* chore(deps): update microsoft.testing by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6713
* chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6707


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.65.68...v1.66.0

## 1.65.68

<!-- Release notes generated using configuration in .github/release.yml
at v1.65.68 -->

## What's Changed
### Other Changes
* fix: convert foreign array element-wise for trailing array parameter
(#​6678) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6681
### Dependencies
* chore(deps): update tunit to 1.65.63 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6672
* chore(deps): update aspire to 13.5.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6674
* chore(deps): update verify to v32 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6680


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.65.63...v1.65.68

## 1.65.63

<!-- Release notes generated using configuration in .github/release.yml
at v1.65.63 -->

## What's Changed
### Other Changes
* Fix mocking hidden generic interface methods by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6671
### Dependencies
* chore(deps): update aspire to 13.5.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6655
* chore(deps): update opentelemetry to 1.18.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6653
* chore(deps): update dependency azure.data.tables to 12.12.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6654
* chore(deps): update tunit to 1.65.51 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6661
* chore(deps): update dependency svgo to v4.1.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6663
* chore(deps): update dependency picomatch to v4.0.7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6664
* chore(deps): update dependency awssdk.sqs to 4.0.100.11 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6666
* chore(deps): update dependency nunit3testadapter to 6.3.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6667
* chore(deps): update dependency azure.storage.blobs to 12.29.2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6668


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.65.51...v1.65.63

## 1.65.51

<!-- Release notes generated using configuration in .github/release.yml
at v1.65.51 -->

## What's Changed
### Other Changes
* Compile public documentation snippets by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6652
* Fix covariant property override discovery by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6660
### Dependencies
* chore(deps): update tunit to 1.65.38 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6644
* chore(deps): update dependency fscheck to 3.4.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6646
* chore(deps): update dependency awssdk.sqs to 4.0.100.10 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6647
* chore(deps): update aspire to 13.5.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6648
* chore(deps): update dependency stackexchange.redis to 3.1.31 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6650
* chore(deps): update opentelemetry to 1.18.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6651


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.65.38...v1.65.51

## 1.65.38

<!-- Release notes generated using configuration in .github/release.yml
at v1.65.38 -->

## What's Changed
### Other Changes
* Fix mocks for inaccessible method signature types by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6641
### Dependencies
* chore(deps): update dependency awssdk.sqs to 4.0.100.9 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6636
* chore(deps): update tunit to 1.65.31 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6637
* chore(deps): update dependency dompurify to v3.4.14 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6640
* chore(deps): update aspire to 13.5.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6638
* chore(deps): update dependency cliwrap to 3.10.5 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6642


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.65.31...v1.65.38

## 1.65.31

<!-- Release notes generated using configuration in .github/release.yml
at v1.65.31 -->

## What's Changed
### Other Changes
* Add xunit.v3.aot to speed comparison by @​campersau in
https://github.com/thomhurst/TUnit/pull/6621
* Suppress HTML reports for nested test runs by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6620
* Address xUnit speed comparison review feedback by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6623
* Fix docs TypeScript 7 compatibility by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6625
* Refresh docs npm dependencies by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6624
* Switch to SignalWire llms.txt plugin by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6627
* Remove single-test discovery copies by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6631
* Skip unused scheduler work for unconstrained suites by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6632
* Skip empty test registration work by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6628
* Skip absent hook pipelines by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6630
* Fix mocks with inaccessible constructor parameter types by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6635
### Dependencies
* chore(deps): update dependency awssdk.sqs to 4.0.100.8 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6608
* chore(deps): update tunit to 1.65.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6609
* chore(deps): update dependency testcontainers.postgresql to 4.14.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6612
* chore(deps): update dependency testcontainers.kafka to 4.14.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6611
* chore(deps): update dependency testcontainers.redis to 4.14.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6613
* chore(deps): update dependency microsoft.net.test.sdk to 18.9.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6614
* chore(deps): update xunit to v4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6616


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.65.0...v1.65.31

## 1.65.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.65.0 -->

## What's Changed
### Other Changes
* Report unexpected mock generation failures by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6605
* Process every GenerateMock attribute by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6606
* Support T.Mock() for static abstract interfaces by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6607
### Dependencies
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.303 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6586
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.303 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6587
* chore(deps): update microsoft.build to 18.9.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6585
* chore(deps): update dependency fsharp.core to 10.1.400 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6588
* chore(deps): update dependency microsoft.entityframeworkcore to
10.0.11 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6589
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.400 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6591
* chore(deps): update dependency dotnet-sdk to v10.0.400 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6590
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.400 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6592
* chore(deps): update dependency system.commandline to 2.0.11 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6593
* chore(deps): update microsoft.extensions to 10.0.11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6595
* chore(deps): update microsoft.aspnetcore to 10.0.11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6594
* chore(deps): update tunit to 1.64.13 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6596
* chore(deps): update dependency nuget.protocol to 7.9.0 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6597
* chore(deps): update microsoft.extensions to 10.9.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6598
* chore(deps): update dependency polyfill to 11.2.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6601
* chore(deps): update dependency polyfill to 11.2.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6600
* chore(deps): update dependency
microsoft.testing.extensions.codecoverage to 18.10.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6602


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.64.13...v1.65.0

## 1.64.13

<!-- Release notes generated using configuration in .github/release.yml
at v1.64.13 -->

## What's Changed
### Other Changes
* Stabilize immediate WaitsFor assertion test by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6576
* fix: Allow Item.Member after HasSingleItem by @​SnakyBeaky in
https://github.com/thomhurst/TUnit/pull/6583
### Dependencies
* chore(deps): update tunit to 1.64.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6577
* chore(deps): update dependency nsubstitute to 6.2.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6580
* chore(deps): update dependency microsoft.playwright to 1.62.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6582
* chore(deps): update dependency microsoft.net.stringtools to 18.9.6 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6584

## New Contributors
* @​SnakyBeaky made their first contribution in
https://github.com/thomhurst/TUnit/pull/6583

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.64.6...v1.64.13

## 1.64.6

<!-- Release notes generated using configuration in .github/release.yml
at v1.64.6 -->

## What's Changed
### Other Changes
* Switch NuGet publishing to trusted publishing by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6573
* Expose results directory through TestContext by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6575
* Fix outcome timeline overflow in HTML reports by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6574
### Dependencies
* chore(deps): update tunit to 1.64.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6570


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.64.0...v1.64.6

## 1.64.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.64.0 -->

## What's Changed
### Other Changes
* Honor cancellation tokens linked by custom test executors by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6565
* Fix linked cancellation from before-test hooks by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6568
* Add per-test execution cancellation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6569
### Dependencies
* chore(deps): update tunit to 1.63.25 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6559
* chore(deps): update dependency serialize-javascript to v7.1.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6561
* chore(deps): update dependency nsubstitute to 6.1.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6564
* chore(deps): bump mermaid from 11.15.0 to 11.16.1 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6563
* chore(deps): bump nanoid from 3.3.16 to 3.3.18 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6562


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.63.25...v1.64.0

## 1.63.25

<!-- Release notes generated using configuration in .github/release.yml
at v1.63.25 -->

## What's Changed
### Other Changes
* Fix Mermaid label contrast in dark mode by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6531
* Enhance matrix tests documentation by @​koryphaee in
https://github.com/thomhurst/TUnit/pull/6537
* fix: support nested Member after IsTypeOf by @​mvanhorn in
https://github.com/thomhurst/TUnit/pull/6540
* docs: Add documentation for TestContext.Parameters by @​thomhurst with
@​Copilot in https://github.com/thomhurst/TUnit/pull/6558
* fix: run event receivers on injected properties by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6556
### Dependencies
* chore(deps): update tunit to 1.63.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6526
* chore(deps): update dependency stackexchange.redis to 3.1.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6529
* chore(deps): update verify to 31.28.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6532
* chore(deps): update dependency stackexchange.redis to 3.1.3 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6541
* chore(deps): update dependency dompurify to v3.4.13 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6542
* chore(deps): update dependency rabbitmq.client to 7.2.2 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6546
* chore(deps): update dependency polyfill to 11.0.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6549
* chore(deps): update dependency polyfill to 11.0.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6548
* chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6545
* chore(deps): bump postcss from 8.5.22 to 8.5.25 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6547
* chore(deps): update dependency stackexchange.redis to 3.1.11 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6550
* chore(deps): update dependency stackexchange.redis to 3.1.13 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6552

## New Contributors
* @​koryphaee made their first contribution in
https://github.com/thomhurst/TUnit/pull/6537

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.63.0...v1.63.25

## 1.63.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.63.0 -->

## What's Changed
### Other Changes
* fix(mocks): dispatch abstract indexers through the engine instead of
calling base by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6517
* feat(mocks): experimental compile-time internals access (#​6514 Tier
2) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6520
* feat(mocks): make the async-factory Returns alias available below
net9.0 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6518
* +semver:minor - feat(mocks): runtime auto-stubs for interfaces the
source generator cannot see by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6519
### Dependencies
* chore(deps): update tunit to 1.62.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6508
* chore(deps): update dependency mockolate to 3.4.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6512
* chore(deps): update dependency cliwrap to 3.10.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6513
* chore(deps): update dependency stackexchange.redis to 3.0.25 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6522
* chore(deps): update dependency brace-expansion to v5.0.9 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6523
* chore(deps): update dependency microsoft.build.utilities.core to v18
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6525


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.62.0...v1.63.0

## 1.62.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.62.0 -->

## What's Changed
### Other Changes
* fix(docs): make Mermaid lifecycle diagrams readable by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6485
* fix(mocks): strip nullable annotation from constructor dispatch
patterns by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6498
* fix(mocks): skip interfaces with inaccessible abstract members by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6502
* feat(mocks): accept an async factory in Returns() on async members by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6503
* fix(mocks): report TM006 instead of CS1729 for unsubclassable classes
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6501
* fix(mocks): emit the setup surface into the globally-imported
namespace by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6504
* fix(mocks): reference TUnit.Mocks once in snapshot test compilations
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6506
* fix(mocks): make generated identifier sanitization injective by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6507
### Dependencies
* chore(deps): update tunit to 1.61.38 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6479
* chore(deps): update dependency brace-expansion to v5.0.8 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6478
* chore(deps): update dependency cliwrap to 3.10.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6482
* chore(deps): bump postcss from 8.5.10 to 8.5.22 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6480
* chore(deps): update dependency fscheck to 3.3.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6486
* chore(deps): update dependency minimatch to v10.2.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6490
* chore(deps): update actions/stale action to v11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6496
* chore(deps): update microsoft.testing to 2.3.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6499
* chore(deps): update mstest to 4.3.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6500


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.38...v1.62.0

## 1.61.38

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.38 -->

## What's Changed
### Other Changes
* fix: apply 'unmanaged' constraint handling to remaining source
generators by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6474
* feat: expose data source attributes on TestContext by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6477
### Dependencies
* chore(deps): update tunit to 1.61.35 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6475


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.35...v1.61.38

## 1.61.35

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.35 -->

## What's Changed
### Other Changes
* fix(mocks): omit 'struct' constraint when type parameter has
'unmanaged' constraint by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6473
### Dependencies
* chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6466
* chore(deps): update tunit to 1.61.29 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6467
* chore(deps): update dependency verify.tool to v0.8.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6470
* chore(deps): update dependency docusaurus-plugin-llms to ^0.5.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6472


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.29...v1.61.35

## 1.61.29

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.29 -->

## What's Changed
### Other Changes
* perf: remove EnumerableAsyncProcessor dependency by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6465
### Dependencies
* chore(deps): bump shell-quote from 1.8.4 to 1.10.0 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6462
* chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6461
* chore(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6460
* chore(deps): update dependency microsoft.kiota.abstractions to v2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6464
* chore(deps): update tunit to 1.61.23 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6463


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.23...v1.61.29

## 1.61.23

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.23 -->

## What's Changed
### Other Changes
* fix(mocks): emit 'where T : default' for interface-constrained generic
methods by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6458
### Dependencies
* chore(deps): update tunit to 1.61.15 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6450
* chore(deps): update actions/checkout action to v7.0.1 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6453
* chore(deps): update verify to 31.26.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6454
* chore(deps): update verify to 31.27.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6457
* chore(deps): update react to ^19.2.8 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6459


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.15...v1.61.23

## 1.61.15

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.15 -->

## What's Changed
### Other Changes
* feat: Allow disabling the automatic html report upload to
upload-artifacts@​v7 by @​Crashdummyy in
https://github.com/thomhurst/TUnit/pull/6447
* fix: stop retrying artifact upload on non-retryable status codes by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6449
### Dependencies
* chore(deps): update tunit to 1.61.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6437
* chore(deps): update verify to 31.24.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6438
* chore(deps): update dependency
opentelemetry.instrumentation.aspnetcore to 1.17.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6440
* chore(deps): update verify to 31.25.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6442
* chore(deps): update dependency docusaurus-plugin-llms to ^0.5.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6443
* chore(deps): update opentelemetry to 1.17.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6441

## New Contributors
* @​Crashdummyy made their first contribution in
https://github.com/thomhurst/TUnit/pull/6447

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.0...v1.61.15

## 1.61.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.0 -->

## What's Changed
### Other Changes
* docs: revamp README with feature showcase and auto-updating benchmarks
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6430
* docs: align docs homepage messaging with revamped README by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6431
* fix(engine): emit ECMA-335 metadata-format type names in
TestMethodIdentifierProperty by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6433
* fix(benchmarks): make SetupTeardownTests JSON tests Native AOT
compatible by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6434
* Organize repository into conventional .NET layout by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6435
### Dependencies
* chore(deps): update dependency polyfill to v11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6418
* chore(deps): update dependency tunit.aspire to 1.6* by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6419
* chore(deps): update tunit to 1.6* by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6420
* chore(deps): update dependency polyfill to 11.0.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6421
* chore(deps): update dependency polyfill to 11.0.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6422
* chore(deps): update verify to 31.24.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6424
* chore(deps): update microsoft.build to 18.8.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6426
* chore(deps): update dependency microsoft.net.stringtools to 18.8.2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6425
* chore(deps): update actions/setup-dotnet action to v6 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6427
* chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6429
* chore(deps): update opentelemetry to 1.17.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6432


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.60.0...v1.61.0

## 1.60.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.60.0 -->

## What's Changed
### Other Changes
* feat: cross-process test report aggregation — merged HTML report +
single GitHub summary by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6415
### Dependencies
* chore(deps): update tunit to 1.59.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6398
* chore(deps): update verify to 31.24.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6399
* chore(deps): update microsoft.testing to 2.3.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6401
* chore(deps): update mstest to 4.3.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6402
* chore(deps): update actions/setup-node action to v7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6403
* chore(deps): update dependency microsoft.net.test.sdk to 18.8.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6404
* chore(deps): update dependency microsoft.net.test.sdk to 18.8.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6405
* chore(deps): update dependency fsharp.core to 10.1.302 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6406
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.302 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6407
* chore(deps): update dependency microsoft.entityframeworkcore to
10.0.10 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6410
* chore(deps): update dependency dotnet-sdk to v10.0.302 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6409
* chore(deps): update dependency system.commandline to 2.0.10 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6412
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.302 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6411
* chore(deps): update microsoft.aspnetcore to 10.0.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6413
* chore(deps): update microsoft.extensions to 10.0.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6414
* chore(deps): update microsoft.extensions to 10.8.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6416
* chore(deps): update dependency polyfill to v11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6417


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.59.0...v1.60.0

## 1.59.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.59.0 -->

## What's Changed
### Other Changes
* Fix typed MethodDataSource provider instances by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6378
* Fix instance MethodDataSource isolation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6379
* fix(mocks): CS9262 in generated mock members on VS 17.14 (Roslyn 4.14)
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6392
* Remove EqualTo alias documentation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6396
* fix(aspnetcore): guard hosted-service stop against concurrent double
Host.StopAsync by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6397
* Add single-item assertion chaining by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6395
* Improve test framework migrations by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6381
* Add -f/--framework support to TUnit template with .NET Framework
handling by @​thomhurst with @​Copilot in
https://github.com/thomhurst/TUnit/pull/6262
### Dependencies
* chore(deps): update tunit to 1.58.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6351
* chore(deps): update dependency tunit.core to 1.58.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6352
* chore(deps): update dependency picomatch to v4.0.5 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6354
* chore(deps): update dependency testcontainers.postgresql to 4.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6356
* chore(deps): update dependency testcontainers.redis to 4.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6357
* chore(deps): update dependency testcontainers.kafka to 4.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6355
* chore(deps): update dependency gitversion.tool to v6.8.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6359
* chore(deps): update dependency typescript to v7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6372
* chore(deps): update mstest to 4.3.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6374
* chore(deps): update dependency messagepack to 3.1.8 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6376
* chore(deps): update dependency opentelemetry.instrumentation.runtime
to 1.16.0 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6380
* chore(deps): update dependency vogen to 8.0.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6382
* chore(deps): update dependency gitversion.tool to v6.8.2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6384
* chore(deps): update dependency npgsql.entityframeworkcore.postgresql
to 10.0.3 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6385
* chore(deps): update docusaurus to v3.10.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6386
* chore(deps): update dependency stackexchange.redis to 3.0.17 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6387
* chore(deps): update dependency dompurify to v3.4.12 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6389
* chore(deps): update dependency svgo to v4.0.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6390
* chore(deps): update dependency nsubstitute to v6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6394
* chore(deps): update verify to 31.24.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6367
* chore(deps): update microsoft.testing by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6369


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.58.0...v1.59.0

## 1.58.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.58.0 -->

## What's Changed
### Other Changes
* feat(aspire): opt-in live forwarding of resource logs into test output
(#​6341) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6345
* fix(aspire): fail fast on Finished-state crashes during startup
(#​6342) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6346
* fix(engine): keep per-test timeout token source alive through teardown
(#​6339) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6349
* feat(aspire): resource-diagnostics helpers + retained log buffer
(#​6343) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6350
* feat(aspire): surface exception detail in routed OTLP logs (#​6347) by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6348
### Dependencies
* chore(deps): update tunit to 1.57.17 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6344


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.57.17...v1.58.0

## 1.57.17

<!-- Release notes generated using configuration in .github/release.yml
at v1.57.17 -->

## What's Changed
### Other Changes
* fix(engine): reset test cancellation token before After hooks on
timeout path (#​6339) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6340
### Dependencies
* chore(deps): update tunit to 1.57.14 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6336


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.57.14...v1.57.17

## 1.57.14

<!-- Release notes generated using configuration in .github/release.yml
at v1.57.14 -->

## What's Changed
### Other Changes
* fix(engine): apply --treenode-filter to --list-tests by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6334
* feat(aspire): dump resource error logs on test failure + warn on
missing telemetry wiring by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6323
### Dependencies
* chore(deps): update dependency stackexchange.redis to 3.0.11 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6324
* chore(deps): update tunit to 1.57.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6322
* chore(deps): update dependency brace-expansion to v5.0.7 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6326
* chore(deps): update dependency polyfill to 10.11.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6327
* chore(deps): update dependency polyfill to 10.11.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6329
* chore(deps): update dependency polyfill to 10.11.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6330
* chore(deps): update dependency polyfill to 10.11.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6331
* chore(deps): update dependency serialize-javascript to v7.0.7 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6333
* chore(deps): update dependency gitversion.tool to v6.8.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6335


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.57.0...v1.57.14

## 1.57.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.57.0 -->

## What's Changed
### Other Changes
* perf(sourcegen): consolidate per-file ModuleInitializers into merged
.cctor (#​6226) by @​thomh…

This branch was previously deployed

1 inactive deployment
Pull Requests — ccaf8419 Deployed Jul 12, 2026 by thomhurst via modularpipeline (ubuntu-latest) #18528
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: [Test Failure] After(Test) hook failed: The CancellationTokenSource has been disposed.

1 participant