Skip to content

feat(playwright): add TUnitPlaywrightSettings defaults#5859

Merged
thomhurst merged 4 commits into
mainfrom
feat/playwright-settings
May 8, 2026
Merged

feat(playwright): add TUnitPlaywrightSettings defaults#5859
thomhurst merged 4 commits into
mainfrom
feat/playwright-settings

Conversation

@thomhurst
Copy link
Copy Markdown
Owner

Summary

  • Add TUnitPlaywrightSettings with DefaultHeadless and DefaultIgnoreHttpsErrors knobs, exposed via a TUnitSettings.PlaywrightSettings extension property
  • Wire defaults into BrowserFixture.GetLaunchOptions, BrowserTest ctor, ContextFixture.GetContextOptions, and ContextTest.ContextOptions

Test plan

  • dotnet build TUnit.Playwright
  • Verify Playwright sample tests still launch with expected headless/HTTPS behavior

…eHTTPSErrors defaults

Introduces PlaywrightSettingsExtensions exposing TUnitPlaywrightSettings via
TUnitSettings extension property, and wires DefaultHeadless / DefaultIgnoreHttpsErrors
into BrowserFixture, BrowserTest, ContextFixture, and ContextTest defaults.
@codacy-production
Copy link
Copy Markdown

codacy-production Bot commented May 8, 2026

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity

Metric Results
Complexity 0

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.

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

Code Review

The feature intent is clear and useful, but there's one breaking change and an architectural inconsistency worth addressing.


🔴 Breaking behavior change: DefaultHeadless defaults to false

File: TUnit.Playwright/PlaywrightSettings.cs

public bool DefaultHeadless { get; set; }  // bool default = false

Playwright's runtime default for Headless is true. Previously, GetLaunchOptions() => new() left Headless unset (null), so Playwright launched headlessly by default. After this PR, every BrowserFixture and BrowserTest will inject Headless = false (headed mode) unless users explicitly opt out.

This will break CI pipelines where tests ran headlessly without explicit configuration — a significant silent regression.

Fix: Either default to true to match Playwright's own default, or use bool? so null means "let Playwright decide":

public class TUnitPlaywrightSettings
{
    public bool? Headless { get; set; }       // null = use Playwright's default (true)
    public bool? IgnoreHttpsErrors { get; set; }
}

Then in GetLaunchOptions():

protected virtual BrowserTypeLaunchOptions GetLaunchOptions() => new()
{
    Headless = TUnitSettings.Default.PlaywrightSettings.Headless,  // null is valid; Playwright treats null as true
};

This preserves existing behaviour for users who haven't configured anything, and is explicit about intent.


🟡 Architectural mismatch with TUnitSettings pattern

All other settings sections (Timeouts, Parallelism, Display, Execution) are instance-owned properties of TUnitSettings. PlaywrightSettings is instead backed by a global static readonly singleton in PlaywrightSettingsExtensions, which isn't per-instance and bypasses the settings hierarchy.

Current (inconsistent):

// PlaywrightSettings.cs
public static class PlaywrightSettingsExtensions
{
    internal static readonly TUnitPlaywrightSettings Default = new();  // global singleton

    extension(TUnitSettings settings) {
        public TUnitPlaywrightSettings PlaywrightSettings => Default;  // always same object regardless of 'settings'
    }
}

// BrowserFixture.cs
Headless = PlaywrightSettingsExtensions.Default.DefaultHeadless,  // bypasses TUnitSettings entirely

Better (consistent with existing pattern):

// In TUnitSettings.cs — add PlaywrightSettings as a direct property like Timeouts/Parallelism
public TUnitPlaywrightSettings PlaywrightSettings { get; } = new();

// TUnitPlaywrightSettings.cs — give it an internal ctor like the other settings classes
public sealed class TUnitPlaywrightSettings
{
    internal TUnitPlaywrightSettings() { }
    public bool? Headless { get; set; }
    public bool? IgnoreHttpsErrors { get; set; }
}

// BrowserFixture.cs — use the canonical path through TUnitSettings
Headless = TUnitSettings.Default.PlaywrightSettings.Headless,

This would mean TUnitSettings needs a dependency on TUnit.Playwright, which isn't ideal since TUnit.Core shouldn't know about Playwright. The extension approach does solve that, but the static-singleton backing is what creates the inconsistency.

An alternative that keeps the decoupling: keep the extension property, but have it return an instance stored on the TUnitSettings instance using ConditionalWeakTable<TUnitSettings, TUnitPlaywrightSettings> or similar, so the settings are properly scoped. That said, given there is only ever one TUnitSettings.Default in practice, the current approach does function correctly — it's more a matter of conceptual cleanliness.


🟡 Naming: Default prefix is redundant

DefaultHeadless and DefaultIgnoreHttpsErrors inside a class called TUnitPlaywrightSettings (which already represents defaults) could just be Headless and IgnoreHttpsErrors. Compare: settings.Timeouts.DefaultTestTimeout — that one says Default because there are non-default timeouts on the same object. Here everything is a default.


