[browser][CoreCLR] Restore R2R coverage and gate unsupported priority-1 tests - #131883
Merged
radekdoulik merged 1 commit intoAug 5, 2026
Merged
Conversation
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
|
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. |
Contributor
There was a problem hiding this comment.
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
ActiveIssueannotations 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 (
ConditionalFactfor xUnit tests, early-exit forMain-based tests) andCLRTestTargetUnsupportedfor 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). |
Contributor
|
Tagging subscribers to 'arch-wasm': @lewing, @pavelsavara |
pavelsavara
approved these changes
Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
mainby #131354. This change removes their temporaryActiveIssueannotations 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/GetTotalAllocatedBytesServerGCis excluded on CoreCLR browser, which does not provide Server GC.GC/API/GC/GetTotalMemoryConcurrentusesPlatformDetection.IsMultithreadingSupportedthroughConditionalFact.baseservices/threading/regressions/2164/foreground-shutdownretains its explicitMainand returns success before creating a thread when multithreading is unsupported.JIT/jit64/regress/ddb/113574is 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:The four former WebCIL/R2R failures now pass:
Regressions/coreclr/GitHub_49826/test49826Regressions/coreclr/GitHub_49982/test49982readytorun/tests/genericsload/callgenericctorreadytorun/tests/genericsload/usegenericfieldAdditional focused validation for the runtime multithreading gates:
foreground-shutdownexecution exited with 100 after 2.28 seconds, confirming that its foreground thread still keeps the process alive afterMainreturns.Note
This pull request was created with assistance from GitHub Copilot.