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:

Scope Total Passed Failed Skipped
Full suite 14,745 13,823 0 922
Out-of-process subset 672 560 0 112

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
Copilot AI review requested due to automatic review settings August 5, 2026 15:27
@github-actions github-actions Bot 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.

Copilot AI 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
File Description
src/tests/readytorun/GenericCycleDetection/Depth1Test.csproj Make the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Depth1Test.cs Remove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/GenericCycleDetection/Breadth1Test.csproj Make the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/GenericCycleDetection/Breadth1Test.cs Remove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/readytorun/fieldlayout/fieldlayouttests.cs Keep only the remaining field-layout suppression; remove the composite WebCIL suppression.
src/tests/readytorun/fieldlayout/fieldlayout.csproj Make the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.csproj Make the project unconditionally use Crossgen2 (restore crossgen coverage on browser).
src/tests/readytorun/DynamicMethodGCStress/DynamicMethodGCStress.cs Remove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/JIT/jit64/regress/ddb/113574/113574.csproj Exclude this test for CoreCLR browser where the workload is impractical under the interpreter.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.csproj Add TestLibrary reference needed for PlatformDetection-based gating.
src/tests/GC/API/GC/GetTotalMemoryConcurrent.cs Gate the xUnit test on PlatformDetection.IsMultithreadingSupported via ConditionalFact.
src/tests/GC/API/GC/GetTotalAllocatedBytesServerGC.csproj Exclude the Server GC test on CoreCLR browser where Server GC isn’t supported.
src/tests/baseservices/TieredCompilation/BasicTest.cs Remove browser/CoreCLR suppression tied to the composite WebCIL issue.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOn_R2r.csproj Make the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitOff_R2r.csproj Make the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOn_R2r.csproj Make the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_QuickJitForLoopsOff_R2r.csproj Make the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/TieredCompilation/BasicTest_DefaultMode_R2r.csproj Make the project unconditionally use Crossgen2; remove browser-specific bypass/defines.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.csproj Add TestLibrary reference needed for PlatformDetection-based gating.
src/tests/baseservices/threading/regressions/2164/foreground-shutdown.cs Early-exit with success when multithreading isn’t supported (avoid invalid browser scenario).

@radekdoulik radekdoulik 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.

@radekdoulik
radekdoulik merged commit e308570 into dotnet:main Aug 5, 2026
95 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasm WebAssembly architecture area-Infrastructure-coreclr Only use for closed issues

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants