Skip to content

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@radekdoulik@pavelsavara
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests by radekdoulik · Pull Request #131883 · dotnet/runtime · GitHub
Skip to content

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@radekdoulik@pavelsavara
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests by radekdoulik · Pull Request #131883 · dotnet/runtime · GitHub
Skip to content

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

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

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

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

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@radekdoulik@pavelsavara
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests by radekdoulik · Pull Request #131883 · dotnet/runtime · GitHub
Skip to content

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@radekdoulik@pavelsavara
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests by radekdoulik · Pull Request #131883 · dotnet/runtime · GitHub
Skip to content

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

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

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883

Merged
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one
Aug 5, 2026
Merged

[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests#131883
radekdoulik merged 1 commit into
dotnet:mainfrom
radekdoulik:radekdoulik-gate-browser-priority-one

Conversation

@radekdoulik

Copy link
Copy Markdown
Member

Summary

PR #131110 enabled CoreCLR browser-WASM out-of-process runtime tests. The newly enabled priority-1 coverage exposed eight unique failures.

Four were composite WebCIL/ReadyToRun failures tracked by #131767 and are fixed on main by #131354. This change removes their temporary ActiveIssue annotations and Crossgen2 bypasses, restoring the intended R2R coverage. The unrelated field-layout suppression for #131421 remains.

The other four tests are narrowly gated:

  • GC/API/GC/GetTotalAllocatedBytesServerGC is excluded on CoreCLR browser, which does not provide Server GC.
  • GC/API/GC/GetTotalMemoryConcurrent uses PlatformDetection.IsMultithreadingSupported through ConditionalFact.
  • baseservices/threading/regressions/2164/foreground-shutdown retains its explicit Main and returns success before creating a thread when multithreading is unsupported.
  • JIT/jit64/regress/ddb/113574 is excluded only on CoreCLR browser because its multi-billion-iteration optimizing-JIT workload exceeds the browser interpreter's CI timeout.

The runtime capability checks skip single-threaded browser and WASI while preserving desktop and threaded-browser coverage. The Server GC and interpreter-workload exclusions are tracked in #131321.

Testing

Built the Checked browser runtime from main, including #131354, then built and ran the complete priority-1 browser-WASM Node suite:

ScopeTotalPassedFailedSkipped
Full suite14,74513,8230922
Out-of-process subset6725600112

The four former WebCIL/R2R failures now pass:

  • Regressions/coreclr/GitHub_49826/test49826
  • Regressions/coreclr/GitHub_49982/test49982
  • readytorun/tests/genericsload/callgenericctor
  • readytorun/tests/genericsload/usegenericfield

Additional focused validation for the runtime multithreading gates:

  • 8 MSBuild evaluations across desktop, threaded browser, single-threaded browser, and single-threaded WASI; neither project is permanently marked unsupported.
  • 2 targeted Checked browser builds, both with 0 warnings and 0 errors.
  • 2 single-threaded browser wrapper runs, both passing with expected/actual exit code 100.
  • Native foreground-shutdown execution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive after Main returns.

Note

This pull request was created with assistance from GitHub Copilot.

Remove the temporary composite WebCIL skips now that the runtime can load the generated images. Gate the remaining unsupported scenarios narrowly and use runtime multithreading capability checks for thread-dependent tests.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 19e61792-38f9-4f80-8d38-3e3e12d1275e
CopilotAI review requested due to automatic review settings August 5, 2026 15:27
@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Aug 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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 restores CoreCLR browser-WASM ReadyToRun (R2R) test coverage by removing temporary browser/CoreCLR ActiveIssue suppressions and Crossgen2 bypasses that were put in place around the composite WebCIL failure, and by narrowly gating a small set of priority-1 tests that are inherently unsupported or impractical under the single-threaded browser/interpreter model.

Changes:

  • Re-enable Crossgen2/R2R execution for several browser-WASM test projects by making them unconditional “explicit crossgen” tests and removing the browser-specific Crossgen2 opt-out.
  • Remove browser/CoreCLR ActiveIssue annotations tied to the composite WebCIL layout issue from the affected ReadyToRun tests, while preserving the separate field-layout suppression.
  • Gate a small number of priority-1 tests using narrow runtime capability checks (ConditionalFact for xUnit tests, early-exit for Main-based tests) and CLRTestTargetUnsupported for browser-only unsupported scenarios.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/tests/readytorun/GenericCycleDetection/Depth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.csKeep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csprojMake the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csprojExclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csGate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csprojExclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.csRemove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csprojMake the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csprojAdd TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csEarly-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulikradekdoulik added the arch-wasm WebAssembly architecture label Aug 5, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara
See info in area-owners.md if you want to be subscribed.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasmWebAssembly architecturearea-Infrastructure-coreclrOnly use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@radekdoulik@pavelsavara