Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host - #9038

Merged
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers
Jun 11, 2026
Merged

Fix CI failures: include OpenTelemetry in NonWindowsTests.slnf and register Ctrf/JUnit providers in AOT test host#9038
Amaury Levé (Evangelink) merged 1 commit into
mainfrom
dev/amauryleve/fix-ci-opentelemetry-and-aot-providers

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Fixes two distinct test failures observed on main in internal build 2997792.

1. Linux Tests job — NU1101: Unable to find package Microsoft.Testing.Extensions.OpenTelemetry

The new SdkTests data row added in #8903 (commit c451c6b) exercises the OpenTelemetry extension, but Microsoft.Testing.Extensions.OpenTelemetry was not listed in NonWindowsTests.slnf. The non-Windows CI builds and packs only the projects listed in this slnf, so the package was never produced. The acceptance test does not pass addPublicFeeds: true, so the package could not be restored from nuget.org either.

Fix: Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf (alphabetically placed between MSBuild and Retry).

2. Windows Release Test job — Unknown option '--report-ctrf' / '--report-junit'

azure-pipelines.yml invokes every UnitTests host found by the --test-modules glob with --report-ctrf and --report-junit. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs was missing the corresponding provider registrations, so MTP rejected the unknown options and aborted the run. Other UnitTests hosts (e.g., MSTest.SourceGeneration.UnitTests/Program.cs) already register both providers.

Fix: Add builder.AddCtrfReportProvider() and builder.AddJUnitReportProvider() calls to the AOT reflection test host.

Validation

  • dotnet build test\UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests\MSTest.AotReflection.SourceGeneration.UnitTests.csproj -c Release → 0 warnings, 0 errors.
  • Running MSTest.AotReflection.SourceGeneration.UnitTests.exe --help now lists --report-ctrf / --report-ctrf-filename / --report-junit / --report-junit-filename.
  • Passing --report-ctrf --report-junit --list-tests returns the proper provider validation error (instead of Unknown option), confirming the providers are registered.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…gister Ctrf/JUnit providers in AOT test host
Two distinct test failures on main (build 2997792):
1. Linux `Tests` job failed because `Microsoft.Testing.Extensions.OpenTelemetry` was not listed in `NonWindowsTests.slnf` and therefore was not packed by the non-Windows build; the new `SdkTests` data row added in #8903 then could not restore the package (NU1101). Add the project to the slnf so it ships on Linux/macOS.
2. Windows Release `Test` job failed because `azure-pipelines.yml` runs every UnitTests host with `--report-ctrf` and `--report-junit` via the `--test-modules` glob, but `MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs` did not register the CTRF or JUnit providers, so MTP rejected the unknown options. Register both providers to match `MSTest.SourceGeneration.UnitTests`.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings June 11, 2026 11:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR fixes two CI breakages in the microsoft/testfx repo by ensuring (1) the OpenTelemetry extension project is built/packed in non-Windows CI, and (2) the AOT reflection unit test host registers the CTRF and JUnit report providers so the pipeline-injected --report-ctrf / --report-junit flags are recognized.

Changes:

  • Add Microsoft.Testing.Extensions.OpenTelemetry to NonWindowsTests.slnf so the package is produced during non-Windows CI builds.
  • Register AddJUnitReportProvider() and AddCtrfReportProvider() in MSTest.AotReflection.SourceGeneration.UnitTests host to accept --report-junit / --report-ctrf.
Show a summary per file
FileDescription
test/UnitTests/MSTest.AotReflection.SourceGeneration.UnitTests/Program.csRegisters JUnit + CTRF report providers in the AOT unit test host so MTP recognizes the corresponding CLI options.
NonWindowsTests.slnfEnsures the OpenTelemetry extension project is included in the non-Windows solution filter so its NuGet is built/packed in CI.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 0

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Note

🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Summary