✅ What's good

  • Wiring the settings into both BrowserFixture and BrowserTest code paths is correct — they both need consistent options.
  • ContextFixture and ContextTest are both updated, keeping the two paths in sync.
  • Public API snapshot files are updated, which is exactly right.
  • The C# 14 extension block for cross-assembly settings extension is a smart way to avoid a circular dependency between TUnit.Core and TUnit.Playwright.

The main ask is to fix the DefaultHeadless = false regression before merging.

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

Code Review — Follow-up on Fix commit

The previous concerns have been partially addressed. Here's where things stand.


✅ Breaking change fixed

DefaultHeadless is now bool? — passing null to BrowserTypeLaunchOptions.Headless lets Playwright use its own default (true). That regression is resolved.


🔴 Snapshots are stale after the Fix commit

Commit e97914f1e8 changed the public API surface of TUnitPlaywrightSettings, but the .verified.txt snapshot files were not regenerated. The current snapshots still show the pre-fix API:

Snapshot says:

public class TUnitPlaywrightSettings
{
    public TUnitPlaywrightSettings() { }    // ctor was public before Fix
    public bool DefaultHeadless { get; set; }  // bool, not bool?
    ...
}

Actual code after Fix:

public class TUnitPlaywrightSettings
{
    internal TUnitPlaywrightSettings() { }   // now internal
    public bool? DefaultHeadless { get; set; } = null;  // now bool?
    ...
}

The snapshot tests will fail on CI. Regenerate them from the TUnit.PublicAPI test project:

cd TUnit.PublicAPI
dotnet test
# accept received files:
for f in *.received.txt; do mv "$f" "${f%.received.txt}.verified.txt"; done
git add *.verified.txt

🟡 DefaultIgnoreHttpsErrors inconsistency

DefaultHeadless was correctly made bool? so unset means "use Playwright's default." DefaultIgnoreHttpsErrors is still bool (defaults to false). While false happens to match the Playwright default, the asymmetry is confusing — one says "I don't care, use your default" and the other says "I explicitly want false." Consider making it bool? too for consistency:

public bool? DefaultIgnoreHttpsErrors { get; set; }

Both ContextFixture and ContextTest would then pass it as-is, since BrowserNewContextOptions.IgnoreHTTPSErrors is also bool?.


🟡 Naming: Default prefix is still redundant

DefaultHeadless / DefaultIgnoreHttpsErrors inside a class named TUnitPlaywrightSettings is repetitive — everything on the class is already a default. The equivalent in TUnitTimeoutSettings is DefaultTestTimeout, but that object also has non-default counterparts. Here, all properties represent defaults.

Consider renaming to Headless and IgnoreHttpsErrors before this ships, since renaming after a public release is a breaking change.


✅ Architectural improvement noted

Moving Default from PlaywrightSettingsExtensions into TUnitPlaywrightSettings itself is cleaner. The extension now has a single responsibility (providing the cross-assembly extension property), and the singleton lives with the type it belongs to.


Summary: The breaking-change regression is fixed — good. The remaining blocker is the stale snapshot files. The bool? consistency for DefaultIgnoreHttpsErrors and the naming question are worth resolving before the first public release of this API, since both would be breaking changes to fix later.

…Settings.Default

The earlier Fix commit moved Default off PlaywrightSettingsExtensions but left
the four consumers referencing the old location. Repoint them, make
DefaultIgnoreHttpsErrors nullable to match DefaultHeadless, and accept the
Playwright public-API snapshots reflecting the now-internal constructor and
nullable defaults.
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

Code Review — Round 3

All three issues from the previous reviews have been addressed. Here's the current status:

✅ All prior blockers resolved

Issue Status
DefaultHeadless was non-nullable bool (breaking CI) Fixed — now bool?
DefaultIgnoreHttpsErrors was non-nullable bool Fixed — now bool?
Stale snapshot files after the fix commit Fixed — snapshots now show bool? and no public constructor

