Skip to content

feat(mocks): accept an async factory in Returns() on async members - #6503

Merged
thomhurst merged 3 commits into
mainfrom
fix/6495-async-returns-factory
Jul 28, 2026
Merged

thomhurst merged 3 commits into
mainfrom
fix/6495-async-returns-factory

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Fixes #6495

Problem

mock.SomeMethodAsync().Returns(async () => { await Task.Delay(1000); return 42; });
// error CS4010: Cannot convert async lambda expression to delegate type 'Func<int>'

Returns on an async member is generated over the unwrapped return type, so its factory overload is Func<int> — an async lambda has nowhere to bind. The shape that does compile, Returns(() => { Thread.Sleep(1000); return 42; }), blocks the caller and hands back an already-completed task, so await Task.WhenAny(mock.SomeMethodAsync(), Task.Delay(timeout)) can never let the timeout branch win. That makes timeout-handling tests unwritable — the reporter kept NSubstitute for one test because of it.

ReturnsAsync(Func<Task<T>>) already did the right thing, but nothing at the Returns call site pointed there.

Fix

Emit a Returns overload alongside every existing ReturnsAsync factory overload — the parameterless form in EmitReturnsAsyncOverloads and the typed-parameter form in GenerateTypedReturnsAsyncOverload — routing through the same ReturnsRaw path. The factory's task is handed back as-is, so it stays pending until it completes.

Covers Task<T>, ValueTask<T>, Task and ValueTask members. The synchronous Func<T> overload is untouched; ReturnsAsync is unchanged.

Tests

tests/TUnit.Mocks.Tests/Issue6495Tests.cs — 8 cases: the timeout race (asserting the returned task is incomplete and that a 50ms timeout beats it), value propagation, per-call invocation, the typed-parameter form, ValueTask<T> and Task members, plus guards that the synchronous Returns factory and ReturnsAsync still behave as before.

TUnit.Mocks.Tests 1168 passed. Generator snapshots regenerated (8 files, additive only) and passing on net8.0/net9.0/net10.0. Analyzers 30, Http 54, Logging 31.

Returns() on an async member only offered the synchronous Func<T>
overload, so `.Returns(async () => { await Task.Delay(x); return y; })`
failed with CS4010. The only shape that compiled was a blocking
Thread.Sleep, which returns an already-completed task to the caller —
so production code racing the call against a timeout could never let the
timeout win, making that whole class of test unwritable.

Emit a Returns overload alongside each existing ReturnsAsync factory
overload, parameterless and typed-parameter alike, routing through the
same ReturnsRaw path. The factory's task is handed back as-is and stays
pending until it completes.

Fixes #6495
@greptile-apps

greptile-apps Bot commented Jul 28, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds async-factory Returns aliases for generated async mock members.

  • Routes parameterless and typed factories through the existing raw async-return path.
  • Uses overload-resolution priority to preserve synchronous null- and throw-lambda binding.
  • Emits the new aliases and their behavioral tests only for .NET 9 or later.
  • Adds regenerated source-generator snapshots and regression tests.

Confidence Score: 3/5

The PR is not yet safe to merge because the reported Returns(async ...) use case remains unavailable to .NET 8 consumers.

Both new overload forms are enclosed in NET9_0_OR_GREATER, so generated .NET 8 mocks retain the original overload set and continue rejecting async lambdas at the Returns call site.

Files Needing Attention: src/TUnit.Mocks.SourceGenerator/Builders/MockMembersBuilder.cs, tests/TUnit.Mocks.Tests/Issue6495Tests.cs

Important Files Changed

Filename Overview
src/TUnit.Mocks.SourceGenerator/Builders/MockMembersBuilder.cs Adds the async-factory aliases with ambiguity protection, but conditionally removes the advertised feature from .NET 8 generated mocks.
tests/TUnit.Mocks.Tests/Issue6495Tests.cs Covers pending-task behavior, values, invocation frequency, typed factories, and overload binding on .NET 9+, while leaving the new API untested and unavailable on .NET 8.
tests/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_With_Async_Methods.verified.txt Confirms the generated overload shapes and their .NET 9 conditional compilation boundaries.

Reviews (3): Last reviewed commit: "fix(mocks): gate the async Returns alias..." | Re-trigger Greptile