Two targeted CI hotfixes:

  1. NonWindowsTests.slnf — adds Microsoft.Testing.Extensions.OpenTelemetry alphabetically between MSBuild and Retry, allowing the Linux Tests job to build and pack the project so acceptance tests that reference it can restore it locally.
  2. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs — registers AddJUnitReportProvider() and AddCtrfReportProvider(), aligning this host with every other EnableMSTestRunner=true unit-test host. The binaries for both extensions are already pulled in for all such hosts via test/Directory.Build.targets (lines 48 & 52), so no .csproj change is needed.

Verdict table

#DimensionStatusNotes
1Algorithmic Correctness✅ PASSBoth root causes are correctly identified and addressed
2Threading & Concurrency✅ N/ANo shared mutable state involved
3Public API Surface & Versioning✅ N/ANo new public API introduced
4Backward Compatibility✅ PASSPurely additive changes
5Test Coverage & Quality✅ PASSInfrastructure fix; validated by CI passing after the change
6Error Handling & Resilience✅ N/ARegistration calls are fire-and-forget by design
7Performance & Memory✅ N/ANo performance-sensitive code paths touched
8Security✅ N/ANo security surface affected
9Code Style & Conventions✅ PASSProvider registration order matches MSTest.SourceGeneration.UnitTests/Program.cs exactly
10Localization✅ N/ANo user-facing strings
11Naming✅ N/ANo new identifiers
12Documentation✅ N/ANo public API; no misleading comments
13Scope & Focus✅ PASSTwo closely related CI-fix items; appropriate to batch
14Cross-TFM Correctness✅ PASSAOT reflection project targets net8.0 only; change is TFM-agnostic
15Dependency Management✅ PASSOpenTelemetry was already in TestFx.slnx and in Directory.Build.targets; slnf was the only gap
16Build & CI Integration✅ PASSAlphabetical placement in slnf is correct; pipeline glob *UnitTests.exe now finds a fully registered host
17IPC Contract Stability✅ N/ANo wire-format changes
18Resource Management✅ N/ANo IDisposable / stream usage
19Test Infrastructure✅ PASSAOT reflection host now honours every --report-* flag the pipeline passes
20Configuration & Extensibility✅ N/AStandard MTP provider registration pattern
21Pattern Consistency✅ PASSRegistration order (TrxReport → JUnit → AppInsights → AzDO → Ctrf) matches the peer host; AddOpenTelemetryProvider is omitted here as in the host before this PR — see note below
22Simplicity✅ PASSMinimal, surgical changes

Notes

AddOpenTelemetryProvider not wired up (informational, not blocking)

test/Directory.Build.targets (line 57) already adds a ProjectReference to Microsoft.Testing.Extensions.OpenTelemetry for every EnableMSTestRunner=true project, including this one. MSTest.SourceGeneration.UnitTests/Program.cs takes advantage of that by calling AddOpenTelemetryProvider(...) to dogfood the OTel pipeline end-to-end in CI. MSTest.AotReflection.SourceGeneration.UnitTests/Program.cs does not — and that was already the case before this PR. The omission doesn't cause any CI failure (unlike CTRF/JUnit, the OTel provider doesn't need to be registered to avoid "unknown option" errors), so it's reasonable to leave it out of this hotfix. A follow-up to add parity would be welcome but is not required here.

Overall verdict

LGTM — both fixes are correct, minimal, and consistent with codebase conventions. No blocking or major issues found.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow. · 447.1 AIC · ⌖ 12.5 AIC ·

@Evangelink

Copy link
Copy Markdown
MemberAuthor

🧪 Test quality grade — PR #9038

No new or modified test methods were identified in the changed regions
of this PR. Nothing to grade.

Re-run with /grade-tests.

🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Grade Tests on PR (on open / sync) workflow. · 121.7 AIC · ⌖ 13.1 AIC · [◷]( · )

@Evangelink
Amaury Levé (Evangelink) merged commit c062a59 into mainJun 11, 2026
42 checks passed
@Evangelink
Amaury Levé (Evangelink) deleted the dev/amauryleve/fix-ci-opentelemetry-and-aot-providers branch June 11, 2026 13:05
Sign up for freeto 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.

3 participants

@Evangelink@YuliiaKovalova