The snapshots correctly omit the constructor (because it's internal) and show both properties as bool? — exactly right.


🟡 Remaining: Default prefix in property names (pre-existing from both prior reviews)

DefaultHeadless and DefaultIgnoreHttpsErrors still carry the Default prefix, which is redundant given the class name is TUnitPlaywrightSettings (every property here is already a default). This was flagged in both round 1 and round 2 without being acted on.

This matters because it's a public API — renaming after release is a breaking change. Compare how TimeoutSettings handles it: it uses DefaultTestTimeout etc. because the same object also holds non-default counterparts. TUnitPlaywrightSettings has no such need, so the prefix adds noise without adding signal.

The cleanest fix before this ships:

public bool? Headless { get; set; }
public bool? IgnoreHttpsErrors { get; set; }

If you prefer to keep DefaultHeadless to signal "this is a run-wide default, not a per-test override," that's a valid call — but it should be a conscious decision rather than carried over by accident. Either way, the implementation is solid and the regression is fixed.

intellitect-bot pushed a commit to IntelliTect/EssentialCSharp.Web that referenced this pull request May 18, 2026
Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.40.5 to
1.45.0.

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

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

## 1.45.0

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

## What's Changed
### Other Changes
* fix(generator): place CallerArgumentExpression before params in
[GenerateAssertion] emit by @​JohnVerheij in
thomhurst/TUnit#5940
* fix(sourcegen): drop covariant TActual when [GenerateAssertion] method
has its own type parameters by @​JohnVerheij in
thomhurst/TUnit#5935
* feat(assertions): add CancellationToken overload to WaitsFor and
Eventually by @​JohnVerheij in
thomhurst/TUnit#5938
* fix(html-report): extract categories using MTP Key=name convention by
@​thomhurst in thomhurst/TUnit#5946
* feat(html-report): rewrite as split-pane design template by
@​thomhurst in thomhurst/TUnit#5947
### Dependencies
* chore(deps): update microsoft.testing to 2.2.3 by @​thomhurst in
thomhurst/TUnit#5927
* chore(deps): update mstest to 4.2.3 by @​thomhurst in
thomhurst/TUnit#5928
* chore(deps): update tunit to 1.44.39 by @​thomhurst in
thomhurst/TUnit#5929
* chore(deps): update aspire to 13.3.3 by @​thomhurst in
thomhurst/TUnit#5933
* chore(deps): update dependency dompurify to v3.4.4 by @​thomhurst in
thomhurst/TUnit#5944
* chore(deps): update dependency qs to v6.15.2 by @​thomhurst in
thomhurst/TUnit#5941


**Full Changelog**:
thomhurst/TUnit@v1.44.39...v1.45.0

## 1.44.39

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

## What's Changed
### Other Changes
* fix(tests): retry trx read to dodge MTP post-exit flush race on
Windows by @​thomhurst in thomhurst/TUnit#5888
* fix(pipeline): timeout + retry InstallPlaywrightModule so a hung
download fails fast by @​thomhurst in
thomhurst/TUnit#5889
* fix(otel): require two consecutive idle windows in DrainAsync to catch
in-transit POSTs by @​thomhurst in
thomhurst/TUnit#5890
* test(assertions): drop flaky wall-clock upper bound on WaitsFor
timeout test by @​thomhurst in
thomhurst/TUnit#5886
* fix(sourcegen): drop spurious ')' in MethodAssertionGenerator
Task<bool> emit by @​JohnVerheij in
thomhurst/TUnit#5920
* fix(sourcegen): merge generic parameter lists in [AssertionExtension]
emit by @​JohnVerheij in thomhurst/TUnit#5921
* fix(aspnetcore): scope correlation processor per-factory to stop
cross-factory tag leak by @​thomhurst in
thomhurst/TUnit#5891
* Changed FSharp.Core version to 10.1.300 by @​licon4812 in
thomhurst/TUnit#5909
* feat(mocks): add Mock.HttpClientFactory() helper by @​thomhurst in
thomhurst/TUnit#5894
* Harden WaitsFor timeout test by @​thomhurst in
thomhurst/TUnit#5926
* fix(sourcegen): emit `default` literal for value-type assertion
parameters by @​JohnVerheij in
thomhurst/TUnit#5919
### Dependencies
* chore(deps): update dependency nunit to 4.6.0 by @​thomhurst in
thomhurst/TUnit#5826
* chore(deps): update tunit to 1.44.0 by @​thomhurst in
thomhurst/TUnit#5882
* chore(deps): update dependency mockolate to 3.2.0 by @​thomhurst in
thomhurst/TUnit#5892
* chore(deps): update dependency yaml to v2.9.0 by @​thomhurst in
thomhurst/TUnit#5887
* chore(deps): update dependency nuget.protocol to 7.6.0 by @​thomhurst
in thomhurst/TUnit#5897
* chore(deps): update dependency microsoft.entityframeworkcore to 10.0.8
by @​thomhurst in thomhurst/TUnit#5898
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.300 by @​thomhurst in
thomhurst/TUnit#5899
* chore(deps): update microsoft.extensions by @​thomhurst in
thomhurst/TUnit#5905
* chore(deps): update microsoft.aspnetcore to 10.0.8 by @​thomhurst in
thomhurst/TUnit#5904
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.300 by
@​thomhurst in thomhurst/TUnit#5902
* chore(deps): update aspire to 13.3.1 by @​thomhurst in
thomhurst/TUnit#5900
* chore(deps): update dependency system.commandline to 2.0.8 by
@​thomhurst in thomhurst/TUnit#5903
* chore(deps): update dependency azure.storage.blobs to 12.28.0 by
@​thomhurst in thomhurst/TUnit#5910
* chore(deps): update dependency dotnet-sdk to v10.0.300 by @​thomhurst
in thomhurst/TUnit#5901
* chore(deps): update dependency stackexchange.redis to 2.13.1 by
@​thomhurst in thomhurst/TUnit#5906
* chore(deps): update aspire to 13.3.2 by @​thomhurst in
thomhurst/TUnit#5924
* chore(deps): bump mermaid from 11.12.2 to 11.15.0 in /docs by
@​dependabot[bot] in thomhurst/TUnit#5893
* chore(deps): update dependency streamjsonrpc to 2.24.92 by @​thomhurst
in thomhurst/TUnit#5915
* chore(deps): update dependency dompurify to v3.4.3 by @​thomhurst in
thomhurst/TUnit#5913
* chore(deps): update microsoft.build to 18.6.3 by @​thomhurst in
thomhurst/TUnit#5914


**Full Changelog**:
thomhurst/TUnit@v1.44.0...v1.44.39

## 1.44.0

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

## What's Changed
### Other Changes
* Generated mocks live in the same namespace as the mocked type by
@​thomhurst in thomhurst/TUnit#5870
* Show multi-step test spans in class timeline, align report ordering
with execution, and correlate linked OTel activities by @​Copilot in
thomhurst/TUnit#5847
* fix: don't leak RUC onto Should-style comparer overloads (#​5857) by
@​thomhurst in thomhurst/TUnit#5873
* Fix culture-dependent timestamp in HTML test report (#​5868) by
@​thomhurst in thomhurst/TUnit#5872
* fix(mocks-http): auto-prepend `/` to partial endpoint paths (#​5838)
by @​thomhurst in thomhurst/TUnit#5874
* Replace Report.ExpandClassTimeline with [ClassTimeline] attribute by
@​thomhurst in thomhurst/TUnit#5875
* feat(assertions): make ShouldAssertion<T> implement IAssertion
(#​5824) by @​thomhurst in thomhurst/TUnit#5876
* feat(mocks): support non-span ref struct out/ref params by @​thomhurst
in thomhurst/TUnit#5878
* fix(core): fill optional params when invoking MethodDataSource via
reflection by @​thomhurst in
thomhurst/TUnit#5880
* Mocks: structural fix for Mock<T> / mocked-member name collisions by
@​thomhurst in thomhurst/TUnit#5881
* chore(mocks): promote TUnit.Mocks packages to stable by @​thomhurst in
thomhurst/TUnit#5877
### Dependencies
* chore(deps): update tunit to 1.43.41 by @​thomhurst in
thomhurst/TUnit#5863
* chore(deps): update dependency tunit.assertions.fsharp to 1.43.41 by
@​thomhurst in thomhurst/TUnit#5865
* chore(deps): bump @​babel/plugin-transform-modules-systemjs from
7.28.5 to 7.29.4 in /docs by @​dependabot[bot] in
thomhurst/TUnit#5867
* chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /docs by
@​dependabot[bot] in thomhurst/TUnit#5862


**Full Changelog**:
thomhurst/TUnit@v1.43.41...v1.44.0

## 1.43.41

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

## What's Changed
### Other Changes
* feat(playwright): expose default Context/Launch options on settings by
@​thomhurst in thomhurst/TUnit#5861
* fix(hooks): resolve TestDiscovery hook context type by attribute kind,
not method name by @​thomhurst in
thomhurst/TUnit#5860
### Dependencies
* chore(deps): update tunit to 1.43.38 by @​thomhurst in
thomhurst/TUnit#5858


**Full Changelog**:
thomhurst/TUnit@v1.43.38...v1.43.41

## 1.43.38

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

## What's Changed
### Other Changes
* feat(playwright): add TUnitPlaywrightSettings defaults by @​thomhurst
in thomhurst/TUnit#5859


**Full Changelog**:
thomhurst/TUnit@v1.43.37...v1.43.38

## 1.43.37

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

## What's Changed
### Other Changes
* docs: clarify MethodDataSourceAttribute.Factory is
source-generator-managed by @​Copilot in
thomhurst/TUnit#5835
* fix(assertions): skip ref-struct members in IsEquivalentTo (#​5841) by
@​thomhurst in thomhurst/TUnit#5842
* feat(playwright): add composition-based fixtures by @​thomhurst in
thomhurst/TUnit#5840
### Dependencies
* chore(deps): update tunit to 1.43.11 by @​thomhurst in
thomhurst/TUnit#5821
* chore(deps): update dependency polyfill to 10.4.0 by @​thomhurst in
thomhurst/TUnit#5830
* chore(deps): update dependency polyfill to 10.4.0 by @​thomhurst in
thomhurst/TUnit#5829
* chore(deps): update react to ^19.2.6 by @​thomhurst in
thomhurst/TUnit#5839
* chore(deps): update dependency polyfill to 10.5.0 by @​thomhurst in
thomhurst/TUnit#5848
* chore(deps): update dependency polyfill to 10.5.0 by @​thomhurst in
thomhurst/TUnit#5849
* chore(deps): update aspire to 13.3.0 by @​thomhurst in
thomhurst/TUnit#5851
* chore(deps): update dependency brace-expansion to v5.0.6 by
@​thomhurst in thomhurst/TUnit#5853
* chore(deps): update dependency polyfill to 10.5.1 by @​thomhurst in
thomhurst/TUnit#5854
* chore(deps): update dependency polyfill to 10.5.1 by @​thomhurst in
thomhurst/TUnit#5855
* chore(deps): update verify to 31.16.3 by @​thomhurst in
thomhurst/TUnit#5856


**Full Changelog**:
thomhurst/TUnit@v1.43.11...v1.43.37

## 1.43.11

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

## What's Changed
### Other Changes
* perf(engine): skip execution ledger for independent tests by
@​thomhurst in thomhurst/TUnit#5813
* perf(engine): skip tracked object graph rediscovery by @​thomhurst in
thomhurst/TUnit#5814
* fix: suppress XML doc warnings in generated sources by @​mvanhorn in
thomhurst/TUnit#5797
* Fix xUnit Throws migration docs by @​thomhurst in
thomhurst/TUnit#5819
* Fix Should optional overload generation by @​thomhurst in
thomhurst/TUnit#5820
### Dependencies
* chore(deps): update dependency mockolate to 3.1.0 by @​thomhurst in
thomhurst/TUnit#5811
* chore(deps): update tunit to 1.43.2 by @​thomhurst in
thomhurst/TUnit#5809
* chore(deps): update dependency nunit.analyzers to 4.13.0 by
@​thomhurst in thomhurst/TUnit#5815
* chore(deps): update dependency yaml to v2.8.4 by @​thomhurst in
thomhurst/TUnit#5812

## New Contributors
* @​mvanhorn made their first contribution in
thomhurst/TUnit#5797

**Full Changelog**:
thomhurst/TUnit@v1.43.2...v1.43.11

## 1.43.2

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

## What's Changed
### Other Changes
* fix(assertions): emit auto-generated header in
MethodAssertionGenerator output by @​JohnVerheij in
thomhurst/TUnit#5796
* fix(engine): enforce runtime exclusion for global [NotInParallel]
(#​5800) by @​thomhurst in thomhurst/TUnit#5805
* feat(mocks): add Arg.AnyArgs() shortcut for setup/verify by
@​thomhurst in thomhurst/TUnit#5792
* fix(should): add specialized assertion sources by @​thomhurst in
thomhurst/TUnit#5806
### Dependencies
* chore(deps): update tunit to 1.41.0 by @​thomhurst in
thomhurst/TUnit#5789
* chore(deps): update microsoft.testing to 2.2.2 by @​thomhurst in
thomhurst/TUnit#5793
* chore(deps): update mstest to 4.2.2 by @​thomhurst in
thomhurst/TUnit#5794
* chore(deps): update docusaurus by @​thomhurst in
thomhurst/TUnit#5798
* chore(deps): update dependency dompurify to v3.4.2 by @​thomhurst in
thomhurst/TUnit#5799
* chore(deps): update dependency mockolate to v3 by @​thomhurst in
thomhurst/TUnit#5801


**Full Changelog**:
thomhurst/TUnit@v1.41.0...v1.43.2

## 1.41.0

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

## TUnit Should() Assertions (beta)
This versions comes with a beta version of TUnit.Assertions.Should -
meaning that you can do:
`myCode.Should().BeEqualTo(fluentShouldSyntax);`

For more information see the docs:
https://tunit.dev/docs/assertions/should-syntax

## What's Changed
### Other Changes
* fix(reporters): unwrap TestFailedException for failure grouping by
@​thomhurst in thomhurst/TUnit#5776
* Fix item-at Satisfies source typing by @​thomhurst in
thomhurst/TUnit#5764
* ci(docs): add link-check automation and tighten Docusaurus strictness
by @​thomhurst in thomhurst/TUnit#5779
* feat: add TUnit.Assertions.Should package by @​thomhurst in
thomhurst/TUnit#5785
### Dependencies
* chore(deps): update tunit to 1.40.10 by @​thomhurst in
thomhurst/TUnit#5775
* chore(deps): update actions/cache action to v5 by @​thomhurst in
thomhurst/TUnit#5780
* chore(deps): update dependency microsoft.net.test.sdk to 18.5.1 by
@​thomhurst in thomhurst/TUnit#5784


**Full Changelog**:
thomhurst/TUnit@v1.40.10...v1.41.0

## 1.40.10

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

## What's Changed
### Other Changes
* refactor(opentelemetry): depend on TUnit.Core instead of umbrella
TUnit by @​thomhurst in thomhurst/TUnit#5774
### Dependencies
* chore(deps): update tunit to 1.40.5 by @​thomhurst in
thomhurst/TUnit#5769


**Full Changelog**:
thomhurst/TUnit@v1.40.5...v1.40.10

Commits viewable in [compare
view](thomhurst/TUnit@v1.40.5...v1.45.0).
</details>

Updated [TUnit.AspNetCore](https://github.com/thomhurst/TUnit) from
1.40.5 to 1.45.0.

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

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

## 1.45.0

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

## What's Changed
### Other Changes
* fix(generator): place CallerArgumentExpression before params in
[GenerateAssertion] emit by @​JohnVerheij in
thomhurst/TUnit#5940
* fix(sourcegen): drop covariant TActual when [GenerateAssertion] method
has its own type parameters by @​JohnVerheij in
thomhurst/TUnit#5935
* feat(assertions): add CancellationToken overload to WaitsFor and
Eventually by @​JohnVerheij in
thomhurst/TUnit#5938
* fix(html-report): extract categories using MTP Key=name convention by
@​thomhurst in thomhurst/TUnit#5946
* feat(html-report): rewrite as split-pane design template by
@​thomhurst in thomhurst/TUnit#5947
### Dependencies
* chore(deps): update microsoft.testing to 2.2.3 by @​thomhurst in
thomhurst/TUnit#5927
* chore(deps): update mstest to 4.2.3 by @​thomhurst in
thomhurst/TUnit#5928
* chore(deps): update tunit to 1.44.39 by @​thomhurst in
thomhurst/TUnit#5929
* chore(deps): update aspire to 13.3.3 by @​thomhurst in
thomhurst/TUnit#5933
* chore(deps): update dependency dompurify to v3.4.4 by @​thomhurst in
thomhurst/TUnit#5944
* chore(deps): update dependency qs to v6.15.2 by @​thomhurst in
thomhurst/TUnit#5941


**Full Changelog**:
thomhurst/TUnit@v1.44.39...v1.45.0

## 1.44.39

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

## What's Changed
### Other Changes
* fix(tests): retry trx read to dodge MTP post-exit flush race on
Windows by @​thomhurst in thomhurst/TUnit#5888
* fix(pipeline): timeout + retry InstallPlaywrightModule so a hung
download fails fast by @​thomhurst in
thomhurst/TUnit#5889
* fix(otel): require two consecutive idle windows in DrainAsync to catch
in-transit POSTs by @​thomhurst in
thomhurst/TUnit#5890
* test(assertions): drop flaky wall-clock upper bound on WaitsFor
timeout test by @​thomhurst in
thomhurst/TUnit#5886
* fix(sourcegen): drop spurious ')' in MethodAssertionGenerator
Task<bool> emit by @​JohnVerheij in
thomhurst/TUnit#5920
* fix(sourcegen): merge generic parameter lists in [AssertionExtension]
emit by @​JohnVerheij in thomhurst/TUnit#5921
* fix(aspnetcore): scope correlation processor per-factory to stop
cross-factory tag leak by @​thomhurst in
thomhurst/TUnit#5891
* Changed FSharp.Core version to 10.1.300 by @​licon4812 in
thomhurst/TUnit#5909
* feat(mocks): add Mock.HttpClientFactory() helper by @​thomhurst in
thomhurst/TUnit#5894
* Harden WaitsFor timeout test by @​thomhurst in
thomhurst/TUnit#5926
* fix(sourcegen): emit `default` literal for value-type assertion
parameters by @​JohnVerheij in
thomhurst/TUnit#5919
### Dependencies
* chore(deps): update dependency nunit to 4.6.0 by @​thomhurst in
thomhurst/TUnit#5826
* chore(deps): update tunit to 1.44.0 by @​thomhurst in
thomhurst/TUnit#5882
* chore(deps): update dependency mockolate to 3.2.0 by @​thomhurst in
thomhurst/TUnit#5892
* chore(deps): update dependency yaml to v2.9.0 by @​thomhurst in
thomhurst/TUnit#5887
* chore(deps): update dependency nuget.protocol to 7.6.0 by @​thomhurst
in thomhurst/TUnit#5897
* chore(deps): update dependency microsoft.entityframeworkcore to 10.0.8
by @​thomhurst in thomhurst/TUnit#5898
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.300 by @​thomhurst in
thomhurst/TUnit#5899
* chore(deps): update microsoft.extensions by @​thomhurst in
thomhurst/TUnit#5905
* chore(deps): update microsoft.aspnetcore to 10.0.8 by @​thomhurst in
thomhurst/TUnit#5904
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.300 by
@​thomhurst in thomhurst/TUnit#5902
* chore(deps): update aspire to 13.3.1 by @​thomhurst in
thomhurst/TUnit#5900
* chore(deps): update dependency system.commandline to 2.0.8 by
@​thomhurst in thomhurst/TUnit#5903
* chore(deps): update dependency azure.storage.blobs to 12.28.0 by
@​thomhurst in thomhurst/TUnit#5910
* chore(deps): update dependency dotnet-sdk to v10.0.300 by @​thomhurst
in thomhurst/TUnit#5901
* chore(deps): update dependency stackexchange.redis to 2.13.1 by
@​thomhurst in thomhurst/TUnit#5906
* chore(deps): update aspire to 13.3.2 by @​thomhurst in
thomhurst/TUnit#5924
* chore(deps): bump mermaid from 11.12.2 to 11.15.0 in /docs by
@​dependabot[bot] in thomhurst/TUnit#5893
* chore(deps): update dependency streamjsonrpc to 2.24.92 by @​thomhurst
in thomhurst/TUnit#5915
* chore(deps): update dependency dompurify to v3.4.3 by @​thomhurst in
thomhurst/TUnit#5913
* chore(deps): update microsoft.build to 18.6.3 by @​thomhurst in
thomhurst/TUnit#5914


**Full Changelog**:
thomhurst/TUnit@v1.44.0...v1.44.39

## 1.44.0

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

## What's Changed
### Other Changes
* Generated mocks live in the same namespace as the mocked type by
@​thomhurst in thomhurst/TUnit#5870
* Show multi-step test spans in class timeline, align report ordering
with execution, and correlate linked OTel activities by @​Copilot in
thomhurst/TUnit#5847
* fix: don't leak RUC onto Should-style comparer overloads (#​5857) by
@​thomhurst in thomhurst/TUnit#5873
* Fix culture-dependent timestamp in HTML test report (#​5868) by
@​thomhurst in thomhurst/TUnit#5872
* fix(mocks-http): auto-prepend `/` to partial endpoint paths (#​5838)
by @​thomhurst in thomhurst/TUnit#5874
* Replace Report.ExpandClassTimeline with [ClassTimeline] attribute by
@​thomhurst in thomhurst/TUnit#5875
* feat(assertions): make ShouldAssertion<T> implement IAssertion
(#​5824) by @​thomhurst in thomhurst/TUnit#5876
* feat(mocks): support non-span ref struct out/ref params by @​thomhurst
in thomhurst/TUnit#5878
* fix(core): fill optional params when invoking MethodDataSource via
reflection by @​thomhurst in
thomhurst/TUnit#5880
* Mocks: structural fix for Mock<T> / mocked-member name collisions by
@​thomhurst in thomhurst/TUnit#5881
* chore(mocks): promote TUnit.Mocks packages to stable by @​thomhurst in
thomhurst/TUnit#5877
### Dependencies
* chore(deps): update tunit to 1.43.41 by @​thomhurst in
thomhurst/TUnit#5863
* chore(deps): update dependency tunit.assertions.fsharp to 1.43.41 by
@​thomhurst in thomhurst/TUnit#5865
* chore(deps): bump @​babel/plugin-transform-modules-systemjs from
7.28.5 to 7.29.4 in /docs by @​dependabot[bot] in
thomhurst/TUnit#5867
* chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /docs by
@​dependabot[bot] in thomhurst/TUnit#5862


**Full Changelog**:
thomhurst/TUnit@v1.43.41...v1.44.0

## 1.43.41

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

## What's Changed
### Other Changes
* feat(playwright): expose default Context/Launch options on settings by
@​thomhurst in thomhurst/TUnit#5861
* fix(hooks): resolve TestDiscovery hook context type by attribute kind,
not method name by @​thomhurst in
thomhurst/TUnit#5860
### Dependencies
* chore(deps): update tunit to 1.43.38 by @​thomhurst in
thomhurst/TUnit#5858


**Full Changelog**:
thomhurst/TUnit@v1.43.38...v1.43.41

## 1.43.38

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

## What's Changed
### Other Changes
* feat(playwright): add TUnitPlaywrightSettings defaults by @​thomhurst
in thomhurst/TUnit#5859


**Full Changelog**:
thomhurst/TUnit@v1.43.37...v1.43.38

## 1.43.37

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

## What's Changed
### Other Changes
* docs: clarify MethodDataSourceAttribute.Factory is
source-generator-managed by @​Copilot in
thomhurst/TUnit#5835
* fix(assertions): skip ref-struct members in IsEquivalentTo (#​5841) by
@​thomhurst in thomhurst/TUnit#5842
* feat(playwright): add composition-based fixtures by @​thomhurst in
thomhurst/TUnit#5840
### Dependencies
* chore(deps): update tunit to 1.43.11 by @​thomhurst in
thomhurst/TUnit#5821
* chore(deps): update dependency polyfill to 10.4.0 by @​thomhurst in
thomhurst/TUnit#5830
* chore(deps): update dependency polyfill to 10.4.0 by @​thomhurst in
thomhurst/TUnit#5829
* chore(deps): update react to ^19.2.6 by @​thomhurst in
thomhurst/TUnit#5839
* chore(deps): update dependency polyfill to 10.5.0 by @​thomhurst in
thomhurst/TUnit#5848
* chore(deps): update dependency polyfill to 10.5.0 by @​thomhurst in
thomhurst/TUnit#5849
* chore(deps): update aspire to 13.3.0 by @​thomhurst in
thomhurst/TUnit#5851
* chore(deps): update dependency brace-expansion to v5.0.6 by
@​thomhurst in thomhurst/TUnit#5853
* chore(deps): update dependency polyfill to 10.5.1 by @​thomhurst in
thomhurst/TUnit#5854
* chore(deps): update dependency polyfill to 10.5.1 by @​thomhurst in
thomhurst/TUnit#5855
* chore(deps): update verify to 31.16.3 by @​thomhurst in
thomhurst/TUnit#5856


**Full Changelog**:
thomhurst/TUnit@v1.43.11...v1.43.37

## 1.43.11

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

## What's Changed
### Other Changes
* perf(engine): skip execution ledger for independent tests by
@​thomhurst in thomhurst/TUnit#5813
* perf(engine): skip tracked object graph rediscovery by @​thomhurst in
thomhurst/TUnit#5814
* fix: suppress XML doc warnings in generated sources by @​mvanhorn in
thomhurst/TUnit#5797
* Fix xUnit Throws migration docs by @​thomhurst in
thomhurst/TUnit#5819
* Fix Should optional overload generation by @​thomhurst in
thomhurst/TUnit#5820
### Dependencies
* chore(deps): update dependency mockolate to 3.1.0 by @​thomhurst in
thomhurst/TUnit#5811
* chore(deps): update tunit to 1.43.2 by @​thomhurst in
thomhurst/TUnit#5809
* chore(deps): update dependency nunit.analyzers to 4.13.0 by
@​thomhurst in thomhurst/TUnit#5815
* chore(deps): update dependency yaml to v2.8.4 by @​thomhurst in
thomhurst/TUnit#5812

## New Contributors
* @​mvanhorn made their first contribution in
thomhurst/TUnit#5797

**Full Changelog**:
thomhurst/TUnit@v1.43.2...v1.43.11

## 1.43.2

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

## What's Changed
### Other Changes
* fix(assertions): emit auto-generated header in
MethodAssertionGenerator output by @​JohnVerheij in
thomhurst/TUnit#5796
* fix(engine): enforce runtime exclusion for global [NotInParallel]
(#​5800) by @​thomhurst in thomhurst/TUnit#5805
* feat(mocks): add Arg.AnyArgs() shortcut for setup/verify by
@​thomhurst in thomhurst/TUnit#5792
* fix(should): add specialized assertion sources by @​thomhurst in
thomhurst/TUnit#5806
### Dependencies
* chore(deps): update tunit to 1.41.0 by @​thomhurst in
thomhurst/TUnit#5789
* chore(deps): update microsoft.testing to 2.2.2 by @​thomhurst in
thomhurst/TUnit#5793
* chore(deps): update mstest to 4.2.2 by @​thomhurst in
thomhurst/TUnit#5794
* chore(deps): update docusaurus by @​thomhurst in
thomhurst/TUnit#5798
* chore(deps): update dependency dompurify to v3.4.2 by @​thomhurst in
thomhurst/TUnit#5799
* chore(deps): update dependency mockolate to v3 by @​thomhurst in
thomhurst/TUnit#5801


**Full Changelog**:
thomhurst/TUnit@v1.41.0...v1.43.2

## 1.41.0

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

## TUnit Should() Assertions (beta)
This versions comes with a beta version of TUnit.Assertions.Should -
meaning that you can do:
`myCode.Should().BeEqualTo(fluentShouldSyntax);`

For more information see the docs:
https://tunit.dev/docs/assertions/should-syntax

## What's Changed
### Other Changes
* fix(reporters): unwrap TestFailedException for failure grouping by
@​thomhurst in thomhurst/TUnit#5776
* Fix item-at Satisfies source typing by @​thomhurst in
thomhurst/TUnit#5764
* ci(docs): add link-check automation and tighten Docusaurus strictness
by @​thomhurst in thomhurst/TUnit#5779
* feat: add TUnit.Assertions.Should package by @​thomhurst in
thomhurst/TUnit#5785
### Dependencies
* chore(deps): update tunit to 1.40.10 by @​thomhurst in
thomhurst/TUnit#5775
* chore(deps): update actions/cache action to v5 by @​thomhurst in
thomhurst/TUnit#5780
* chore(deps): update dependency microsoft.net.test.sdk to 18.5.1 by
@​thomhurst in thomhurst/TUnit#5784


**Full Changelog**:
thomhurst/TUnit@v1.40.10...v1.41.0

## 1.40.10

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

## What's Changed
### Other Changes
* refactor(opentelemetry): depend on TUnit.Core instead of umbrella
TUnit by @​thomhurst in thomhurst/TUnit#5774
### Dependencies
* chore(deps): update tunit to 1.40.5 by @​thomhurst in
thomhurst/TUnit#5769


**Full Changelog**:
thomhurst/TUnit@v1.40.5...v1.40.10

Commits viewable in [compare
view](thomhurst/TUnit@v1.40.5...v1.45.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

1 participant