@claude

claude Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Code review

Nice, focused fix — routing the new Returns overloads through the existing ReturnsRaw path (rather than duplicating the async-completion logic) keeps this consistent with ReturnsAsync, and the added tests correctly pin down the behavior that actually mattered for #6495 (the mocked call must stay pending so a timeout can race it).

Confirmed issue: the new overload is source-breaking for reference-typed async results

MockMembersBuilder.cs now emits Returns(Func<T> factory) and Returns(Func<Task<T>> factory) side-by-side for every async member (same for the parameterless and ValueTask variants). Both are also emitted for members where T is a reference type or nullable — e.g. IDialogService_ShowDialogAsync_M1_MockCall<TDialog> gets both Returns(Func<object, DialogParameters, IDialogReference>) and Returns(Func<object, DialogParameters, Task<IDialogReference>>) (see tests/TUnit.Mocks.SourceGenerator.Tests/Snapshots/Interface_FluentUI_Shape_Nullable_Warnings.verified.txt lines 55-65 in the diff).

When T is a reference type, any call whose lambda body doesn't itself pin the return type — Returns(() => null) or Returns(() => throw new SomeException()) — becomes ambiguous overload resolution (CS0121), because null/throw convert equally well to T and to Task<T>. I verified this compiles today and breaks after the change:

public Test Returns(Func<IDialogReference?> factory) { ... }
public Test Returns(Func<Task<IDialogReference?>> factory) { ... }
...
t.Returns(() => null);              // CS0121: ambiguous
t.Returns(() => throw new InvalidOperationException()); // CS0121: ambiguous

Both are idiomatic mocking patterns (stub a null result, or stub a call that should throw) that existing consumers may already be using against reference-typed async members. This wouldn't be caught by the PR's own test suite because Issue6495Tests.cs only exercises int-returning members — for a non-nullable value type there's no overlap (null/throw can't implicitly convert to int, and a genuine async () => ... lambda can only bind to the Task<T> overload in the first place, since async lambdas never convert to a non-Task delegate type). So the feature this PR is aimed at (real async lambdas) never hits the ambiguity — only pre-existing synchronous lambdas against reference-typed results do.

Why this matters architecturally: the collision isn't a one-off bug in this diff, it's a consequence of overloading Returns on two Func<> shapes that differ only in return type. That pattern is inherently fragile in C# overload resolution (ambiguous whenever the lambda body doesn't itself disambiguate), and it will keep resurfacing if more shapes are added later. Two more targeted alternatives avoid the collision entirely:

  • Only emit the new Returns(Func<Task<T>>) alias when T is a non-nullable value type, where null/throw-only lambdas can never collide with the sync overload. This narrows the fix (reference-typed async results would still need ReturnsAsync for factory lambdas), but it's a compile-safe subset rather than a blanket change.
  • Keep the blanket alias but make it additive-safe by having the generator detect when a member's unwrapped T is a reference/nullable type and skip generating the conflicting sync Returns(Func<T>) overload's ambiguous overlap — e.g. by not calling it Returns for those cases specifically. More invasive, but keeps the fix uniform.

Either way, this is worth resolving before merge since it's a compile-breaking regression for existing callers, not just a theoretical edge case — greptile-apps flagged the same root cause above and I independently confirmed it compiles-then-breaks with a minimal repro.

Everything else looks solid

  • ReturnsRaw reuse is the right call — no new completion-handling logic to keep in sync with ReturnsAsync.
  • Snapshot updates are additive-only and consistent across all affected fixtures; no stray .received.txt files.
  • Doc comments on the new overloads correctly describe the "handed back as-is / stays pending" semantics that make the timeout-race scenario work.

…das unambiguous

Review finding: for a reference-typed async result, a lambda whose body
pins nothing — Returns(() => null), Returns(() => throw ...) — converts
equally well to Func<T> and to the new Func<Task<T>>, making previously
valid setups CS0121. Reproduced against IReferenceResultService before
adding the attribute.

[OverloadResolutionPriority(-1)] on the async factory overloads breaks
that tie back to the pre-existing synchronous meaning. A genuine async
lambda is unaffected: it is not convertible to Func<T> at all, so it
remains the only applicable candidate.
@thomhurst

