Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
02ef3f8
Add Microsoft.Testing.Extensions.CtrfReport extension
Evangelink Jun 5, 2026
a2bd24f
Address CTRF expert review: collapse retries, safe JSON encoder, name…
Evangelink Jun 7, 2026
288620d
Add CtrfPlayground sample (MSTest + xunit.v3) for side-by-side CTRF c…
Jun 8, 2026
f7aeac3
CtrfReport: use alpha pre-release label for experimental packages
Jun 8, 2026
2a0fd39
Convert CTRF acceptance test to full-content snapshot
Copilot Jun 8, 2026
4704b54
Plumb experimental Ctrf package version through acceptance test asset
Copilot Jun 8, 2026
22d2f1d
Fix XunitMtp comment and HelpInfoAllExtensions package version
Evangelink Jun 8, 2026
818f201
Potential fix for pull request finding
Evangelink Jun 8, 2026
dcd8e1c
Apply suggestions from code review
Evangelink Jun 8, 2026
5329d64
Address PR #8903 review: fix CtrfReport version, add MSTest acceptanc…
Evangelink Jun 8, 2026
32fbbb4
Address CTRF PR feedback: split stdout/stderr lines, skip CtrfPlaygro…
Evangelink Jun 8, 2026
7559b75
Wire CtrfReport and HtmlReport extensions into MSTest.Sdk
Evangelink Jun 9, 2026
6a53e59
Wire OpenTelemetry extension into MSTest.Sdk
Evangelink Jun 9, 2026
6166d5f
Merge remote-tracking branch 'origin/main' into dev/amauryleve/ctrf-r…
Evangelink Jun 9, 2026
208e9eb
Address CTRF PR review: experimental APIs, dogfood, and Brad's labels…
Evangelink Jun 9, 2026
2dc38a3
Restore CTRF labels per spec 9.15 and fix build
Evangelink Jun 10, 2026
dbc6fe9
Merge remote-tracking branch 'origin/main' into dev/amauryleve/ctrf-r…
Evangelink Jun 10, 2026
23e686d
Address PR feedback: drop unneeded TestApplicationBuilder type check
Evangelink Jun 10, 2026
d5afdce
Address PR feedback: fix CTRF indentation in MSBuild files
Evangelink Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,26 @@
-->
<MSTestSourceGenerationVersionPrefix>2.0.0</MSTestSourceGenerationVersionPrefix>

<MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel>alpha</MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel>

<!--
This is an early preview package, keep 1.0.0-alpha or similar suffix even in official builds.
-->
<MicrosoftTestingExtensionsCtrfReportVersionPrefix>1.0.0</MicrosoftTestingExtensionsCtrfReportVersionPrefix>

<MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel>alpha</MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel>

<!--
This is an early preview package, keep 1.0.0-alpha or similar suffix even in official builds.
This is an early preview package, keep 1.0.0-alpha or similar suffix even in official builds.
-->
<MicrosoftTestingExtensionsJUnitReportVersionPrefix>1.0.0</MicrosoftTestingExtensionsJUnitReportVersionPrefix>

<MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel>alpha</MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel>

<!--
This is an early preview package, keep 1.0.0-alpha or similar suffix even in official builds.
-->
<MicrosoftTestingExtensionsOpenTelemetryVersionPrefix>1.0.0</MicrosoftTestingExtensionsOpenTelemetryVersionPrefix>
</PropertyGroup>

<!-- Pack config -->
Expand Down
1 change: 1 addition & 0 deletions Microsoft.Testing.Platform.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"src\\Platform\\Microsoft.Testing.Extensions.AzureDevOpsReport\\Microsoft.Testing.Extensions.AzureDevOpsReport.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.AzureFoundry\\Microsoft.Testing.Extensions.AzureFoundry.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.CrashDump\\Microsoft.Testing.Extensions.CrashDump.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.CtrfReport\\Microsoft.Testing.Extensions.CtrfReport.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.HangDump\\Microsoft.Testing.Extensions.HangDump.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.HotReload\\Microsoft.Testing.Extensions.HotReload.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.HtmlReport\\Microsoft.Testing.Extensions.HtmlReport.csproj",
Expand Down
1 change: 1 addition & 0 deletions NonWindowsTests.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"src\\Platform\\Microsoft.Testing.Extensions.AzureDevOpsReport\\Microsoft.Testing.Extensions.AzureDevOpsReport.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.AzureFoundry\\Microsoft.Testing.Extensions.AzureFoundry.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.CrashDump\\Microsoft.Testing.Extensions.CrashDump.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.CtrfReport\\Microsoft.Testing.Extensions.CtrfReport.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.HangDump\\Microsoft.Testing.Extensions.HangDump.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.HotReload\\Microsoft.Testing.Extensions.HotReload.csproj",
"src\\Platform\\Microsoft.Testing.Extensions.HtmlReport\\Microsoft.Testing.Extensions.HtmlReport.csproj",
Expand Down
3 changes: 3 additions & 0 deletions TestFx.slnx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<Solution>
<Folder Name="/samples/">
<Project Path="samples/CtrfPlayground/Mtp/Mtp.csproj" />
<Project Path="samples/CtrfPlayground/XunitMtp/XunitMtp.csproj" />
<Project Path="samples/FSharpPlayground/FSharpPlayground.fsproj" />
<Project Path="samples/FxExtensibility/FxExtensibility.csproj" />
<Project Path="samples/NUnitPlayground/NUnitPlayground.csproj" />
Expand Down Expand Up @@ -39,6 +41,7 @@
<Project Path="src/Platform/Microsoft.Testing.Extensions.AzureFoundry/Microsoft.Testing.Extensions.AzureFoundry.csproj" Id="60c660b9-6d0c-4967-b21c-e1c34257cc75" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.AzureDevOpsReport/Microsoft.Testing.Extensions.AzureDevOpsReport.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.CrashDump/Microsoft.Testing.Extensions.CrashDump.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.CtrfReport/Microsoft.Testing.Extensions.CtrfReport.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.HangDump/Microsoft.Testing.Extensions.HangDump.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.HotReload/Microsoft.Testing.Extensions.HotReload.csproj" />
<Project Path="src/Platform/Microsoft.Testing.Extensions.HtmlReport/Microsoft.Testing.Extensions.HtmlReport.csproj" />
Expand Down
5 changes: 4 additions & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ stages:
# options that makes sense in Release:
# --report-trx + --report-trx-filename "{asm}_{tfm}.trx" — TRX per (assembly x TFM),
# resolved by Microsoft.Testing.Platform.Services.ArtifactNamingHelper.
# --report-ctrf + --report-ctrf-filename "{asm}_{tfm}.ctrf.json" — CTRF report per
# (assembly x TFM). Same placeholder resolver as TRX. Dogfoods the new CTRF extension
# so any regression in the report shape surfaces on every CI run.
# --report-azdo — surfaces failed tests in the AzDO UI.
# --report-azdo-progress — emits ##vso[task.logdetail ...;progress=...] timeline records so
# long-running test sessions show live progress on the AzDO timeline. No-op outside AzDO
Expand All @@ -132,7 +135,7 @@ stages:
# and this glob mixes net4x and net8+/net9+ hosts.
# --coverage — Codecov upload is Debug-only (see "Upload coverage to codecov.io" step
# below), so collecting coverage in Release would just write unused .coverage files.
- script: dotnet test --no-build --test-modules "artifacts/bin/*UnitTests*/$(_BuildConfig)/**/*UnitTests.exe" --results-directory $(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig) --no-progress --output detailed --report-trx --report-trx-filename "{asm}_{tfm}.trx" --report-azdo --report-azdo-progress --report-azdo-summary --report-junit --report-junit-filename "{asm}_{tfm}.xml" --hangdump --hangdump-timeout 15m --diagnostic --diagnostic-output-directory $(BUILD.SOURCESDIRECTORY)\artifacts\log\$(_BuildConfig) --diagnostic-verbosity trace
- script: dotnet test --no-build --test-modules "artifacts/bin/*UnitTests*/$(_BuildConfig)/**/*UnitTests.exe" --results-directory $(BUILD.SOURCESDIRECTORY)\artifacts\TestResults\$(_BuildConfig) --no-progress --output detailed --report-trx --report-trx-filename "{asm}_{tfm}.trx" --report-ctrf --report-ctrf-filename "{asm}_{tfm}.ctrf.json" --report-azdo --report-azdo-progress --report-azdo-summary --report-junit --report-junit-filename "{asm}_{tfm}.xml" --hangdump --hangdump-timeout 15m --diagnostic --diagnostic-output-directory $(BUILD.SOURCESDIRECTORY)\artifacts\log\$(_BuildConfig) --diagnostic-verbosity trace
name: TestRelease
displayName: Test (unit tests only)
condition: and(succeeded(), eq(variables._BuildConfig, 'Release'))
Expand Down
36 changes: 36 additions & 0 deletions samples/CtrfPlayground/Mtp/Mtp.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<NoWarn>$(NoWarn);NETSDK1023;SA0001;EnableGenerateDocumentationFile;TPEXP</NoWarn>