Copy link
Copy Markdown
Owner Author

Both reviews are right — confirmed the ambiguity before fixing it. With the new overloads and no tie-break, three of the new reference-typed cases fail to compile:

Issue6495Tests.cs(134,29): error CS0121: The call is ambiguous between
  '...GetNameAsync_M0_MockCall.Returns(System.Func<string?>)' and
  '...GetNameAsync_M0_MockCall.Returns(System.Func<System.Threading.Tasks.Task<string?>>)'

Fixed in bb4843d by putting [OverloadResolutionPriority(-1)] on the async factory overloads (both the parameterless and typed-parameter forms) rather than narrowing which members get the alias. The priority only breaks ties among applicable candidates, so:

  • Returns(() => null) / Returns(() => throw ...) — both overloads applicable, priority sends it back to the synchronous Func<T> and its pre-existing meaning (null is the value; the member still returns a completed task).
  • Returns(async () => ...) — an async lambda is not convertible to Func<T> at all, so the task overload is the only candidate and the feature still works.

This keeps the fix uniform across all async members instead of restricting it to non-nullable value types, which would have left the reference-typed case — the more common one for a mocked service — still needing ReturnsAsync.

[OverloadResolutionPriority] ranks only within a single containing type, which is satisfied here: both overloads are emitted into the same generated call wrapper. TUnit.Mocks already requires C# 14 (TM004), so the Roslyn ≥4.12 floor for honouring it is guaranteed.

Added to Issue6495Tests.cs against a new IReferenceResultService (Task<string?> members): null-returning lambda, throwing lambda, null-returning typed lambda, and an async lambda on a reference-typed result asserting it still stays pending. TUnit.Mocks.Tests 1172 passed; snapshots regenerated and green on net8.0/net9.0/net10.0.

@claude

claude Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Code review

Follow-up on my previous review: the source-breaking ambiguity I (and Greptile) flagged for Returns(() => null) / Returns(() => throw ...) on reference-typed async results is resolved in bb4843d.

Verified the fix:

  • [OverloadResolutionPriority(-1)] is applied uniformly to every new Returns async-factory alias (parameterless and typed-parameter forms, Task<T>/ValueTask<T>/Task/ValueTask), consistently deprioritizing them against the pre-existing synchronous Func<T> overload. This is the same pattern already used in src/TUnit.Assertions.Should/ShouldExtensions.cs, so it's consistent with an established convention rather than a new one-off technique.
  • Confirmed the attribute resolves on net8.0 (no #if NET9_0_OR_GREATER guard needed) — Directory.Build.props pulls in the Polyfill package for all internal projects, which supplies OverloadResolutionPriorityAttribute on down-level TFMs. Built TUnit.Mocks.Tests for net8.0 locally: 0 errors.
  • Ran the new Issue6495Tests on net8.0: all 12 pass, including the added IReferenceResultService cases (Returns(() => null), throwing lambda, typed null lambda, and an async lambda on a reference-typed result) that specifically exercise the collision scenario.

No remaining issues from either review. This is good to merge as far as the two previously-raised concerns go.

Review finding: OverloadResolutionPriorityAttribute only reaches a
consumer's compilation on net9.0+. TUnit.Mocks polyfills it internally for
its own build, so the type is not visible to a net8.0 consumer and the
generated attribute would be CS0246 — which is why the framework-operation
polyfills in this file already sit behind #if NET9_0_OR_GREATER.

The alias is inseparable from the priority (without it, reference-typed
results get CS0121 on null/throw lambdas), so the whole overload is now
net9.0+. net8.0 keeps ReturnsAsync, which already hands the task back
as-is and covers the timeout-race case from the issue.

Not reachable by an in-repo test: Directory.Build.props adds Polyfill to
every project here, so our own net8.0 build resolves the attribute that an
external consumer would not.
// See issue #6495.
writer.AppendLine();
writer.AppendLine("#if NET9_0_OR_GREATER");
writer.AppendLine("/// <summary>Configure a typed computed async return value using the actual method parameters. The returned task is handed back as-is, so an async factory stays pending until it completes.</summary>");

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.

P1 Async Returns remains unavailable on net8

When a .NET 8 consumer configures an async member with Returns(async (...) => ...), this conditional removes both new async-factory overload forms from the generated mock, so the lambda is still considered against the synchronous factory overload and compilation fails with CS4010.

@claude

claude Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Code review

Follow-up on the two prior reviews on this PR: the only change since my last comment is a51c7ee ("gate the async Returns alias to net9.0+"), which is a correct and well-justified fix.

What changed and why it's right:

  • [OverloadResolutionPriority(-1)] is emitted into the consumer's generated source, not TUnit's own build. OverloadResolutionPriorityAttribute only ships in the BCL on net9.0+; TUnit.Mocks resolves it internally via its Polyfill package reference, but that package doesn't flow downstream to a consumer's own net8.0 compilation. My previous "built on net8.0: 0 errors" verification was against TUnit.Mocks.Tests, which itself pulls in Polyfill via Directory.Build.props — not representative of an external net8.0 consumer, so that check didn't actually cover this case. This commit's finding is correct and the fix (#if NET9_0_OR_GREATER around both the parameterless and typed-parameter Returns aliases) matches the pattern already used for the other framework-operation polyfills earlier in the same file.
  • The trade-off is explicit and reasonable: net8.0 consumers lose the new Returns(Func<Task<T>>) alias but keep ReturnsAsync, which already hands the task back as-is and covers the original timeout-race scenario from [TUnit.Mocks] No way to make an async member's .Returns() genuinely pending (only synchronous Func<T> supported) - breaks timeout-race tests #6495. That's a real capability gap for net8.0 (same one Greptile flagged on the first pass), but it's now a deliberate, documented trade-off rather than a silent compile break — the right call given the alias is inseparable from the priority attribute.
  • Snapshot and test changes are consistent with the source change across all affected fixtures — #if NET9_0_OR_GREATER added in matching locations in every .verified.txt, and the corresponding test cases in Issue6495Tests.cs are gated the same way. No stray .received.txt files.

No remaining issues. Good to merge as far as all three reviews (Greptile's and my two) go.

@thomhurst
thomhurst merged commit 800828a into main Jul 28, 2026
15 checks passed
@thomhurst
thomhurst deleted the fix/6495-async-returns-factory branch July 28, 2026 10:58
thomhurst added a commit that referenced this pull request Jul 28, 2026
…factories

Rebase conflict resolution: #6503 added the Func<Task<T>> Returns
overloads to the same generated call-wrapper types this branch moved
into TUnit.Mocks.Generated. Regenerated rather than hand-merged.
thomhurst added a commit that referenced this pull request Jul 28, 2026
…ce (#6504)

* fix(mocks): emit the setup surface into the globally-imported namespace

Setup, verify and event extensions were generated beside the mocked type.
An extension member is only visible when its namespace is imported, so
mocking a type whose namespace the test had not `using`'d compiled the
Mock() call — that entry point already lives in TUnit.Mocks — but hid
every member setup behind CS1061, which reads as "this member isn't
supported". Reported as a name collision between two same-named ICluster
interfaces; it reproduces with a single mock and no collision involved.

Emit the extension classes and the call wrappers they return into
TUnit.Mocks.Generated, which TUnit.Mocks.targets adds as a global using.
Their names are derived from the fully qualified type name, so types
sharing a short name across namespaces stay distinct. The impl, factory
and wrapper types keep their current placement, as do the out/ref setter
delegates the impl references by short name.

Fixes #6494

* test(mocks): snapshot the non-span ref-struct out/ref delegate emission

Review nit: no snapshot covered the one construct that emits a
namespace-scoped delegate, which is precisely the path this PR split out
of the members loop. The new fixture pins both halves — the delegates stay
in the mocked type's namespace (the impl references them by short name)
while the setup surface moves to TUnit.Mocks.Generated.

* test(mocks): refresh snapshots after rebasing onto the async Returns factories

Rebase conflict resolution: #6503 added the Func<Task<T>> Returns
overloads to the same generated call-wrapper types this branch moved
into TUnit.Mocks.Generated. Regenerated rather than hand-merged.
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 — a51c7eee Deployed Jul 28, 2026 by thomhurst via modularpipeline (macos-latest) #18677
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.

[TUnit.Mocks] No way to make an async member's .Returns() genuinely pending (only synchronous Func<T> supported) - breaks timeout-race tests

1 participant