<!--
IsTestingPlatformApplication is intentionally NOT set when running under
'dotnet test' (CI's Debug Test step on TestFx.slnx passes -p:UsingDotNetTest=true).
This playground intentionally contains failing, throwing and skipped tests so the
user can compare the produced CTRF report against xunit.v3's built-in CTRF output
(see ../README.md). We don't want those intentional failures to break CI's test step.
During a normal build the property stays true so the project still wires MTP correctly.
-->
<IsTestingPlatformApplication Condition=" '$(UsingDotNetTest)' != 'true' ">true</IsTestingPlatformApplication>
<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="$(RepoRoot)src\Platform\Microsoft.Testing.Platform\Microsoft.Testing.Platform.csproj" />
<ProjectReference Include="$(RepoRoot)src\Platform\Microsoft.Testing.Extensions.CtrfReport\Microsoft.Testing.Extensions.CtrfReport.csproj" />
<ProjectReference Include="$(RepoRoot)src\Adapter\MSTest.TestAdapter\MSTest.TestAdapter.csproj" />
<ProjectReference Include="$(RepoRoot)src\TestFramework\TestFramework\TestFramework.csproj" />
</ItemGroup>

<ItemGroup>
<ProjectCapability Include="TestingPlatformServer" />
<ProjectCapability Include="TestContainer" />
</ItemGroup>

<!-- Import the capabilities for the Microsoft.Testing.Platform -->
<Import Project="$(RepoRoot)src\Platform\Microsoft.Testing.Platform\buildMultiTargeting\Microsoft.Testing.Platform.props" />
</Project>
22 changes: 22 additions & 0 deletions samples/CtrfPlayground/Mtp/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Reflection;

using Microsoft.Testing.Extensions;
using Microsoft.Testing.Platform.Builder;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace CtrfPlayground.Mtp;

public static class Program
{
public static async Task<int> Main(string[] args)
{
ITestApplicationBuilder testApplicationBuilder = await TestApplication.CreateBuilderAsync(args);
testApplicationBuilder.AddMSTest(() => [Assembly.GetEntryAssembly()!]);
testApplicationBuilder.AddCtrfReportProvider();
using ITestApplication app = await testApplicationBuilder.BuildAsync();
return await app.RunAsync();
}
}
35 changes: 35 additions & 0 deletions samples/CtrfPlayground/Mtp/Tests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace CtrfPlayground.Mtp;

[TestClass]
public class SampleTests
{
[TestMethod]
public void PassingTest()
=> Assert.AreEqual(2, 1 + 1);

[TestMethod]
public void FailingTest()
=> Assert.AreEqual(3, 1 + 1, "intentional failure to exercise CTRF status mapping");

[TestMethod]
[Ignore("intentionally skipped to exercise CTRF status mapping")]
public void SkippedTest()
{
}

[TestMethod]
public void ThrowingTest()
=> throw new InvalidOperationException("intentional exception to exercise CTRF error fields");

[DataTestMethod]
[DataRow(1, 1, 2)]
[DataRow(2, 3, 5)]
[DataRow(2, 2, 5)] // intentional failure
public void DataDrivenTest(int a, int b, int expected)
=> Assert.AreEqual(expected, a + b);
}
38 changes: 38 additions & 0 deletions samples/CtrfPlayground/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# CtrfPlayground

This sample produces side-by-side [CTRF (Common Test Report Format)](https://ctrf.io/) reports
from the same set of tests using two different CTRF generators that both target
[Microsoft.Testing.Platform](https://aka.ms/testingplatform):

| Project | Test framework | CTRF generator |
| ------- | -------------- | -------------- |
| [`Mtp`](./Mtp) | MSTest | `Microsoft.Testing.Extensions.CtrfReport` (this repository, **experimental**) |
| [`XunitMtp`](./XunitMtp) | [`xunit.v3`](https://www.nuget.org/packages/xunit.v3) | `xunit.v3`'s built-in `-ctrf <file>` reporter |

The tests in each project are intentionally equivalent (pass / fail / skip / theory / throw)
so that the two CTRF reports can be diffed to validate the parity of the new extension.

## Running

From the repository root:

```pwsh
# MSTest + Microsoft.Testing.Extensions.CtrfReport
dotnet run --project samples/CtrfPlayground/Mtp -- --report-ctrf --results-directory ./out/mtp

# xunit.v3 with its built-in CTRF reporter
dotnet run --project samples/CtrfPlayground/XunitMtp -- -ctrf ./out/xunit/ctrf-report.json
```

Both runs write a CTRF JSON file. Open them side by side (e.g.
`code -d ./out/mtp/<file>.ctrf.json ./out/xunit/ctrf-report.json`) to compare the two outputs.

> [!NOTE]
> The CTRF extension shipped by this repository is currently marked **experimental**
> (`[Experimental("TPEXP")]`). API shape and report content may change.

<!-- markdownlint-disable-next-line MD028 -->
> [!TIP]
> The two projects are intentionally **kept separate**: combining a CTRF-producing
> extension with another test framework that already exposes its own CTRF reporter would
> conflict on command-line options inside a single test host.
33 changes: 33 additions & 0 deletions samples/CtrfPlayground/XunitMtp/Tests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using Xunit;

namespace CtrfPlayground.XunitMtp;

public class SampleTests
{
[Fact]
public void PassingTest()
=> Assert.Equal(2, 1 + 1);

[Fact]
public void FailingTest()
=> Assert.Fail("intentional failure to exercise CTRF status mapping");

[Fact(Skip = "intentionally skipped to exercise CTRF status mapping")]
public void SkippedTest()
{
}

[Fact]
public void ThrowingTest()
=> throw new InvalidOperationException("intentional exception to exercise CTRF error fields");

[Theory]
[InlineData(1, 1, 2)]
[InlineData(2, 3, 5)]
[InlineData(2, 2, 5)] // intentional failure
public void DataDrivenTest(int a, int b, int expected)
=> Assert.Equal(expected, a + b);
}
24 changes: 24 additions & 0 deletions samples/CtrfPlayground/XunitMtp/XunitMtp.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<NoWarn>$(NoWarn);NETSDK1023;SA0001;EnableGenerateDocumentationFile</NoWarn>

<!--
Mirror Mtp.csproj: opt this project out of the CI 'dotnet test' run, which passes
-p:UsingDotNetTest=true. The playground intentionally contains failing/throwing/skipped
tests so users can diff the CTRF output against the in-repo extension; those failures
must not break CI. A normal build still enables MTP so 'dotnet run' works as documented.
-->
<UseMicrosoftTestingPlatformRunner Condition=" '$(UsingDotNetTest)' != 'true' ">true</UseMicrosoftTestingPlatformRunner>
<IsTestingPlatformApplication Condition=" '$(UsingDotNetTest)' == 'true' ">false</IsTestingPlatformApplication>
</PropertyGroup>

<ItemGroup>
<!-- xunit.v3 ships its own CTRF reporter, enabled via the `-ctrf <file>` switch (see README.md). -->
<PackageReference Include="xunit.v3.mtp-v2" VersionOverride="3.2.2" />
</ItemGroup>
</Project>
16 changes: 15 additions & 1 deletion src/Package/MSTest.Sdk/MSTest.Sdk.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,28 @@
<_MSTestSourceGenerationVersion>$(MSTestSourceGenerationVersionPrefix)</_MSTestSourceGenerationVersion>
<_MSTestSourceGenerationVersion Condition="'$(_MSTestSourceGenerationVersionSuffix)' != ''">$(_MSTestSourceGenerationVersion)-$(_MSTestSourceGenerationVersionSuffix)</_MSTestSourceGenerationVersion>

<_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel>$(MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel)</_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OfficialBuild)' != 'true'">ci</_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel Condition="'$(ContinuousIntegrationBuild)' != 'true' and '$(OfficialBuild)' != 'true'">dev</_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsCtrfReportVersionSuffix>$(_MicrosoftTestingExtensionsCtrfReportPreReleaseVersionLabel)$(_BuildNumberLabels)</_MicrosoftTestingExtensionsCtrfReportVersionSuffix>
<_MicrosoftTestingExtensionsCtrfReportVersion>$(MicrosoftTestingExtensionsCtrfReportVersionPrefix)</_MicrosoftTestingExtensionsCtrfReportVersion>
<_MicrosoftTestingExtensionsCtrfReportVersion Condition="'$(_MicrosoftTestingExtensionsCtrfReportVersionSuffix)' != ''">$(_MicrosoftTestingExtensionsCtrfReportVersion)-$(_MicrosoftTestingExtensionsCtrfReportVersionSuffix)</_MicrosoftTestingExtensionsCtrfReportVersion>

<_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel>$(MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel)</_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OfficialBuild)' != 'true'">ci</_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel Condition="'$(ContinuousIntegrationBuild)' != 'true' and '$(OfficialBuild)' != 'true'">dev</_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsJUnitReportVersionSuffix>$(_MicrosoftTestingExtensionsJUnitReportPreReleaseVersionLabel)$(_BuildNumberLabels)</_MicrosoftTestingExtensionsJUnitReportVersionSuffix>
<_MicrosoftTestingExtensionsJUnitReportVersion>$(MicrosoftTestingExtensionsJUnitReportVersionPrefix)</_MicrosoftTestingExtensionsJUnitReportVersion>
<_MicrosoftTestingExtensionsJUnitReportVersion Condition="'$(_MicrosoftTestingExtensionsJUnitReportVersionSuffix)' != ''">$(_MicrosoftTestingExtensionsJUnitReportVersion)-$(_MicrosoftTestingExtensionsJUnitReportVersionSuffix)</_MicrosoftTestingExtensionsJUnitReportVersion>

<_TemplateProperties>MSTestSourceGenerationVersion=$(_MSTestSourceGenerationVersion);MSTestVersion=$(Version);MicrosoftTestingPlatformVersion=$(Version.Replace('$(VersionPrefix)', '$(TestingPlatformVersionPrefix)'));MicrosoftNETTestSdkVersion=$(MicrosoftNETTestSdkVersion);MicrosoftTestingExtensionsCodeCoverageVersion=$(MicrosoftTestingExtensionsCodeCoverageVersion);MicrosoftPlaywrightVersion=$(MicrosoftPlaywrightVersion);AspireHostingTestingVersion=$(AspireHostingTestingVersion);MicrosoftTestingExtensionsFakesVersion=$(MicrosoftTestingExtensionsFakesVersion);MicrosoftTestingExtensionsJUnitReportVersion=$(_MicrosoftTestingExtensionsJUnitReportVersion)</_TemplateProperties>
<_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel>$(MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel)</_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OfficialBuild)' != 'true'">ci</_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel Condition="'$(ContinuousIntegrationBuild)' != 'true' and '$(OfficialBuild)' != 'true'">dev</_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel>
<_MicrosoftTestingExtensionsOpenTelemetryVersionSuffix>$(_MicrosoftTestingExtensionsOpenTelemetryPreReleaseVersionLabel)$(_BuildNumberLabels)</_MicrosoftTestingExtensionsOpenTelemetryVersionSuffix>
<_MicrosoftTestingExtensionsOpenTelemetryVersion>$(MicrosoftTestingExtensionsOpenTelemetryVersionPrefix)</_MicrosoftTestingExtensionsOpenTelemetryVersion>
<_MicrosoftTestingExtensionsOpenTelemetryVersion Condition="'$(_MicrosoftTestingExtensionsOpenTelemetryVersionSuffix)' != ''">$(_MicrosoftTestingExtensionsOpenTelemetryVersion)-$(_MicrosoftTestingExtensionsOpenTelemetryVersionSuffix)</_MicrosoftTestingExtensionsOpenTelemetryVersion>

<_TemplateProperties>MSTestSourceGenerationVersion=$(_MSTestSourceGenerationVersion);MSTestVersion=$(Version);MicrosoftTestingPlatformVersion=$(Version.Replace('$(VersionPrefix)', '$(TestingPlatformVersionPrefix)'));MicrosoftNETTestSdkVersion=$(MicrosoftNETTestSdkVersion);MicrosoftTestingExtensionsCodeCoverageVersion=$(MicrosoftTestingExtensionsCodeCoverageVersion);MicrosoftPlaywrightVersion=$(MicrosoftPlaywrightVersion);AspireHostingTestingVersion=$(AspireHostingTestingVersion);MicrosoftTestingExtensionsFakesVersion=$(MicrosoftTestingExtensionsFakesVersion);MicrosoftTestingExtensionsCtrfReportVersion=$(_MicrosoftTestingExtensionsCtrfReportVersion);MicrosoftTestingExtensionsJUnitReportVersion=$(_MicrosoftTestingExtensionsJUnitReportVersion);MicrosoftTestingExtensionsOpenTelemetryVersion=$(_MicrosoftTestingExtensionsOpenTelemetryVersion)</_TemplateProperties>
</PropertyGroup>

<!--
Expand Down
Loading
Loading